重庆大学试卷C程序设计技术(重修)A卷第1页共4页命题人:基础系命题组组题人:郭松涛审题人:熊壮命题时间:二○一二年十一月教务处制学院专业、班年级学号姓名公平竞争、诚实守信、严肃考纪、拒绝作弊封线密重庆大学“C程序设计技术”(重修)课程试卷2012~2013学年第一学期开课学院:计算机学院课程号:18012735考试日期:考试方式:考试时间:120分钟特别注意:所有试题的答案做在答题纸上。其中一、二试题答案填于答题纸的表格中,否则不得分。交卷时,试卷和答题纸分开交卷。一、单项选择题(每小题1分,共20分,结果填入答案表上)1.以下叙述正确的是()。A)C程序的编译过程可以发现注释中的拼写错误B)在C程序中,main函数必须位于程序的最前面C)C语言本身没有输入输出语句D)C程序的每行中只能写一条语句2.下列四组选项中,全为C语言关键字的是()。A)defineIFtypeB)getccharprintfC)includecasescanfD)whilegoint3.下面正确的字符常量是()。A)“c”B)‘\\’’C)‘’D)‘K’4.以下叙述不正确的是()。A)在C程序中,逗号运算符的优先级最低B)在C程序中,MAX和max是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值5.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为()。A)‘E’B)68C)不确定的值D)‘C’6.sizeof(double)是()。A)一个双精度型表达式B)一个整型表达式C)一种函数表达式D)一个不合法的表达式7.设以下变量均为int类型,则值不等于7的表达式是()。A)x=y=6,x+y,x+1B)x=y=6,x+y,y+1C)x=6,x+1,y=6,x+yD)y=6,y+1,x=y,x+18.阅读以下程序,当输入数据的形式为:25,13,10CR(注:CR表示回车),则正确的输出结果为()。main(){intx,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A)x+y+z=48B)x+y+z=35C)x+z=35D)不确定值9.判断char型变量ch是否为大写字母的正确表达式是()。A)‘A’=ch=‘Z’B)(ch=‘A’)&(ch=‘Z’)C)(ch=‘A’)&&(ch=‘Z’)D)(‘A’=ch)AND(‘Z’=ch)10.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()。A)A%2==1B)!(A%2==0)C)!(A%2)D)A%211.以下程序的运行结果是()。main(){intm=5;if(m++5)printf(“%d\n”,m);else;printf(“%d\n”,--m);}A)4B)5C)6D)712.下面程序的运行结果是()。main(){重庆大学试卷C程序设计技术(重修)A卷第2页共4页intnum=0;while(num=2)printf(%d\n,++num);}A)1B)1C)1D)122233413.下面程序的运行结果是()。main(){inty=10;do{y--;}while(--y);printf(%d\n,y--);}A)-1B)1C)8D)014.以下叙述中正确的是()。A)全局变量的作用域一定比局部变量的作用域大B)静态(static)类型变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值15.有函数调用语句:x=fun(fun(a,b,c),(a+b,a+c),a+b+c);则fun函数的形参个数为()。A)3B)4C)5D)616.有定义语句char*pptr(inta,intb),*f;以下操作正确的是()。A)pptr++B)*pptr=”howareyou”C)pptr--D)f=pptr(5,4)17.以下判断两个字符串相等的正确方法是()A)if(str1=str2)B)if(str1==str2)C)if(strcpy(str1,str2)=0)D)if(strcmp(str1,str2)==0)18.设有C语句序列:structT{intage;intnum;}t,*p;p=&t;,则下面对结构体变量t的成员age的引用中不正确的是()。A)t.ageB)p-ageC)(*p).ageD)*p.age19.如果需要打开一个已经存在的非空文件Demo进行修改,下面正确的选项是()A)fp=fopen(Demo,r);B)fp=fopen(Demo,ab+);C)fp=fopen(Demo,r+);D)fp=fopen(Demo,w);20.下列程序段执行之后的输出是()。#includestdio.h#defineMin(x,y)xy?x:yvoidmain(){inta=1,b=2,c=3,d=4,t;t=Min(a+b,c+d)*1000;printf(”t=%d”,t);}A)3B)3000C)7D)7000D)自身校验二、概念选择填空题(本大题后面有若干备选项,请选择合适的备选项,并将其编号填入答题卷表格处。每空2分,共10分)1.若要输出百分比数据(如:56%),已知输出量为doublex,正确的格式输出语句为【】。2.若有输入流:12□3.14□abcdCR。注:CR表示回车键,□表示空格。试设计满足输入要求的格式串【】。3.对于函数而言,“函数定义”是编写实现该函数功能的一段程序,“【】”是告诉编译系统该函数的特征,“【】”是使用该函数的功能,执行函数语句。4.需要定义一个返回整型指针的函数,名为p,它有两个形式参数,均为整型指针,那么正确的函数头部定义(函数原型)是【】。备选项如下:A)函数声明B)printf(“%f%”,x);C)printf(“%lf%%”,x);D)预处理E)字符指针F)“%d%lf%s”G)“%d%f%4c”H)函数调用I)字符串常量J)(int*)p(inta,intb)K)int*p(int*a,int*b)L)(int*)p[5]三、程序填空题(每空2分,共10分)1.以下程序实现折半查找算法,请填空完成。#includestdio.hvoidmain(){inti,a[]={10,14,18,20,25,28,31,35,40,47},key,flag=0,count=0;intlow=0,high=9,middle;while(low=high){middle=(low+high)/2;重庆大学试卷C程序设计技术(重修)A卷第3页共4页count++;if(key==a[middle]){flag=1;break;}elseif(①)low=middle+1;elsehigh=middle-1;}if(flag)printf(查找a[%d]成功,共进行了%d次比较。\n,middle,count);elseprintf(数据集合中不存在被查找数据,共进行了%d次比较。\n,②);}2.以下函数Gcd计算两个正整数的最大公约数,请填空完成。intGcd(intm,intn){intr;while(③)m=n,n=r;return④;}3.以下程序计算水仙花数,请填空完成。#includestdio.hvoidmain(){inta,b,c,num;for(a=1;a=9;a++)for(b=0;b=9;b++)for(c=0;c=9;c++){⑤if(num==a*a*a+b*b*b+c*c*c)printf(水仙花数:%d\n,num);}}四、程序阅读题(每小题5分,共30分)1.写出下面程序执行后的输出结果。#includestdio.hintx=0,y=0,a=15,b=10;voidfun(){x=a-b;y=a+b;}voidmain(){inta=7,b=5;fun();x=x+a;y=y-b;printf(x=%d,y=%d\n,x,y);}2.写出下面程序执行后的输出结果。#defineSQ1(x)x*x#defineSQ2(x)(x)*(x)#defineSQ3(x)((x)*(x))#includestdio.hvoidmain(){printf(“%.2f,%.2f,%.2f”,1.0/SQ1(1+1),1.0/SQ2(1+1),1.0/SQ3(1+1));}3.写出下面程序运行的结果。#includestdio.hvoidmain(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p[4],i;for(i=0;i4;i++)p[i]=&a[i*3];printf(%d\n,p[3][1]);}重庆大学试卷C程序设计技术(重修)A卷第4页共4页4.仔细阅读下面程序,给出程序执行后的输出结果。#includestdio.hcharstr[]=SSSWILTCH2\2\223WALL;voidmain(){charc;intk;for(k=2;(c=str[k])!='\0';k++){switch(c){case'A':putchar('a');continue;case'2':break;case2:while((c=str[k++])!='\2'&&c!='\0');case'T':putchar('*');case'L':continue;default:putchar(c);continue;}putchar('#');}}5.写出程序执行后的输出结果。#includestdio.hstructT{inty;intm;intd;};voidfun2(structTb);voidmain(){structTa={1900,1,1};fun2(a);printf(%d\n,a.d*9);}voidfun2(structTb){b.d=b.y+b.m+b.d;printf(“%-6d”,b.d);}6.有名为test.cpp的C程序如下所示,已知文件abc的内容为:“abcde0987sheet23”。在命令行执行testabcxyz命令后,请写出文件xyz的内容。/*filenametest.cpp*/#includestdio.hvoidmain(intargc,char*argv[]){FILE*fp1,*fp2;charc;if(argc3){printf(Usage:testfilename1filename2\n);return;}fp1=fopen(argv[1],r);fp2=fopen(argv[2],w);c=fgetc(fp1);while(!feof(fp1)){if(c’d’)fputc(c,fp2);c=fgetc(fp1);}fclose(fp1);fclose(fp2);}五、根据算法写程序题(每小题10分,共10分)编程序显示输入字符串中的阿拉伯数字。算法如下:1.算法开始:2.从键盘读入字符串s;3.设指示器i=0;4.判断s[i]是否是字符串结束符,如果是,则转到第7步,否则转到第5步;5.判断s[i]是否是阿拉伯数字,如果是,则显示;6.i自增1,转到第4步;7.结束。六、程序设计题(每小题10分,共20分)1.编写程序,求分数序列:......117744331的前100项之和。2.编写一个函数,统计一个文本文件中标点符号的个数。设标点符号集{!%:;,.”}备注:不含大括号。函数原型为:intch_calc(char*filename)。说明,函数返回文本中标点符号个数,函数参数为文本文件名称。