1中央广播电视大学2008秋季C语言程序设计A课程试卷(1)题号一二三四五总分得分2009年10月部队考一、单选题(每小题2分,共20分)1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。A.mainB.MAINC.nameD.function2.每个C语言程序文件的编译错误分为()类。A.1B.2C.3D.43.字符串a+b=12\n的长度为()。A.6B.7C.8D.94.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为()语句。A.forB.ifC.doD.while5.在下面的do-while循环语句中,其循环体语句被执行的次数为()。inti=0;doi++;while(i10);A.4B.3C.5D.106.将两个字符串连接起来组成一个字符串时,选用的函数为()。A.strlen()B.strcap()C.strcat()D.strcmp()7.若用数组名作为函数调用的实参,传递给形参的是()。A.数组的首地址B.数组中第一个元素的值C.数组中全部元素的值D.数组元素的个数8.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大()个字节。A.4B.8C.16D.329.假定s被定义为指针类型char*的变量,初始指向的字符串为Helloworld!,若要使变量p指向s所指向的字符串,则p应定义为()。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;10.从一个数据文件中读入以换行符结束的一行字符串的函数为()。A.gets()B.fgets()C.getc()D.fgetc()2二、填空题(每小题2分,共26分)1.C语言中的每条简单语句以________作为结束符。2.C程序中的所有预处理命令均以______字符开头。3.当不需要函数返回任何值时,则应使用________标识符来定义函数类型。4.十进制数25表示成符合C语言规则的十六进制数为________。5.假定不允许使用逻辑非操作符,则逻辑表达式ab||b==5的相反表达式为________________。6.执行“typedefintDataType;”语句后,在使用int定义整型变量的地方也可以使用__________来定义整型变量。7.假定一维数组的定义为“char*a[8];”,则该数组所占存储空间的字节数为________。8.假定二维数组的定义为“doublea[M][N];”,则该数组的列下标的取值范围在_________之间。9.存储一个空字符串需要占用________个字节。10.strcpy函数用于把一个字符串________到另一个字符数组空间中。11.程序的编译单位是一个__________。12.假定a是一个一维数组,则a[i]的指针访问方式为________。13.执行int*p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为________。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)1.#includestdio.hvoidmain(){intx=5;switch(2*x-1){case4:printf(%d,x);break;case7:printf(%d,2*x);break;case10:printf(%d,3*x);break;default:printf(%s,default);}3printf(%s\n,switchend.);}2.#includestdio.hvoidmain(){intf1,f2,i;f1=1;printf(%d,f1);for(i=2;i=5;i++){f2=3*f1+1;printf(%d,f2);f1=f2;}printf(\n);}3.#includestdio.hvoidmain(){inta[10]={12,39,26,41,55,63,72,40,83,95};inti,i1=0,i2=0;for(i=0;i10;i++)if(a[i]%2==1)i1++;elsei2++;printf(%d%d\n,i1,i2);}4.#includestdio.h#includestring.hvoidmain(){chars[15]=567891234;inti,n=strlen(s);for(i=0;in/2;i++){charc=s[i];s[i]=s[n-1-i];s[n-1-i]=c;}printf(%s\n,s);}45.#includestdio.hintLB(int*a,intn){inti,s=1;for(i=0;in;i++)s*=*a++;returns;}voidmain(){inta[]={1,2,3,4,2,4,5,2};intb=LB(a,4)+LB(a+3,3);printf(b=%d\n,b);}四、根据下列每个函数回答相应问题(每小题6分,共12分)1.voidSF(intx){//n为大于等于0的整数inti=2;while(xi){if(x%i==0)printf(%d,i);i++;}printf(\n);}假定使用SF(70)调用该函数,则输出的所有整数依次为__________________。2.voidQC(structIntNode*f){//f为一个单链表的表头指针while(f){printf(%d,f-data);f=f-next;}}假定结构类型IntNode的定义为:structIntNode{intdata;structIntNode*next;};该函数的功能为:五、按题目要求编写程序(每小题6分,共12分)1.编写一个程序,首先从键盘上输入10个整数到一维数组a[10]中,然后按照下标从大到小的次序输出数组a[10]中的所有元素值。假定数组a[10]和循环变量i均在主函数中定义。52.编写一个程序,已知6≤a≤50,10≤b≤30,求出满足不定方程3a+2b=120的全部整数组解。如(20,30)就是其中的一组解。6中央广播电视大学2008秋季C语言程序设计A课程试卷答案及评分标准(1)(供参考)一、单选题(每小题2分,共20分)1.A2.B3.B4.B5.D6.C7.A8.C9.A10.B二、填空题(每小题2分,共26分)1.;(或分号)2.#3.void4.0x195.a=b&&b!=56.DataType7.328.0~N-19.110.拷贝(复制)11.程序文件12.*(a+i)13.*p三、写出下列每个程序运行后的输出结果(每小题6分,共30分)评分标准:根据答案正确程度酌情给分。1.defaultswitchend.2.1413401213.644.4321987655.b=56四、根据下列每个函数回答相应问题(每小题6分,共12分)评分标准:根据答题的正确与完整程度酌情给分。1.2571014352.遍历并输出由表头指针f所指向的单链表中每个结点的data域的值。五、按题目要求编写程序(每小题6分,共12分)评分标准:按编写程序的正确与完整程度酌情给分。1.#includestdio.h//1分voidmain(){inta[10],i;//2分printf(从键盘输入10个整数:\n);for(i=0;i10;i++)scanf(%d,&a[i]);//4分for(i=9;i=0;i--)printf(%d,a[i]);//6分printf(\n);}注:&a[i]也可改写为a+i2.#includestdio.h//1分voidmain()7{inta,b;//2分for(a=6;a=50;a++)//3分for(b=10;b=30;b++)//4分if(3*a+2*b==120)printf((%d,%d)\n,a,b);//6分}