A(有答案)
一、填空题
1、一个C语言源程序由若干函数组成,其中至少应含有一个________ 2、下面程序段中循环体的执行次数是_______。 a=10;b=0;
do{b+=2;a-=2+b;}while(a>=0);
3、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。
for(x=0;x<=30;x++) {y=30一x;
if(_______)printf(\"%d,%d\\n\",x,y); }
4、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。
5、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union
{int n;doublex;}num; num.n=10; num.x=10.5;
printf(\"_______\",_______);
6、假设变量a、b均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_______。
7、下面程序段的运行结果是_______。
char ch[]=\"600\";int a,s=0;
for(a=0;ch[a]>= '0'&&ch[a]<='9';a++) s=10*s+ch[a]-'o'; printf(\"%d\",s);
8、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。请填空。(假设程序段中的所有变量均已正确说明。)
for(k=0;k<10;k++,m++)scanf(\"%d\",_______);
9、若想输出b数组的10个元素,则下面存在错误的程序行是_______。(每个程序行前面的数字代表行号。)
1 int main()
2 {int b[10]={1,3,5,7,9,2,4,6,8,10},k; 3 for(k=0;k<10;k++,b++) 4 printf(\"%4d\",*b); 5 return0;
6 }
10、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。
二、选择题
11、下面4个选项中,是不合法的转义字符的选项是( ) A.'\\\"' B.'\\1011 ' C.'\\0ll' D.'\\abe'
\\\\ '\\' '\\f' '\\0ll' \\xf' ' \\a' '\\]' 'xlf'
12、若有说明语句:charc='\\72';则变量c( )。 A.包含1个字符 B.包含2个字符
C.包含3个字符 D.说明不合法,c的值不确定 13、一个C语言程序由( )。
A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成 14、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
15、若用数组名作为函数调用的实参,则传递给形参的是(
)A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数
16、以下针对scanf函数的叙述中,正确的是( )。 A.输入项可以为一实型常量,如scanf(\"%f\",3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(\"a=%d,b=%d\"); C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(\"%4.2f\",&f);
D.当输入数据时,必须指明变量的地址,如scanf(\"%f\",&f); 17、下面程序段的运行结果是( )。
a=1;b=2;c=2;
while(aA.if(a==B. B.if(a=B.C.if(strcpy(a,B.)D.if(strcmp(a,B.) 19、若有定义:inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;则下面程序段的输出结果是( )。
for(k=0;k<4;k++) q[k]=&a[k*3];
printf(\"%d\\n\",q[3][0]);
A.8 B.16 C.20 D.输出项不合法,结果不确定 20、若有以下定义,则数值不为3的表达式是( )。
int x[10]={0,1,2,3,4,5,6,7,8,9},*p1; A.x[3] B.p1=x+3,*p1++ C.pl=x+2,*(p1++) D.pl=x+2,*++pl 21、以下程序的输出是( )。
#include printf(\"OK\"); else if(x<2)printf(\"%d\\n\",x); else printf(\"Quit\"); return 0; } A.OK B.Quit C.1 D.无输出结果 22、对两个数组a和b进行如下初始化: char a[]=\"ABCDEF\";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是( )。 A.a与b数组完全相同 B.a与b长度相同 C.a和b中都存放字符串 D.a的长度比b长 23、下面程序段的运行结果是( )。 int a[6],i; for(i=1;i<6;i++) {a[i]=9*(i-2+4*(i>3))%5; printf(\"%3d\; } A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0 24、下面程序的运行结果是( )。 #include { int i; for(i=1;i<=5;i++) switch(i%5) { case 0: printf(\"*\"); break; case 1: printf(\"#\"); break; default: printf(\"\\n\"); case 2: printf(\"&.\"); } return 0; } A)#&8&&* B)#& C)# D)#&& & &* & * & * 25、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A',B’,C.;则符合程序段运行结果的选项是( )。 void move(char getone,char putone) {printf(\"%c——>%c\\n\",getone,putone); void hanoi(int n,char one,char two,char three) {if(n==1)move(one,three); else {hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } A)A-->C B)A-->C C)A-->C D)A-->C A-->B A-->B A-->B A-->B C-->B C-->A C-->B C-->B B-->A A-->B A-->C A-->C C-->B B-->C B-->A A—->B A-->C A-->C B-->C B-->C A-->B A-->B A-->C A-->C 三、读程序填空 26、已有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是_______。 printf(\"*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\\n\",dl,dl,d1); printf(\"*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\\n\",d2,d2,d2); 27、以下程序的运行结果是_______。 #include 28、以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。请填空。 #include if(c>=1a1&&c<='w')c=c+3; else if(c>='x'/&&c<='z')_______: return c; } int main() {char c; c=getchar(); c=fun(e); putchar(c); return(0); } 29、以下程序的运行结果是_______。 #include int func(int array[][4],int m) {inti,j,k; k=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j] {static int a[3][4]={{1,13,5,7},{2,4,26,8},{10,1,3,12}}; int i,j,m; for(i=0;i<3;i++) { for(j=0;j<4;j++) printf(\"%4d\",a[i][j]); printf(\"\\n\");m=10; printf(\"\\nThe value is%d\\n\",func(a,m)); return(0); } 30、若a、b、c均已正确定义且a=0、b=2、c=3,则以下程序段的输出是_______。 switch(a) {case 0:switch(b==2) {case 1:printf(\"&”);break; case 2:printf(\"%”);break; } case 1:switch(c) {case 1:printf(\"S\"); case 2:printf(”*”);break; default:printf(\"#”); } } 31、下面程序的运行结果是_______。 #include {char a[2][6]={\"Sun\",\"Moon\");int i,j,len[2]; for(i=0;i<2;i++) {for(j=0;j<6;j++) if(a[i][j]=='\\o') {1en[i]=j;break;} printf(\"%6s:%d\\n\",a[i],len[i]); } return 0; } 32、下面程序的功能是用do-while语句求1~1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印5个数。请填空。 #include {printf(\"%4d\",i); j=j+1; if(_______)printf(\\n\"); } i=i+1; }while(i<1000); return 0; } 33、以下程序的运行结果是_______。 #include void fun(int*a,int*x) {int i; for(i=0;i<3;i++)*(x+i)=0; for(i=0;i int main() {int a[N]={66,55,77,88,100,99},x[3],i; fun(a,x); for(i=0;i<3;i++) printf(\"%d\ return(0); } 四、编程题 34、用switch语句编程实现以下函数关系: *(x+2))++;*(x+1))++; −1 (x<0) y={0 (x=0) 1 (x>0) 35、试利用结构体类型编制一个程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。 参考答案 一、填空题 1、主函数(或main函数) 2、3 3、2*x+4*y==90 4、【1】scanf(\"%d%f%f%c%c”,&a,&.b,8.c1,8.c2); 【2】3囗6.5囗12.6aA<回车> (注:答案中的囗代表空格) 5、【1】%If【2】num.x 6、9 7、600 8、m 9、第3行 10、10000010 二、选择题 11、B 12、A 13、B 14、D 15、A 16、D 17、A 18、D 19、C 20、B 21、A 22、D 23、C 24、B 25、C 三、读程序填空 26、*d(1)=3.50000e+00*d(2)=3.500e+00*d(3)=囗3.500e+00* *d(4)=一3.50000e+00*d(5)=-3.50000e+00*d(6)=-3.5000e+00囗x (注:答案中的囗代表空格) 27、20 28、【1】tolower(c)或c=c+32【2】c=c-23 29、1 13 5 7 2 4 26 8 10 1 3 12 The value is 31 30、【1】×<110&&x>=100【2】(x<60)||(x>109)【3】m=0 31、Sun;3 Moon:4 32、【1】i%3==2&&i%5==3&&i%7==2【2】j%5==0 33、1 2 3 四、编程题 34、#include {case 1:y=-1;break; case 0:switch(x==0) {case 1:y=0; break; default:y=1; } } printf(\\n y=%d',y); return 0; } 35、#include {struct study int mid; int end; int average; }math; scanf(\"%d%d\",&math.mid,&.math.end); math.average=(math.mid+math.end)/2; printf(\"average=%d\\n\",math.average); return 0; } 因篇幅问题不能全部显示,请点此查看更多更全内容