08-09第1学期《C语言程序设计》试卷A一、选择题(每小题2分,共计40分)题号1234567891011121314151617181920得分答案1、下列变量定义合法的是:()A)float_a=.1e-1;B)doubleb=5e2.5;C)longfor=0xfdal;D)float2_and=0.12;2、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的是:()。A)a≠0;B)!a;C)a=0;D)a;3、若变量已正确定义并赋值,下面符合C语言语法的表达式是:()。A)a:=b+1;B)a=b=c+2;C)int18.5%3;D)a=a+7=c+b;4、两次运行下面程序,如果从键盘上分别输入6和4,则输出的结果是()。voidmain(){intx;scanf((“%d”,&x);if(x++5)printf((“%d”,x);elseprintf((“%d\n”,x--);}A)7和5B)6和3C)7和4D)6和45、当调用函数时,实参是一个数组名,则向函数传送的是()。A)数组的长度B)数组的首地址C)数组的每一个元素的地址D)数组每个元素的值6、下列叙述不正确的是()A)调用printf函数时,必须要有输出项。B)使用putchar函数时,必须在之前包含头文件stdio.h。C)在C语言中,整数可以以十进制、八进制或十二进制的形式输入。D)在调用getchar函数读入字符时,可以从键盘输入字符所对应的ASCII码。7、以下叙述正确的是()。A)C语言程序总是从第一个定义的函数开始执行。B)C语言程序即允许函数嵌套调用,又允许函数嵌套定义。C)主函数中定义的变量在整个程序中都有效。1D)凡是在函数中未指定存储类别的变量,其隐含的存储类型为自动的(auto)。8、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句if(ab)if(c==d)y=0;elsey=1;该语句所表示的含义是:()A))(1)(0badcbay且B))(1)(0dcbadcbay且且C))(1)(0dcbadcbay且且D))(1)(0dcdcbay且9、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()。A)函数调用可以作为独立的语句存在。B)函数调用可以作为一个函数的实参。C)函数调用可以出现在表达式中。D)函数调用可以作为一个函数的形参。10、若有如下程序段,其中s、a、b、c均定义为整形变量,且a、c均已赋值(c大于0)s=a;for(b=1;b=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。A)s=a+b;B)s=a+c;C)s=s+c;D)s=b+c;11、在下列选项中,没有构成死循环的程序段是:()。A)inti=100;B)for(;;);while(1){i=i%100+1;if(i=100)break;}C)intk=100;D)intk=0;do{++k;while(k=1)k++;}while(k=100);12、以下叙述中正确的是:()。A)C语言的源程序不必通过编译就可以直接运行。B)C语言中的每条可执行语句最终都可以被转换成二进制的机器指令。C)C源程序经编译后形成的二进制代码可以直接运行。D)C语言中的函数不可以单独编译。213、以下能正确定义一维数组的选项是:()。A)intnum[];B)#defineN100intnum[N];C)intnum[0..100];D)intN=100;intnum[N];14、请选择出正确的程序段()。A)int*p;B)int*s,k;scanf(“%d”,p);*s=100;……………C)int*s,k;D)int*s,k;s=&k;char*p,e;*p=25;s=&k;.........p=&e;s=p;......15、以下叙述正确的是:()A)预处理命令必须位于C源程序的起始位置B)在C语言中,预处理命令都以“#”开头C)每个C程序必须在开头包含预处理命令行:#includestdio.hD)C语言的预处理不能实现宏定义和条件编译的功能16、定义字符数组s并初始化:chars[10]={‘a’,’\0’,’b’,’c’,’d’,’\0’};则表达式strlen(s)的值为:()A)10B)1C)6D)417、已定义c为字符型变量,则下列语句中正确的是()。A)c=’97’B)c=”97”C)c=97D)c=”a”18、以下不能正确定义二维数组的选项是()A)inta[2][2]={{1},{2}};B)inta[][2]={1,2,3,4};C)inta[2][2]={{1},2,3};D)inta[2][]={{1,2},{3,4}};19、要求以下程序的功能是计算:s=1+1/2+1/3+…+1/10voidmain(){intn;floats;s=1.0;for(n=10;n1;n--)s=s+1/n;printf(“%6.4f\n”,s);}程序运行后输出结果错误,导致错误的程序行是:()A)s=1.0;B)for(n=10;n1;n--)C)s=s+1/nD)printf(“%6.4f\n”,s)320、以下正确的函数定义形式为:()A)doublefun(intx,inty)B)doublefun(intx;y)C)doublefun(intx;inty)D)doublefun(intx,y)得分二、填空题(每空2分,共20分)1、一个C程序必定从________函数开始执行。2、采用结构化程序设计方法编写的程序一般有三种基本结构:顺序结构、、和。3、若想通过以下输入语句给a赋1,给b赋2,则,输入数据的形式应该是:_________________________。……inta,b;scanf(“a=%d,b=%d”,&a,&b);……4、以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,2为10岁,其余学生一个比一个大两岁,求第5个学生的年龄。请填空。递归公式为:#includestdio.hintage(intn){intc;if(n==1)c=10;elsec=;return(c);}voidmain(){printf(“age:%d\n”,);}}5、以下程序的输出结果是。voidmain(){chars[]=”abcdef”;)1(2)1()1(01)(nnagennage4s[3]=’\0’;pirntf(“%s\n”,s);}6、下面程序的运行结果是:。structstudent{charname[10];longsno;charsex;floatscore;};voidmain(){structstudentstu;printf(“%d\n”,sizeof(stu));}7、C语言的标识符只能有三种字符组成,它们是字母、和。得分三、写出下列程序的运行结果。(在书写结果的表格中,假定每一格代表屏幕上一个字符的位置,请在表格内书写运行结果。每题4分,共5题,共计20分)1、#include“stdio.h”voidmain(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;pa+10;p++)printf(“%d”,*p);}运行结果为:2、voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}5case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果为:3、#includestdio.hvoidmain(){for(i=1;i5;i++){for(j=1;j5;j++)printf(%4d,i*j);printf(\n);}}运行结果为:4、voidswap(inta,intb){intm;m=a;a=b;b=m;printf(“%d,%d\n”,a,b);}voidmain(){intx=3,y=4;6swap(x,y);printf(“%d,%d”,x,y);}运行结果为:5、voidmain(){floatx=8.8,y=5.4;inta,b;a=x-y;b=(int)x-(int)y;printf(“x=%f,\ny=%f,\na=%d,\nb=%d\n”,x,y,a,b);}得分四、编程题(第一题10分,第二题10分,共20分)1、如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编写一个程序,判断从键盘输入的整数是否为“完数”。72、从键盘输入一字符串放到字符数组s中,先将数组s中的字符正序放到数组t中,然后再将s中的字符逆序连接到t数组的后面。要求:用函数调用来实现。字符串的输入在主函数完成,串的连接在被调用函数来实现。08-09第1学期《C语言程序设计》试卷A参考答案一、单项选择题。(每道选择题只有一个正确答案,请将答案填在题前的括号内,填写其它地方无效。每题2分,共15题,共计30分。)1、A2、D3、B4、A5、B6、B7、D8、C9、D10、B11、A12、B13、B14、C15、B16、B17、C18、D19、C20、A二填空题(每空2分,共20分)1.主(或main)2.选择(或分支)结构循环结构3.a=1,b=24.age(n-1)+2age(n)5.abc6.197.数字下划线三、写出下列程序的运行结果。(在书写结果的表格中,假定每一格代表屏幕上一个字符的位置,请在表格内书写运行结果。每题4分,共5题,共计20分)1、(4分)运行结果为:2、(4分)运行结果为:a=2,b=13、(4分)运行结果为:12342468369124812164、(4分)运行结果为:12345678904,33,415、(4分)运行结果为:四、编程题(第一题10分,第二题10分,共20分)1、如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编写一个程序,判断从键盘输入的整数是否为“完数”。#includestdio.hvoidmain(){intnum,i,sum=0;printf(inputnumber:\n);scanf(%d,&num);for(i=1;inum;i++)if(num%i==0)sum+=i;if(sum==num)printf(thenumber%disawanshu!,num);elseprintf(thenumber%disnotawanshu!,num);}2、从键盘输入一字符串放到字符数组s中,先将数组s中的字符正序放到数组t中,然后再将s中的字符逆序连接到t数组的后面。要求:用函数调用来实现。字符串的输入在主函数完成,串的连接在被调用函数来实现。#includestdio.h#includestring.hvoidmain(){chars[50];voidff(chara[100]);printf(\ninputstring:\n);gets(s);ff(s);x=8.800000,y=5.400000,a=3,b=32//printf(length=%d,len);}voidff(chara[50]){intlen,i,m;chart[100];strcpy(t,a);m=len=strlen(a);for(i=len-1;i=0;i--){t[len]=a[i];len++;}t[len]='\0';printf(%s\n,t);}