C语言程序设计(华中科技大学) 中国大学mooc慕课答案2024版 m308498
第一周:C语言概述 第一周单元测试
1、 以下关于C语言说法错误的是( )。
答案: C语言程序习惯使用大写英文字母
2、 以下不正确的C语言标识符是( )。
答案: xy.z
3、 以下正确的C语言标识符是( )。
答案: x123
4、 一个C语言程序的执行是从( )。
答案: main()函数开始,直到main()函数结束
5、 在C语言程序中,main()函数的位置( )。
答案: 可以任意
6、 一个C程序是由( )。
答案: 一个或多个函数组成
7、 C语言源程序的基本单位( )。
答案: 函数
8、 编辑程序的功能是( )。
答案: 建立并修改程序
9、 C编译程序是( )。
答案: 将C源程序编译成目标程序
10、 C编译程序能发现源程序的( )。
答案: 语句的语法错误
11、 带C语言编译器的CodeBlocks集成开发环境不能完成( )。
答案: 设计C程序
12、 CodeBlocks调试程序进入调试状态后,可以( )。
答案: 查看当前函数中有效作用域的变量
13、 一个C语言程序可以有多个main()函数
答案: 错误
14、 C语言程序区分大小写
答案: 正确
15、 C语言程序的变量名可以是关键字
答案: 错误
16、 C语言编译程序可以发现注释错误
答案: 错误
17、 CodeBLocks集成开发环境,可以设计C程序
答案: 错误
第二周:C语言变量、常量及表达式 第二周单元测验
1、 已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句“printf(“%d,%d”, c1, c2 – 2);”后,输出的结果是( )。
答案: 65,66
2、 字符串”\\”ABC\”\”的长度是( )。
答案: 7
3、 设有整型变量i ,其值为020;整型变量j,其值为20。执行语句: printf(“%d,%d”, i , j); 后,输出结果是( )。
答案: 16,20
4、 设整型变量x为5,y为2,结果值为1的表达式是( )。
答案: x != y || x >= y
5、 二进制加法10010100 + 00110010的和为( )。
答案: 11000110
6、 属于整型常量的是( )。
答案: 14
7、 x, a , b 均为整型变量,执行语句“x = a = 3 , b =( a–);” 后, x、a、b的值依次为( )。
答案: 3,2,3
8、 设整型变量x的值为35,则表达式“(x & 15) && (x | 15)”的值是( )。
答案: 1
9、 属于实型常量的是( )。
答案: 1E-1
10、 设整型变量a为5,使整型变量b 不为2的表达式是( )。
答案: b = a % 2;
11、 设有整型变量n1、n2,其值均为3,执行语句“n2 = (n1++, n2++, ++n1);”后,n2的值是( )。
答案: 5
12、 设单精度型变量f、g均为5.0,使f为10.0的表达式是( )。
答案: f += g;
13、 表达式“1 ? (0 ? 3 : 2) : (10 ? 1 : 0)”的值为( )。
答案: 2
14、 设x、y、z均为实型变量,代数式“x / (yz)”的C表达式写法正确的是( )。
答案: x / (y * z)
15、 下面程序的输出是( )。#include <stdio.h>void main( ){ int x=10, y=3; printf(“%d”,y=x/y);}
答案: 3
16、 下列不正确的转义字符是( )。
答案: ‘\084’
17、 若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为( )。
答案: double
18、 以下程序的输出结果是( )。#include <stdio.h>void main( ) { int a=10,b=10; printf(“%d,%d”, –a, ++b);}
答案: 9,11
19、 表达式1.5-7/2+4.3+5%2的值是( )。
答案: 3.8
20、 若有以下程序:#include <stdio.h>void main( ){ int k=2,i=2,m; m=(k+=i*=k); printf(“%d,%d”,m,i);}执行后的输出结果是( )。
答案: 6,4
21、 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( )。
答案: a>=10‖a<=0
22、 已知unsigned int x = 012, y = 0x0f; 则表达式x & y的结果为( )。
答案: 10
23、 已知unsigned int x = 012, y = 0x0f; 则表达式x | y的结果为( )。
答案: 15
24、 已知unsigned int x = 012, y = 0x0f; 则表达式x ^ y的结果为( )。
答案: 5
25、 已知unsigned int x = 012, y = 0x0f; 则表达式x & (y^y) 的结果为( )。
答案: 0
26、 已知unsigned int x = 012, y = 0x0f; 则表达式(x >> 3) & (y << 4) 的结果为( )。
答案: 0
27、 已知 int a = 5, b = 4; 则表达式 !a && ++b运行后,变量a,b的值分别为( )。
答案: 5,4
28、 已知 int a = 5, b = 3; 则表达式 a || (b + 4) && ((++a) * (b++))运行后,表达式、变量a与b的值分别为( )。
答案: 1,5,3
29、 已知 int a = 10, b = 20,c; max = b; 则表达式 c= (a > b) && (max = a)运行后,变量c与max的值分别为( )。
答案: 0,20
30、 已知 unsigned int a = 1, b = 2, c = 3, d = 4; float f = 1.0;则表达式 f =(((a-b>d-c)?a++:b++),a*b)运行后,变量f的值为( )。
答案: 4.0
31、 在C语言中,表达式“5&&6”的值为( )。
答案: 1
32、 有以下程序#include <stdio.h>void main( ){ int a,b,c=290; a=(c/100)%9; b=(-1)&&(-1); printf(“%d,%d”,a,b);}输出结果是( )。
答案: 2,1
33、 下面程序的输出是( )。#include <stdio.h>void main( ){ int a=-1,b=4,k; k=(a++<0)&&(!(b–<=0)); printf(“%d,%d,%d%”,k,a,b);}
答案: 1,0,3
34、 有以下程序#include <stdio.h>void main( ){ int a,b,d=25; a=d/10%9; b=a&&(-1); printf(“%d,%d”,a,b);}程序运行后的输出结果是( )。
答案: 2,1
35、 在C语言程序中对用到的所有变量都必须先进行定义并指定其数据类型。
答案: 正确
36、 一个变量在内存中占据一定的存储单元。
答案: 正确
37、 在C语言程序中语句”float a=b=c=1.0;”是合法的。
答案: 错误
38、 自增运算符(++)或自减运算符(–)不能用于常量。
答案: 正确
39、 在C程序的表达式中,为了明确表达式的运算次序,提倡使用小括号”( )”。
答案: 正确
40、 %运算符要求运算的操作数必须是整型数。
答案: 正确
41、 关系表达式的值可以是任意整数。
答案: 错误
42、 在C语言中,逗号运算符的优先级最低。
答案: 正确
43、 C语言允许混合类型数据之间进行运算。
答案: 正确
44、 转义字符表示法只能表示字符不能表示数字。
答案: 错误
45、 在C语言标识符定义中,大小写字母是不加区分的。
答案: 错误
第三周:C程序及流程控制(1) 第三周单元测验
1、 C语言的结构化程序设计所包含的结构是( )。
答案: 顺序结构、选择结构和循环结构
2、 下面哪个语句不便于C语言结构化编程的是( )。
答案: goto语句
3、 C语言的流程控制语句不包括( )。
答案: 表达式语句
4、 C语言的辅助控制语句不包括( )。
答案: swicth …case语句
5、 关于C语言的复合语句,下面哪种说法是正确的( )。
答案: 将若干条语句用括弧{ }括起来就构成了复合语句;
6、 关于C语言的空语句,下面哪种说法是正确的( )。
答案: 只有分号的语句就叫空语句;
7、 关于表达式语句,下面哪种说法是正确的( )。
答案: 任何一个表达式加上一个分号就是一条表达式语句;
8、 关于while循环,下面哪种说法是错误的( )。
答案: while循环的循环体不能为空语句;
9、 阅读以下程序:#include <stdio.h>void main( ) { int x; scanf(“%d”,&x); if(x–<5) printf(“%d”, x); else printf(“%d”, x++); }程序运行后,如果从键盘上输入5,则输出结果是 ( )。
答案: 4
10、 有如下程序,该程序的输出结果是( )。#include <stdio.h>void main( ){ int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++; b++; } printf(“a=%d,b=%d”,a,b);}
答案: a=2,b=1
11、 有以下程序#include <stdio.h>void main( ){ int a=16,b=21,m=0; switch(a%3) { case 0: m++; break; case 1: m++; switch(b%2) { default: m++; case 0: m++; break; } } printf(“%d”,m);}程序运行后的输出结果是( )。
答案: 3
12、 有以下程序#include <stdio.h>void main( ){ int a=5,b=4,c=3,d=2; if(a>b && b>c) printf(“%d”,d); else if(c-1>=d) printf(“%d”,d+1); else printf(“%d”,d+2);}执行后输出结果是( ) 。
答案: 2
13、 有以下程序#include <stdio.h>void main( ){ int a=3,b=4,c=5,d=2; if(a<b) { if(b>c) printf(“%d “,d++ +1); else printf(“%d “,++d +1); } printf(“%d”,d);} 程序运行后的输出结果是( )。
答案: 4 3
14、 有以下程序#include <stdio.h>void main( ){ int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d”,s);}程序运行后的输出结果是( )。
答案: 数1~10中的偶数之和
15、 以下程序段的输出结果是( )。 int x=3; do { printf(“%3d”,x-=2); } while(!(–x));
答案: 1 -2
16、 以下程序中,while循环的循环次数是( )。#include <stdio.h>void main( ){ int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; }……}
答案: 死循环,不能确定次数
17、 有以下程序#include <stdio.h>void main( ){ int a = 12, b = -34, c = -56, min; min = a; if(min > b) min = b; if(min > c) min = c; printf(“min = %d”, min);}输出结果是( )。
答案: min = -56
18、 有以下程序#include <stdio.h>void main( ){ int a ; scanf(“%d”,&a); if(a >= 0) { if( a % 2 ==0) printf(“%d is a positive even number.”, a); else printf(“%d is a positive odd number.”, a); } else { if( a % 2 ==0) printf(“%d is a negative even number.”, a); else printf(“%d is a negative odd number.”, a); }}若通过键盘输入-11,则运行结果是( )。
答案: -11 is a negative odd number.
19、 有以下程序#include <stdio.h>void main( ){ char c ; while(( c = getchar( )) != ‘$’) { if(‘A’ <= c && c <= ‘Z’) putchar(c + 32); else if(‘a’ <= c && c <= ‘z’) putchar(c); }}当输入为abc&%ABC#!$时,运行结果是( )。
答案: abcabc
20、 输入一个字符,判断该字符是数字、字母、空格还是其它字符。请选择正确的答案填空 ( )。#include <stdio.h>void main( ){ char c ; c = getchar( ); if(____) printf(“It is an ENGLISH character.”); else if(‘0’ <= c && c <= ‘9’) printf(“It is a DIGITAL character.”); else if(c == 32) printf(“It is a SPACE character.”); else printf(“It is other character.”);}当输入为abc*&%ABC#!$时,运行结果是( )。
答案: (‘A’ <= c && c <= ‘Z’) || (‘a’ <= c && c <= ‘z’)
21、 程序读入10个整数,统计其中非负数的个数,并计算非负数之和。请选择正确的答案填空 ( )。#include <stdio.h>void main( ){ int i, a, s = 0, count = 0 ; for(i = 0; i < 10; i ++) { scanf(“%d”,&a); if( a < 0) continue; ________ } printf(“s = %d \t count = %d “, s,count);}
答案: s+=a; count++;
22、 C语言程序的结构和版式是没有任何规律的;
答案: 错误
23、 初学者编写C语言的程序不需要养成加注释的习惯;
答案: 错误
24、 使用复合语句便于程序的结构化;
答案: 正确
25、 结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。
答案: 正确
26、 break语句的功能只是用于退出循环;
答案: 错误
27、 C语言中一般情况下不推荐使用goto 语句;
答案: 正确
28、 switch多分支选择语句的功能可以用条件分支嵌套语句来实现
答案: 正确
29、 空语句就是程序中没有什么作用的语句;
答案: 错误
30、 while循环和for循环可以相互替代;
答案: 正确
31、 在一些特定的应用中,用switch多分支选择语句代替条件分支嵌套语句可以提高程序的可读性。
答案: 正确
第四周:C程序及流程控制(2) 第四周单元测验
1、 如下程序,求序列:1、3、5、7…….的前20项之和,请选择正确的答案填空( )。#include<stdio.h> void main( ) { int i; int sum, t ; //sum代表和, t代表某项 sum = 0 ; t = 1 ; for (i=1 ; _____ ; i++) { sum + = t; t += 2; } printf(” sum = %d”,sum);}
答案: i<=20
2、 计算2+4+6+8+……+100的值,请选择正确的答案填空( )。#include<stdio.h> void main( ) { int i; int s, t ; //s代表和, t代表某项 s = 0 ; t = 2 ; for (i=1 ; i <= 50 ; i++) { _______; t += 2; } printf(” sum = %d”,s);}
答案: s =s +t
3、 如下程序,求序列:1!, 2!, 3!, 4!………..的前八项之和.请选择正确的答案填空 ( )。#include<stdio.h>void main( ){ int i; ____ ; //sum代表和, t代表某项 sum = 0 ; t = 1 ; for (i=1;i<=8;i++) { sum += t; t *= (i+1); } printf(” sum = %ld”,sum);}
答案: long sum,t
4、 求序列:2!+3!+4!+5!+……+11!的值.请选择正确的答案填空( )。#include<stdio.h>void main( ){ int i; long sum,t ; //sum代表和, t代表某项 sum = 0 ; t = 2 ; for (i=1;i<=10;i++) { sum + = t; _____; } printf(“sum = %ld”,sum);}
答案: t *=(i+2)
5、 编一程序,求100-999之间所有的水仙花数, 所谓水仙花数就是说数的百位。十位和个位数的立方和恰好等于它本身。请选择正确的答案填空 ( )。#include<stdio.h>void main( ) { int i,a,b,c; for (_____) { a = i/100 ; //求百位数 b =( i- a100)/10; //求十位数 c = i%10; //求个位数 if( aaa + bbb +cc*c == i) { printf(” %6d”, i ); } } }
答案: i =100 ; i<=999 ; i++
6、 有以下程序#include <stdio.h>void main( ) { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue; } a-=3; } printf(“%d”,b); }程序运行后的输出结果是( )。
答案: 4
7、 有以下程序#include <stdio.h>void main( ){ int i; for(i=0;i<3;i++) { switch(i) { case 1: printf(“%3d”,i); case 2: printf(“%3d”,i); default: printf(“%3d”,i); } } }执行后输出结果是( )。
答案: 0 1 1 1 2 2
8、 下面程序的输出是( )。#include <stdio.h>void main( ){ int y=9; for( ; y>0 ; y–) { if(y%3==0) { printf(“%3d”,–y); continue; } }}
答案: 8 5 2
9、 有以下程序#include <stdio.h>void main( ){ int x,i; for(i=1;i<=50;i++) { x=i; if(++x%2==0) if(x%3==0) if(x%7==0) printf(“%d”,i); }}输出结果是( )。
答案: 41
10、 以下程序为求序列:1/2、3/4、5/8、7/16、9/32、……所有大于或等于0.000001的数据项之和。请选择正确的答案填空( )。#include<stdio.h>void main( ){ float sum, a , b ; //sum代表和, a代表分子, b代表分母 sum = 0.0 ; a = 1; //分子赋初值 b = 2 ; //分母赋初值 while (a / b >=1e-6) { _____; a = a + 2; //求下一项分子 b = b * 2; //求下一项分母 } printf(“sum = %f”,sum);}
答案: sum += (a / b)
11、 已知abc + cba = 1333,a, b, c,为一位数,以下程序为求所有可能的a, b, c的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ) { int i,a,b,c; for (i =100 ; i<=999 ; i++) { a = i/100 ; //求百位数 b =( i- a100)/10; //求十位数 c = i%10; //求个位数 if( _____) { printf(” a=%d,b=%d,c=%d”,a,b,c ); } } }
答案: (a100+b10+c+c100+b10+a)==1333
12、 以下程序为求两个正整数的最大公约数的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ) { int i, a, b; scanf(“%d%d”,&a,&b); for (_____ ; i > 0 ; i –) { if( (a % i == 0) && (b % i == 0)) { printf(” the max = %d “, i ) ; break ; } } }
答案: i = (a<b ? a : b)
13、 以下程序为判断一个正整数是否为素数的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ) { int i, a ; scanf(“%d”,&a); for (i = 2 ; i < a ; i ++) { if(____) { break ; } } if(i >= a) { printf(“%d is a sushu.”,a); } else { printf(“%d is not a sushu.”,a); } }
答案: a % i == 0
14、 用100元钱买100只鸡,其中母鸡每只3元,公鸡每只2元,小鸡1元3只,且每种鸡至少买1只。以下程序为计算百钱买百鸡所有可能购买方案的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ){ int a, b, c; //a,b,c分别代表母鸡、公鸡和小鸡数 for (a = 1 ; a <= 98 ; a ++) { for (b = 1 ; b <= 98 ; b ++) { for (c = 1 ; c <= 98 ; c ++) { if(_________) { printf(“muji : %d, gongji: %d, xiaoji: %d”,a,b,c); } } } }}
答案: (a+b+c==100) && (a3+b2+c/3 ==100) && (c %3 ==0)
15、 计算1!, 2!, 3!, ……,10! 的值,并输出结果。请选择正确的答案填空( )。#include<stdio.h>void main( ){ int i; long int s =1 ; //s代表阶乘的结果 for (i=1;i<=10;i++) { ____; printf(“%d! = %ld”, i, s); }}
答案: s *= i
16、 for循环语句中的三个表达式起着不同的作用,表达式1一般用于进入循环前给某些变量赋初值;
答案: 正确
17、 在for循环语句中,表达式1、表达式2和表达式3都是逗号运算表达式;
答案: 错误
18、 在C语言编程中应该尽量少用空格或者空行;
答案: 错误
19、 在C语言编程中,如果出现嵌套的大括弧对{ },使用缩进对齐的格式能增强程序的可读性;
答案: 正确
20、 C语言的辅助控制语句包括break,continue、return和goto语句;
答案: 正确
21、 C语言编程中,不提倡把多个语句写在一行中,提倡一行只写一条语句;
答案: 正确
22、 在C语言编程时,要养成修改代码同时修改相应注释的习惯,以保证注释与代码的一致性。
答案: 正确
23、 在C语言编程中,相对独立的程序块之间、变量说明之后加上空行可以增加程序的可读性。
答案: 正确
第五周:函数(1) 第五周单元测试
1、 下列关于C语言程序的结构化设计,说法错误的是( )
答案: 只有一个源文件,对函数大小没有限制
2、 定义函数void fun()函数,函数的返回值类型为()
答案: 函数无返回值
3、 下面关于函数描述正确的是()
答案: 函数的定义不可以嵌套,但是调用可以嵌套
4、 若定义函数时函数的返回类型缺省,则函数的默认数据类型为()
答案: int
5、 一个函数返回值的类型是由( )决定的
答案: 定义函数时指定的函数数据类型
6、 下面叙述中正确的是( )
答案: 对于用户自己定义的函数,在使用前必须加以说明
7、 函数的形参可以是()
答案: 局部自动变量
8、 有如下定义的函数:func(int a){ printf(“%d”,a);}则该函数的返回值类型是()
答案: int类型
9、 函数内部的局部静态变量,下列说法正确的是( )
答案: 在函数退出后不被释放,程序执行结束释放
10、 局部自动变量,下列说法正确的是()
答案: 进入函数分配内存,退出函数,释放内存
11、 下列说法不正确的是( )
答案: 全局静态变量和局部静态变量,作用域和寿命相同
12、 下面程序段运行的结果为()#include <stdio.h>int f();int f() { static int i=0; int s=1; s+=i; i++; return s; } void main() { int i,a=0; for(i=0;i<5;i++) a+=f(); printf(“%d”,a); }
答案: 15
13、 下面程序段运行的结果为( )#include <stdio.h>int try1( );int try1( ){ static int x=3; x++; return x;}void main(){ int i,x; for(i=0; i<=2; i++) x=try1( ); printf(“%d”, x);}
答案: 6
14、 下面程序的运算结果为( )#include <stdio.h>void fun();int main(){ int a=10; fun(); printf(“%3d”,a); return 0;}void fun(){ int a=20; printf(“%3d”,a);}
答案: 20 10
15、 以下正确的函数形式是( )
答案: int fun(int x,int y){ double z; z=x+y; return z;}
16、 以下程序的输出结果是()#include <stdio.h>int i=10;int func();void main(){ int j=1; j=func(); printf(“%3d”,j); j=func(); printf(“%3d”,j);}int func(){ int k=0; k=k+i; i=i+10; return k;}
答案: 10 20
17、 函数内定义的局部变量可以在函数运行结束后继续被调用
答案: 错误
18、 变量根据其作用域的范围可以分作局部变量和全局变量
答案: 正确
19、 当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区
答案: 错误
20、 在一个函数内定义的静态局部变量不能被另外一个函数所调用
答案: 正确
21、 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5
答案: 错误
22、 变量被定义后,它的作用域和寿命就被确定了,并且不可改变。
答案: 正确
23、 在同一个作用域不可定义同名变量,在不同的作用域可以定义同名变量
答案: 正确
24、 函数内部的静态变量,在函数退出后不被释放
答案: 正确
25、 C语言中函数返回值的类型由return语句中的表达式的类型决定
答案: 错误
26、 C语言中一般全局变量与静态全局变量生存期不同
答案: 错误
27、 程序进行编译时,不为形式参数分配存储空间
答案: 正确
28、 编译器根据函数的原型来检查函数的调用正确与否
答案: 正确
第六周:函数(2) 第六周单元测验
1、 下列说法中正确的是()
答案: 函数原型是一条语句,不包括函数体
2、 在调用函数时,如果实参是整型变量,它与对应形参之间的数据传递方式是()
答案: 单向值传递
3、 若定义函数float *fun( ),则函数fun的返回值为( )
答案: 一个指向变量的指针
4、 C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( )
答案: 同名的局部变量
5、 以下结论中只有( )是正确的
答案: 所有的递归程序均可以采用非递归算法实现
6、 main()函数的数据类型,可以是( )
答案: void
7、 下面程序段运行的结果为( )#include <stdio.h>int fun(float x,float y);int fun(float x,float y){ return x > y ? x : y;}void main(){ printf(“%d,%d”,fun(3,5),fun(4.8,4.6));}
答案: 5,4
8、 下面程序的运算结果为( )#include <stdio.h>int fun(int n);int fun(int n){ if(n == 1 || n == 2) return 1; return fun(n-1)+fun(n-2);}void main(){ printf(“%d”,fun(6));}
答案: 8
9、 以下程序运行结果是( )#include <stdio.h>void f(int a, int b);void f(int a, int b){ int t; t = a; a = b; b = t;}void main(){ int x = 3, y = 2, z = 1; if (x > y) f(x, y); if (y > z) f(y, z); if (x > y) f(x, y); printf(“%d, %d, %d”, x, y, z);}
答案: 3, 2, 1
10、 以下程序的输出结果是( )#include <stdio.h>int func(int s);void main( ){ int i,x=0; for(i=0;i<4;i++) { x=func(i+1); printf(“%3d”,x); } printf(“”);}int func(int s){ int x; static int t=3; x=s+t; t++; return x;}
答案: 4 6 8 10
11、 以下程序的执行结果是()#include <stdio.h>int swap(int a,int b);void main(){ int a,b; a=3,b=10; swap(a,b); printf(“a=%d,b=%d”,a,b); }int swap(int a,int b){ int temp; temp=a; a=b; b=temp; return 0;}
答案: a=3,b=10
12、 以下程序的执行结果是()#include <stdio.h>int sum(int k);void main(){ int s,i; for(i=1;i<=10;i++) s=sum(i); printf(“s=%d”,s);}int sum(int k){ int x=0; return (x+=k); }
答案: s=10
13、 以下程序的执行结果是()#include <stdio.h>int func(int );void main(){ int a=1,i; for(i=0;i<4;i++) { printf(“%3d”,func(a+i)); }}int func(int b){ static int i; return b+i;}
答案: 1 2 3 4
14、 以下程序的执行结果是()#include <stdio.h>int multi(int x,int y);void main(){ int a,b,c; a=10,b=12; c=mult(a,b); printf(“%d%d=%d”,a,b,c);}int multi(int x,int y){ return xy;}
答案: 1012=120
15、 以下程序的执行结果是()#include <stdio.h>int n;void func();void main(){ static int x=6; int y; y=n; func(); printf(“x=%d,y=%d,n=%d”,x,y,n);}void func(){ static int x; int y=10; x=x+20; n=n+2; y=y+n;}
答案: x=6,y=0,n=2
16、 C语言中,函数调用时,形参与实参的个数可以不必保持一致
答案: 错误
17、 C语言函数间使用值传递数据时,对形参进行写操作,会影响主调函数里相关变量的值
答案: 错误
18、 C语言中,一个函数可以有多个返回值
答案: 错误
19、 C语言函数间使用传址方式传递数据时,对形参进行写操作,可以影响主调函数里相关变量的值
答案: 正确
20、 C语言中,使用全局变量可以使程序设计简单,移植性好
答案: 错误
21、 函数的递归调用是一个函数直接或间接地调用它自身
答案: 正确
第七周:数组(1) 第七周单元测验
1、 下列一维数组定义正确的是( )
答案: int a[3];
2、 下列一维数组定义与初始化错误的是( )
答案: int a[3] = 0;
3、 下列二维数组定义和初始化错误的是( )
答案: int a[3][];
4、 在下列语句条件下,二维数组的定义和初始化错误的是( )#define SIZE 9
答案: int a[][SIZE];
5、 假定int型变量在内存中占2个字节,那么二维数组int a[3][4]所占的字节数为 ( )
答案: 24
6、 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为 ( )
答案: 3
7、 下列关于数组概念的描述中,错误的是( )
答案: 数组定义后,它的元素个数是可以改变的
8、 已知double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; dd[2][2]的值为( )
答案: 0.0
9、 若有定义语句:int m[][3]={1,2,3,4,5,6,7};,则与该语句等价的是( )
答案: int m[][3]={{1,2,3},{4,5,6},{7}};
10、 程序填空。程序功能:求矩阵的最小值,并记录最小值的行列号。#include <stdio.h>void main(){ int i, j, min; int row=0,column=0; int a[3][3]={{1,2,3},{2,-3,4},{9,4,7}}; min=a[0][0]; for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(_____) { min=a[i][j]; row=i+1; column=j+1; } } } printf(“min=%d,row=%d,column=%d”,min,row,column);}程序中空白处所填语句正确的为( )
答案: min>a[i][j]
11、 若有定义语句int a[10]; 以下叙述中正确的是( )
答案: a[0]是合法的数组元素,a[10]不是合法的数组元素
12、 下列有一行是错误的(每行程序前的数字表示行号),程序有错误的行数是( )1 include <stdio.h>2 void main( )3 {4 int a[3] = {2*3};5 int i, sum=0;6 for( i=0; i<3; i++ )7 {8 scanf(“%d”, a[i]);9 sum += a[i];10 }11 printf( “%d”, sum );12 }
答案: 第8行有错误
13、 若有以下数组说明,则a[a[i]]元素数值是( )。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}, int i=10;
答案: 6
14、 以下叙述中正确的是( )
答案: 语句int a[8]={0};是合法的
15、 程序填空。程序功能:计算两个矩阵的乘积。#include <stdio.h>void main(){ int valueA[3][4]={{2,3,-5,0},{12,-1,2,8},{1,12,-2,1}}; int valueB[4][5]={{5,13,0,1,5},{-2,0,4,1,5},{5,3,2,1,0},{0,1,2,0,1}}; int valueC[3][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; int i,j,k; for(i=0; i<3; i++) for(j=0; j<5; j++) for(k=0; k<4;k++) ______; for(i=0;i<3;i++) { printf(“”); for(j=0;j<5;j++) printf(“%5d”,valueC[i][j]); }}程序中空白处所填语句正确的为( )
答案: valueC[i][j] += valueA[i][k] * valueB[k][j]
16、 一维数组在内存中的存储空间是连续的;二维数组在存储中的存储空间每一行是连续,不同行之间则不连续。
答案: 错误
17、 数组可以动态指定大小。
答案: 错误
18、 数组初始化时可以仅初始化部分元素的值。
答案: 正确
19、 数组所占的元素取决于数组的大小,如果数组大小为N,则在该数组所占内存大小为N个字节。
答案: 错误
20、 同一个数组可以存放不同数据类型的数值。
答案: 错误
21、 二维数组初始化语句”int a[2][2] = {{0},{2}};” 是正确的。
答案: 正确
下方是付费阅读内容:本平台商品均为虚拟商品,无法用作二次销售,不支持退换货,请在购买前确认您需要购买的资料准确无误后再购买,望知悉!
完整答案需点击上方按钮支付5元购买,所有答案均为章节测试答案,购买后上方矩形框将出现已付费的隐藏内容。
,
第一周:C语言概述 第一周单元测试
1、 以下关于C语言说法错误的是( )。
答案: C语言程序习惯使用大写英文字母
2、 以下不正确的C语言标识符是( )。
答案: xy.z
3、 以下正确的C语言标识符是( )。
答案: x123
4、 一个C语言程序的执行是从( )。
答案: main()函数开始,直到main()函数结束
5、 在C语言程序中,main()函数的位置( )。
答案: 可以任意
6、 一个C程序是由( )。
答案: 一个或多个函数组成
7、 C语言源程序的基本单位( )。
答案: 函数
8、 编辑程序的功能是( )。
答案: 建立并修改程序
9、 C编译程序是( )。
答案: 将C源程序编译成目标程序
10、 C编译程序能发现源程序的( )。
答案: 语句的语法错误
11、 带C语言编译器的CodeBlocks集成开发环境不能完成( )。
答案: 设计C程序
12、 CodeBlocks调试程序进入调试状态后,可以( )。
答案: 查看当前函数中有效作用域的变量
13、 一个C语言程序可以有多个main()函数
答案: 错误
14、 C语言程序区分大小写
答案: 正确
15、 C语言程序的变量名可以是关键字
答案: 错误
16、 C语言编译程序可以发现注释错误
答案: 错误
17、 CodeBLocks集成开发环境,可以设计C程序
答案: 错误
第二周:C语言变量、常量及表达式 第二周单元测验
1、 已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句“printf(“%d,%d”, c1, c2 – 2);”后,输出的结果是( )。
答案: 65,66
2、 字符串”\\”ABC\”\”的长度是( )。
答案: 7
3、 设有整型变量i ,其值为020;整型变量j,其值为20。执行语句: printf(“%d,%d”, i , j); 后,输出结果是( )。
答案: 16,20
4、 设整型变量x为5,y为2,结果值为1的表达式是( )。
答案: x != y || x >= y
5、 二进制加法10010100 + 00110010的和为( )。
答案: 11000110
6、 属于整型常量的是( )。
答案: 14
7、 x, a , b 均为整型变量,执行语句“x = a = 3 , b =( a–);” 后, x、a、b的值依次为( )。
答案: 3,2,3
8、 设整型变量x的值为35,则表达式“(x & 15) && (x | 15)”的值是( )。
答案: 1
9、 属于实型常量的是( )。
答案: 1E-1
10、 设整型变量a为5,使整型变量b 不为2的表达式是( )。
答案: b = a % 2;
11、 设有整型变量n1、n2,其值均为3,执行语句“n2 = (n1++, n2++, ++n1);”后,n2的值是( )。
答案: 5
12、 设单精度型变量f、g均为5.0,使f为10.0的表达式是( )。
答案: f += g;
13、 表达式“1 ? (0 ? 3 : 2) : (10 ? 1 : 0)”的值为( )。
答案: 2
14、 设x、y、z均为实型变量,代数式“x / (yz)”的C表达式写法正确的是( )。
答案: x / (y * z)
15、 下面程序的输出是( )。#include <stdio.h>void main( ){ int x=10, y=3; printf(“%d”,y=x/y);}
答案: 3
16、 下列不正确的转义字符是( )。
答案: ‘\084’
17、 若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为( )。
答案: double
18、 以下程序的输出结果是( )。#include <stdio.h>void main( ) { int a=10,b=10; printf(“%d,%d”, –a, ++b);}
答案: 9,11
19、 表达式1.5-7/2+4.3+5%2的值是( )。
答案: 3.8
20、 若有以下程序:#include <stdio.h>void main( ){ int k=2,i=2,m; m=(k+=i*=k); printf(“%d,%d”,m,i);}执行后的输出结果是( )。
答案: 6,4
21、 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( )。
答案: a>=10‖a<=0
22、 已知unsigned int x = 012, y = 0x0f; 则表达式x & y的结果为( )。
答案: 10
23、 已知unsigned int x = 012, y = 0x0f; 则表达式x | y的结果为( )。
答案: 15
24、 已知unsigned int x = 012, y = 0x0f; 则表达式x ^ y的结果为( )。
答案: 5
25、 已知unsigned int x = 012, y = 0x0f; 则表达式x & (y^y) 的结果为( )。
答案: 0
26、 已知unsigned int x = 012, y = 0x0f; 则表达式(x >> 3) & (y << 4) 的结果为( )。
答案: 0
27、 已知 int a = 5, b = 4; 则表达式 !a && ++b运行后,变量a,b的值分别为( )。
答案: 5,4
28、 已知 int a = 5, b = 3; 则表达式 a || (b + 4) && ((++a) * (b++))运行后,表达式、变量a与b的值分别为( )。
答案: 1,5,3
29、 已知 int a = 10, b = 20,c; max = b; 则表达式 c= (a > b) && (max = a)运行后,变量c与max的值分别为( )。
答案: 0,20
30、 已知 unsigned int a = 1, b = 2, c = 3, d = 4; float f = 1.0;则表达式 f =(((a-b>d-c)?a++:b++),a*b)运行后,变量f的值为( )。
答案: 4.0
31、 在C语言中,表达式“5&&6”的值为( )。
答案: 1
32、 有以下程序#include <stdio.h>void main( ){ int a,b,c=290; a=(c/100)%9; b=(-1)&&(-1); printf(“%d,%d”,a,b);}输出结果是( )。
答案: 2,1
33、 下面程序的输出是( )。#include <stdio.h>void main( ){ int a=-1,b=4,k; k=(a++<0)&&(!(b–<=0)); printf(“%d,%d,%d%”,k,a,b);}
答案: 1,0,3
34、 有以下程序#include <stdio.h>void main( ){ int a,b,d=25; a=d/10%9; b=a&&(-1); printf(“%d,%d”,a,b);}程序运行后的输出结果是( )。
答案: 2,1
35、 在C语言程序中对用到的所有变量都必须先进行定义并指定其数据类型。
答案: 正确
36、 一个变量在内存中占据一定的存储单元。
答案: 正确
37、 在C语言程序中语句”float a=b=c=1.0;”是合法的。
答案: 错误
38、 自增运算符(++)或自减运算符(–)不能用于常量。
答案: 正确
39、 在C程序的表达式中,为了明确表达式的运算次序,提倡使用小括号”( )”。
答案: 正确
40、 %运算符要求运算的操作数必须是整型数。
答案: 正确
41、 关系表达式的值可以是任意整数。
答案: 错误
42、 在C语言中,逗号运算符的优先级最低。
答案: 正确
43、 C语言允许混合类型数据之间进行运算。
答案: 正确
44、 转义字符表示法只能表示字符不能表示数字。
答案: 错误
45、 在C语言标识符定义中,大小写字母是不加区分的。
答案: 错误
第三周:C程序及流程控制(1) 第三周单元测验
1、 C语言的结构化程序设计所包含的结构是( )。
答案: 顺序结构、选择结构和循环结构
2、 下面哪个语句不便于C语言结构化编程的是( )。
答案: goto语句
3、 C语言的流程控制语句不包括( )。
答案: 表达式语句
4、 C语言的辅助控制语句不包括( )。
答案: swicth …case语句
5、 关于C语言的复合语句,下面哪种说法是正确的( )。
答案: 将若干条语句用括弧{ }括起来就构成了复合语句;
6、 关于C语言的空语句,下面哪种说法是正确的( )。
答案: 只有分号的语句就叫空语句;
7、 关于表达式语句,下面哪种说法是正确的( )。
答案: 任何一个表达式加上一个分号就是一条表达式语句;
8、 关于while循环,下面哪种说法是错误的( )。
答案: while循环的循环体不能为空语句;
9、 阅读以下程序:#include <stdio.h>void main( ) { int x; scanf(“%d”,&x); if(x–<5) printf(“%d”, x); else printf(“%d”, x++); }程序运行后,如果从键盘上输入5,则输出结果是 ( )。
答案: 4
10、 有如下程序,该程序的输出结果是( )。#include <stdio.h>void main( ){ int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++; b++; } printf(“a=%d,b=%d”,a,b);}
答案: a=2,b=1
11、 有以下程序#include <stdio.h>void main( ){ int a=16,b=21,m=0; switch(a%3) { case 0: m++; break; case 1: m++; switch(b%2) { default: m++; case 0: m++; break; } } printf(“%d”,m);}程序运行后的输出结果是( )。
答案: 3
12、 有以下程序#include <stdio.h>void main( ){ int a=5,b=4,c=3,d=2; if(a>b && b>c) printf(“%d”,d); else if(c-1>=d) printf(“%d”,d+1); else printf(“%d”,d+2);}执行后输出结果是( ) 。
答案: 2
13、 有以下程序#include <stdio.h>void main( ){ int a=3,b=4,c=5,d=2; if(a<b) { if(b>c) printf(“%d “,d++ +1); else printf(“%d “,++d +1); } printf(“%d”,d);} 程序运行后的输出结果是( )。
答案: 4 3
14、 有以下程序#include <stdio.h>void main( ){ int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d”,s);}程序运行后的输出结果是( )。
答案: 数1~10中的偶数之和
15、 以下程序段的输出结果是( )。 int x=3; do { printf(“%3d”,x-=2); } while(!(–x));
答案: 1 -2
16、 以下程序中,while循环的循环次数是( )。#include <stdio.h>void main( ){ int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; }……}
答案: 死循环,不能确定次数
17、 有以下程序#include <stdio.h>void main( ){ int a = 12, b = -34, c = -56, min; min = a; if(min > b) min = b; if(min > c) min = c; printf(“min = %d”, min);}输出结果是( )。
答案: min = -56
18、 有以下程序#include <stdio.h>void main( ){ int a ; scanf(“%d”,&a); if(a >= 0) { if( a % 2 ==0) printf(“%d is a positive even number.”, a); else printf(“%d is a positive odd number.”, a); } else { if( a % 2 ==0) printf(“%d is a negative even number.”, a); else printf(“%d is a negative odd number.”, a); }}若通过键盘输入-11,则运行结果是( )。
答案: -11 is a negative odd number.
19、 有以下程序#include <stdio.h>void main( ){ char c ; while(( c = getchar( )) != ‘$’) { if(‘A’ <= c && c <= ‘Z’) putchar(c + 32); else if(‘a’ <= c && c <= ‘z’) putchar(c); }}当输入为abc&%ABC#!$时,运行结果是( )。
答案: abcabc
20、 输入一个字符,判断该字符是数字、字母、空格还是其它字符。请选择正确的答案填空 ( )。#include <stdio.h>void main( ){ char c ; c = getchar( ); if(____) printf(“It is an ENGLISH character.”); else if(‘0’ <= c && c <= ‘9’) printf(“It is a DIGITAL character.”); else if(c == 32) printf(“It is a SPACE character.”); else printf(“It is other character.”);}当输入为abc*&%ABC#!$时,运行结果是( )。
答案: (‘A’ <= c && c <= ‘Z’) || (‘a’ <= c && c <= ‘z’)
21、 程序读入10个整数,统计其中非负数的个数,并计算非负数之和。请选择正确的答案填空 ( )。#include <stdio.h>void main( ){ int i, a, s = 0, count = 0 ; for(i = 0; i < 10; i ++) { scanf(“%d”,&a); if( a < 0) continue; ________ } printf(“s = %d \t count = %d “, s,count);}
答案: s+=a; count++;
22、 C语言程序的结构和版式是没有任何规律的;
答案: 错误
23、 初学者编写C语言的程序不需要养成加注释的习惯;
答案: 错误
24、 使用复合语句便于程序的结构化;
答案: 正确
25、 结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。
答案: 正确
26、 break语句的功能只是用于退出循环;
答案: 错误
27、 C语言中一般情况下不推荐使用goto 语句;
答案: 正确
28、 switch多分支选择语句的功能可以用条件分支嵌套语句来实现
答案: 正确
29、 空语句就是程序中没有什么作用的语句;
答案: 错误
30、 while循环和for循环可以相互替代;
答案: 正确
31、 在一些特定的应用中,用switch多分支选择语句代替条件分支嵌套语句可以提高程序的可读性。
答案: 正确
第四周:C程序及流程控制(2) 第四周单元测验
1、 如下程序,求序列:1、3、5、7…….的前20项之和,请选择正确的答案填空( )。#include<stdio.h> void main( ) { int i; int sum, t ; //sum代表和, t代表某项 sum = 0 ; t = 1 ; for (i=1 ; _____ ; i++) { sum + = t; t += 2; } printf(” sum = %d”,sum);}
答案: i<=20
2、 计算2+4+6+8+……+100的值,请选择正确的答案填空( )。#include<stdio.h> void main( ) { int i; int s, t ; //s代表和, t代表某项 s = 0 ; t = 2 ; for (i=1 ; i <= 50 ; i++) { _______; t += 2; } printf(” sum = %d”,s);}
答案: s =s +t
3、 如下程序,求序列:1!, 2!, 3!, 4!………..的前八项之和.请选择正确的答案填空 ( )。#include<stdio.h>void main( ){ int i; ____ ; //sum代表和, t代表某项 sum = 0 ; t = 1 ; for (i=1;i<=8;i++) { sum += t; t *= (i+1); } printf(” sum = %ld”,sum);}
答案: long sum,t
4、 求序列:2!+3!+4!+5!+……+11!的值.请选择正确的答案填空( )。#include<stdio.h>void main( ){ int i; long sum,t ; //sum代表和, t代表某项 sum = 0 ; t = 2 ; for (i=1;i<=10;i++) { sum + = t; _____; } printf(“sum = %ld”,sum);}
答案: t *=(i+2)
5、 编一程序,求100-999之间所有的水仙花数, 所谓水仙花数就是说数的百位。十位和个位数的立方和恰好等于它本身。请选择正确的答案填空 ( )。#include<stdio.h>void main( ) { int i,a,b,c; for (_____) { a = i/100 ; //求百位数 b =( i- a100)/10; //求十位数 c = i%10; //求个位数 if( aaa + bbb +cc*c == i) { printf(” %6d”, i ); } } }
答案: i =100 ; i<=999 ; i++
6、 有以下程序#include <stdio.h>void main( ) { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue; } a-=3; } printf(“%d”,b); }程序运行后的输出结果是( )。
答案: 4
7、 有以下程序#include <stdio.h>void main( ){ int i; for(i=0;i<3;i++) { switch(i) { case 1: printf(“%3d”,i); case 2: printf(“%3d”,i); default: printf(“%3d”,i); } } }执行后输出结果是( )。
答案: 0 1 1 1 2 2
8、 下面程序的输出是( )。#include <stdio.h>void main( ){ int y=9; for( ; y>0 ; y–) { if(y%3==0) { printf(“%3d”,–y); continue; } }}
答案: 8 5 2
9、 有以下程序#include <stdio.h>void main( ){ int x,i; for(i=1;i<=50;i++) { x=i; if(++x%2==0) if(x%3==0) if(x%7==0) printf(“%d”,i); }}输出结果是( )。
答案: 41
10、 以下程序为求序列:1/2、3/4、5/8、7/16、9/32、……所有大于或等于0.000001的数据项之和。请选择正确的答案填空( )。#include<stdio.h>void main( ){ float sum, a , b ; //sum代表和, a代表分子, b代表分母 sum = 0.0 ; a = 1; //分子赋初值 b = 2 ; //分母赋初值 while (a / b >=1e-6) { _____; a = a + 2; //求下一项分子 b = b * 2; //求下一项分母 } printf(“sum = %f”,sum);}
答案: sum += (a / b)
11、 已知abc + cba = 1333,a, b, c,为一位数,以下程序为求所有可能的a, b, c的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ) { int i,a,b,c; for (i =100 ; i<=999 ; i++) { a = i/100 ; //求百位数 b =( i- a100)/10; //求十位数 c = i%10; //求个位数 if( _____) { printf(” a=%d,b=%d,c=%d”,a,b,c ); } } }
答案: (a100+b10+c+c100+b10+a)==1333
12、 以下程序为求两个正整数的最大公约数的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ) { int i, a, b; scanf(“%d%d”,&a,&b); for (_____ ; i > 0 ; i –) { if( (a % i == 0) && (b % i == 0)) { printf(” the max = %d “, i ) ; break ; } } }
答案: i = (a<b ? a : b)
13、 以下程序为判断一个正整数是否为素数的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ) { int i, a ; scanf(“%d”,&a); for (i = 2 ; i < a ; i ++) { if(____) { break ; } } if(i >= a) { printf(“%d is a sushu.”,a); } else { printf(“%d is not a sushu.”,a); } }
答案: a % i == 0
14、 用100元钱买100只鸡,其中母鸡每只3元,公鸡每只2元,小鸡1元3只,且每种鸡至少买1只。以下程序为计算百钱买百鸡所有可能购买方案的程序。请选择正确的答案填空( )。#include<stdio.h>void main( ){ int a, b, c; //a,b,c分别代表母鸡、公鸡和小鸡数 for (a = 1 ; a <= 98 ; a ++) { for (b = 1 ; b <= 98 ; b ++) { for (c = 1 ; c <= 98 ; c ++) { if(_________) { printf(“muji : %d, gongji: %d, xiaoji: %d”,a,b,c); } } } }}
答案: (a+b+c==100) && (a3+b2+c/3 ==100) && (c %3 ==0)
15、 计算1!, 2!, 3!, ……,10! 的值,并输出结果。请选择正确的答案填空( )。#include<stdio.h>void main( ){ int i; long int s =1 ; //s代表阶乘的结果 for (i=1;i<=10;i++) { ____; printf(“%d! = %ld”, i, s); }}
答案: s *= i
16、 for循环语句中的三个表达式起着不同的作用,表达式1一般用于进入循环前给某些变量赋初值;
答案: 正确
17、 在for循环语句中,表达式1、表达式2和表达式3都是逗号运算表达式;
答案: 错误
18、 在C语言编程中应该尽量少用空格或者空行;
答案: 错误
19、 在C语言编程中,如果出现嵌套的大括弧对{ },使用缩进对齐的格式能增强程序的可读性;
答案: 正确
20、 C语言的辅助控制语句包括break,continue、return和goto语句;
答案: 正确
21、 C语言编程中,不提倡把多个语句写在一行中,提倡一行只写一条语句;
答案: 正确
22、 在C语言编程时,要养成修改代码同时修改相应注释的习惯,以保证注释与代码的一致性。
答案: 正确
23、 在C语言编程中,相对独立的程序块之间、变量说明之后加上空行可以增加程序的可读性。
答案: 正确
第五周:函数(1) 第五周单元测试
1、 下列关于C语言程序的结构化设计,说法错误的是( )
答案: 只有一个源文件,对函数大小没有限制
2、 定义函数void fun()函数,函数的返回值类型为()
答案: 函数无返回值
3、 下面关于函数描述正确的是()
答案: 函数的定义不可以嵌套,但是调用可以嵌套
4、 若定义函数时函数的返回类型缺省,则函数的默认数据类型为()
答案: int
5、 一个函数返回值的类型是由( )决定的
答案: 定义函数时指定的函数数据类型
6、 下面叙述中正确的是( )
答案: 对于用户自己定义的函数,在使用前必须加以说明
7、 函数的形参可以是()
答案: 局部自动变量
8、 有如下定义的函数:func(int a){ printf(“%d”,a);}则该函数的返回值类型是()
答案: int类型
9、 函数内部的局部静态变量,下列说法正确的是( )
答案: 在函数退出后不被释放,程序执行结束释放
10、 局部自动变量,下列说法正确的是()
答案: 进入函数分配内存,退出函数,释放内存
11、 下列说法不正确的是( )
答案: 全局静态变量和局部静态变量,作用域和寿命相同
12、 下面程序段运行的结果为()#include <stdio.h>int f();int f() { static int i=0; int s=1; s+=i; i++; return s; } void main() { int i,a=0; for(i=0;i<5;i++) a+=f(); printf(“%d”,a); }
答案: 15
13、 下面程序段运行的结果为( )#include <stdio.h>int try1( );int try1( ){ static int x=3; x++; return x;}void main(){ int i,x; for(i=0; i<=2; i++) x=try1( ); printf(“%d”, x);}
答案: 6
14、 下面程序的运算结果为( )#include <stdio.h>void fun();int main(){ int a=10; fun(); printf(“%3d”,a); return 0;}void fun(){ int a=20; printf(“%3d”,a);}
答案: 20 10
15、 以下正确的函数形式是( )
答案: int fun(int x,int y){ double z; z=x+y; return z;}
16、 以下程序的输出结果是()#include <stdio.h>int i=10;int func();void main(){ int j=1; j=func(); printf(“%3d”,j); j=func(); printf(“%3d”,j);}int func(){ int k=0; k=k+i; i=i+10; return k;}
答案: 10 20
17、 函数内定义的局部变量可以在函数运行结束后继续被调用
答案: 错误
18、 变量根据其作用域的范围可以分作局部变量和全局变量
答案: 正确
19、 当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区
答案: 错误
20、 在一个函数内定义的静态局部变量不能被另外一个函数所调用
答案: 正确
21、 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5
答案: 错误
22、 变量被定义后,它的作用域和寿命就被确定了,并且不可改变。
答案: 正确
23、 在同一个作用域不可定义同名变量,在不同的作用域可以定义同名变量
答案: 正确
24、 函数内部的静态变量,在函数退出后不被释放
答案: 正确
25、 C语言中函数返回值的类型由return语句中的表达式的类型决定
答案: 错误
26、 C语言中一般全局变量与静态全局变量生存期不同
答案: 错误
27、 程序进行编译时,不为形式参数分配存储空间
答案: 正确
28、 编译器根据函数的原型来检查函数的调用正确与否
答案: 正确
第六周:函数(2) 第六周单元测验
1、 下列说法中正确的是()
答案: 函数原型是一条语句,不包括函数体
2、 在调用函数时,如果实参是整型变量,它与对应形参之间的数据传递方式是()
答案: 单向值传递
3、 若定义函数float *fun( ),则函数fun的返回值为( )
答案: 一个指向变量的指针
4、 C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( )
答案: 同名的局部变量
5、 以下结论中只有( )是正确的
答案: 所有的递归程序均可以采用非递归算法实现
6、 main()函数的数据类型,可以是( )
答案: void
7、 下面程序段运行的结果为( )#include <stdio.h>int fun(float x,float y);int fun(float x,float y){ return x > y ? x : y;}void main(){ printf(“%d,%d”,fun(3,5),fun(4.8,4.6));}
答案: 5,4
8、 下面程序的运算结果为( )#include <stdio.h>int fun(int n);int fun(int n){ if(n == 1 || n == 2) return 1; return fun(n-1)+fun(n-2);}void main(){ printf(“%d”,fun(6));}
答案: 8
9、 以下程序运行结果是( )#include <stdio.h>void f(int a, int b);void f(int a, int b){ int t; t = a; a = b; b = t;}void main(){ int x = 3, y = 2, z = 1; if (x > y) f(x, y); if (y > z) f(y, z); if (x > y) f(x, y); printf(“%d, %d, %d”, x, y, z);}
答案: 3, 2, 1
10、 以下程序的输出结果是( )#include <stdio.h>int func(int s);void main( ){ int i,x=0; for(i=0;i<4;i++) { x=func(i+1); printf(“%3d”,x); } printf(“”);}int func(int s){ int x; static int t=3; x=s+t; t++; return x;}
答案: 4 6 8 10
11、 以下程序的执行结果是()#include <stdio.h>int swap(int a,int b);void main(){ int a,b; a=3,b=10; swap(a,b); printf(“a=%d,b=%d”,a,b); }int swap(int a,int b){ int temp; temp=a; a=b; b=temp; return 0;}
答案: a=3,b=10
12、 以下程序的执行结果是()#include <stdio.h>int sum(int k);void main(){ int s,i; for(i=1;i<=10;i++) s=sum(i); printf(“s=%d”,s);}int sum(int k){ int x=0; return (x+=k); }
答案: s=10
13、 以下程序的执行结果是()#include <stdio.h>int func(int );void main(){ int a=1,i; for(i=0;i<4;i++) { printf(“%3d”,func(a+i)); }}int func(int b){ static int i; return b+i;}
答案: 1 2 3 4
14、 以下程序的执行结果是()#include <stdio.h>int multi(int x,int y);void main(){ int a,b,c; a=10,b=12; c=mult(a,b); printf(“%d%d=%d”,a,b,c);}int multi(int x,int y){ return xy;}
答案: 1012=120
15、 以下程序的执行结果是()#include <stdio.h>int n;void func();void main(){ static int x=6; int y; y=n; func(); printf(“x=%d,y=%d,n=%d”,x,y,n);}void func(){ static int x; int y=10; x=x+20; n=n+2; y=y+n;}
答案: x=6,y=0,n=2
16、 C语言中,函数调用时,形参与实参的个数可以不必保持一致
答案: 错误
17、 C语言函数间使用值传递数据时,对形参进行写操作,会影响主调函数里相关变量的值
答案: 错误
18、 C语言中,一个函数可以有多个返回值
答案: 错误
19、 C语言函数间使用传址方式传递数据时,对形参进行写操作,可以影响主调函数里相关变量的值
答案: 正确
20、 C语言中,使用全局变量可以使程序设计简单,移植性好
答案: 错误
21、 函数的递归调用是一个函数直接或间接地调用它自身
答案: 正确
第七周:数组(1) 第七周单元测验
1、 下列一维数组定义正确的是( )
答案: int a[3];
2、 下列一维数组定义与初始化错误的是( )
答案: int a[3] = 0;
3、 下列二维数组定义和初始化错误的是( )
答案: int a[3][];
4、 在下列语句条件下,二维数组的定义和初始化错误的是( )#define SIZE 9
答案: int a[][SIZE];
5、 假定int型变量在内存中占2个字节,那么二维数组int a[3][4]所占的字节数为 ( )
答案: 24
6、 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为 ( )
答案: 3
7、 下列关于数组概念的描述中,错误的是( )
答案: 数组定义后,它的元素个数是可以改变的
8、 已知double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; dd[2][2]的值为( )
答案: 0.0
9、 若有定义语句:int m[][3]={1,2,3,4,5,6,7};,则与该语句等价的是( )
答案: int m[][3]={{1,2,3},{4,5,6},{7}};
10、 程序填空。程序功能:求矩阵的最小值,并记录最小值的行列号。#include <stdio.h>void main(){ int i, j, min; int row=0,column=0; int a[3][3]={{1,2,3},{2,-3,4},{9,4,7}}; min=a[0][0]; for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(_____) { min=a[i][j]; row=i+1; column=j+1; } } } printf(“min=%d,row=%d,column=%d”,min,row,column);}程序中空白处所填语句正确的为( )
答案: min>a[i][j]
11、 若有定义语句int a[10]; 以下叙述中正确的是( )
答案: a[0]是合法的数组元素,a[10]不是合法的数组元素
12、 下列有一行是错误的(每行程序前的数字表示行号),程序有错误的行数是( )1 include <stdio.h>2 void main( )3 {4 int a[3] = {2*3};5 int i, sum=0;6 for( i=0; i<3; i++ )7 {8 scanf(“%d”, a[i]);9 sum += a[i];10 }11 printf( “%d”, sum );12 }
答案: 第8行有错误
13、 若有以下数组说明,则a[a[i]]元素数值是( )。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}, int i=10;
答案: 6
14、 以下叙述中正确的是( )
答案: 语句int a[8]={0};是合法的
15、 程序填空。程序功能:计算两个矩阵的乘积。#include <stdio.h>void main(){ int valueA[3][4]={{2,3,-5,0},{12,-1,2,8},{1,12,-2,1}}; int valueB[4][5]={{5,13,0,1,5},{-2,0,4,1,5},{5,3,2,1,0},{0,1,2,0,1}}; int valueC[3][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; int i,j,k; for(i=0; i<3; i++) for(j=0; j<5; j++) for(k=0; k<4;k++) ______; for(i=0;i<3;i++) { printf(“”); for(j=0;j<5;j++) printf(“%5d”,valueC[i][j]); }}程序中空白处所填语句正确的为( )
答案: valueC[i][j] += valueA[i][k] * valueB[k][j]
16、 一维数组在内存中的存储空间是连续的;二维数组在存储中的存储空间每一行是连续,不同行之间则不连续。
答案: 错误
17、 数组可以动态指定大小。
答案: 错误
18、 数组初始化时可以仅初始化部分元素的值。
答案: 正确
19、 数组所占的元素取决于数组的大小,如果数组大小为N,则在该数组所占内存大小为N个字节。
答案: 错误
20、 同一个数组可以存放不同数据类型的数值。
答案: 错误
21、 二维数组初始化语句”int a[2][2] = {{0},{2}};” 是正确的。
答案: 正确
,
第八周:数组(2) 第八周单元测验
1、 下列程序的输出结果为( )。#include<stdio.h>void main(){ int a[5] = {1, 3, 5}; int i, sum = 0; for (i = 0; i < 5; i++) { sum += a[i]; } printf (“sum = %d”, sum); }
答案: sum = 9
2、 下列程序的输出结果为( )。#include<stdio.h>void main() { int a[5] = {1,2,3,4,5}; int i,j,temp; for (i = 0, j = 4; i < j; i++, j–) { temp = a[i]; a[i] = a[j]; a[j] = temp; } for (i = 0; i < 5; i++) printf (“%d”, a[i]);}
答案: 54321
3、 下列程序的输出结果为( )。#include <stdio.h>void main(){ int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; int i, j, sum = 0; for (i = 0; i < 3; i++) { sum += a[i][i]; } printf (“sum = %d”, sum); }
答案: sum = 15
4、 下列程序的输出结果为( )。#include <stdio.h>void main(){ int k=3, s[2]={0}; s[0]=k; k=s[0]s[1]10; printf (“%d”, k); }
答案: 0
5、 利用选择排序(边比较边交换)算法对一个大小为N的一维数组进行排序,外循环需要()次操作。
答案: N-1
6、 利用冒泡排序算法对一个大小为N的一维数组进行排序,在第M轮外循环中(M从1开始),内循环需要( )次比较操作。
答案: N-M
7、 有下列一组数据,现利用选择排序(边比较边交换)算法对其进行从小到大排序,在排序的过程中需要( )次交换。3 5 8 2
答案: 3
8、 有下列一组数据,现利用冒泡排序算法对其进行从大到小排序,在排序的过程中需要()次交换。3 5 8 2
答案: 3
9、 程序填空。程序功能:将一组整数从大到小排序。#include <stdio.h>#define N 5void main( ){ int i, j, temp, score[N] = {12,4,25,8,3}; for ( i=0 ;_____;i++) { for (j=i+1; j<N; j++) { if(score[i] < score[j]) { temp = score[i]; score[i] = score[j]; score[j] = temp; } } } for ( i=0;i<N;i++) printf(“%d\t”, score[i]);}上面程序代码中空白处所填语句正确的为( )
答案: i<N-1
10、 程序填空。程序功能:将一组整数从大到小排序。#include <stdio.h>#define N 5void main( ){ int i, j, temp, score[N] = {12,4,25,8,3}; for ( i=0 ;i<N-1;i++) { for (j=i+1;____; j++) { if(score[i] < score[j]) { temp = score[i]; score[i] = score[j]; score[j] = temp; } } } for ( i=0;i<N;i++) printf(“%d\t”, score[i]);}上面程序代码中空白处所填语句正确的为( )
答案: j<N
11、 下列程序的输出结果为( )。#include <stdio.h>void main(){ int i, j, min; int x = 0, y= 0; int a[3][3] = { {1, 2, 3}, {2, -3, 4},{7, 4, 7} }; min = a[0][0]; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (a[i][j] >= min) { min = a[i][j]; x = i+1; y = j+1; } } } printf(“min=%d at (x,y):(%d,%d)”, min, x, y);}
答案: min=7 at (x,y):(3,3)
12、 有下列一组数据(3 5 8 2),现利用选择排序(边比较边交换)算法对其进行从小到大排序,第二轮排序(i=1)结束之后数组中的值为()。
答案: 2 3 8 5
13、 有下列一组数据(3 5 8 2),现利用冒泡排序算法对其进行从小到大排序,第二轮排序(i=1)结束之后数组中的值为()。
答案: 3 2 5 8
14、 下列程序的输出结果为( )。#include <stdio.h>#define N 4void print(int a[], int n);void InsertSort(int a[], int n);void print(int a[], int n){ int j; for(j=0; j<n; j++) { printf(“%d”,a[j]); } printf(“”);}void InsertSort(int a[], int n){ int i; for(i= 1; i<n; i++) { if(a[i] < a[i-1]) { int j= i-1; int x = a[i]; while(j>-1 && x < a[j]) { a[j+1] = a[j]; j–; } a[j+1] = x; } }} int main(){ int a[N] = {3,1,7,5}; InsertSort(a,N); print(a,N); return 0;}
答案: 1357
15、 下列程序的输出结果为( )。#include <stdio.h>void main( ){ int a[] = {1, 2, 3, 4, 5}, i; for(i=1; i<5; i++) { printf(“%d”, a[i]-a[i-1]); }}
答案: 1111
第九周:指针(1) 第九周单元测验
1、 在“int a = 3, p = &a ; ”语句中,p的值为( )。
答案: 3
2、 下面关于指针的运算中,描述( )是错误的。
答案: 两个指针在一定的条件下可以相加
3、 若有下面语句“int i , a[5] ; int p ; p=a; ”,则( )是对数组元素的错误表示。
答案: p+i
4、 将二维数组名作为主调函数传入的实参,则被调函数的形参可以是( )。
答案: 一维数组指针
5、 下面程序的运算结果为( )。#include <stdio.h>void swap(char px,char py);void swap(char px,char py){ int t; t=px; px=py; py=t;}void main( ){ char a=3,b=5; swap(&a,&b); printf(“%d,%d”,a, b);}
答案: 5,3
6、 下面程序的运算结果为( )。#include <stdio.h>int fun(int n);int fun(int n){ static int i, a; for( i=0; i<n ; i++ ) { a = a + i+1; } return &a;}void main( ){ int p; p = fun(3); printf(“%d”,p);}
答案: 6
7、 下面程序段运行的结果为( )。#include <stdio.h>int fun(int px, int py);int fun(int px, int py){ return (px > py? px : py);}void main( ){ int a=3,b=5; printf(“%d-%d”,fun(&a,&b),fun(&b,&a));}
答案: 5-5
8、 有以下C语言程序语句: int a[10] = {1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; 运行后 b中的值是:( )。
答案: 9
9、 有如下C语言程序段的输出结果为:( )。 int arr[]={6,7,8,9}; int ptr; ptr=arr; (ptr+2)+=2; Printf(“%d,%d”,ptr, (ptr+2));
答案: 6,10
10、 设已有定义:int a[10] = {15,12,7,31,47,20,16,28,13,19}, p;下列语句中正确的是:( )。
答案: for(p=a; p<(a+10); p++){ printf(“%d\t”,p);}
11、 若有定义:int x[5], *p=x;,则不能代表x数组首地址的是:( )。
答案: &x
12、 若有定义:int x[10], p=x;,则(p+5)表示:( )。
答案: 数组元素x[5]的值
13、 下面程序的运行结果是: ( )。#include <stdio.h>void main( ){ int a[5]={1,2,3,4,5}; int p =a; printf(“%d-%d”,p, *(p+4));}
答案: 1-5
14、 将数组名作为函数传入的实参,则形参接收到的是( )。
答案: 数组的首地址
15、 若定义函数float *fun( ),则函数fun的返回值为( )。
答案: 一个指向变量的指针
16、 若main( )函数带参数,参数个数最多是( )。
答案: 2
17、 以下程序运行结果是( )。#include <stdio.h>void f(int a, int b);void f(int a, int b){ int t; t = a; a = b; b = t;}void main( ){ int x = 3, y = 2, z = 1; if (x > y) f(&x, &y); if (y > z) f(&y, &z); if (x > y) f(&x, &y); printf(“%d, %d, %d”, x, y, z);}
答案: 1, 2, 3
18、 以下程序的输出结果是( )。#include <stdio.h>int func(int s);void main ( ){ int a[ ]={1,2,3,4},i,x=0; for(i=0;i<4;i++) { x=func(a[i]); printf(“%d-“,x); } printf(“”);}int func(int s){ int x; static int t=3; x=s+t; t++; return x;}
答案: 4-6-8-10-
19、 以下程序的执行结果是( )。#include <stdio.h>void func(int b,int n);void main( ){ int a[ ]={5,6,7,8}; func(a,4); for(i=0;i<4;i++) printf(“%3d”,a[i]);}void func(int b,int n){ int i; for(i=0;i<n;i++) b[i]=2*i;}
答案: 0 2 4 6
20、 指针变量和C语言的其它变量不一样,它没有数据类型和存储类型;
答案: 错误
21、 指针常量和普通的整型常量一样,它是一个整型值;
答案: 错误
22、 在C语言编程中应该尽量使用数组,少使用指针;
答案: 错误
23、 变量的地址是指针常量;
答案: 正确
24、 空指针就是没有什么作用的指针;
答案: 错误
25、 C语言的指针可以进行关系运算;
答案: 正确
26、 C语言的指针可以进行任意算术运算;
答案: 错误
27、 2个C语言的指针不能进行加法运算,加法运算没有意义。
答案: 正确
28、 2个相同类型的C语言指针,如果它们指向同一片连续的存储空间,如数组,则他们各自可以进行自加或者自减运算;之间也可以进行减法运算;
答案: 正确
29、 在C语言的指针中,无论是变量还是常量,可以是一级也可以是多级的。
答案: 正确
30、 数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值。
答案: 错误
31、 调用函数时,如果实参是数组名,它与对应形参之间的数据传递方式是地址传递。
答案: 正确
32、 C程序的main函数可以有参数,但参数不能是指针类型。
答案: 错误
第十周:指针(2) 第十周测验题
1、 下面语句( )是错误的。
答案: int a[10], *p; p = a++;
2、 对于语句”int *p[5] ;”,下面的描述( )是正确的
答案: p是一个具有5个元素的指针数组,每一个元素是一个 int 型指针
3、 如有下面语句”void *fun(int) ;”声明的函数,则函数返回值是( )
答案: 地址
4、 关于指针型函数,哪种说法( )是正确的。
答案: 函数的返回值是地址
5、 C语言程序中,如果指针变量做函数的形参,则当函数调用时( )是正确的说法。
答案: 实参和形参都应该具有相同的数据类型
6、 关于函数指针变量,下面叙述中正确的是( )。
答案: 定义的指针变量,用于存放函数的入口地址
7、 若函数的形参为一维数组指针,则下列说法中正确的是( )。
答案: 调用函数时对应实参一般为对应的二维数组名
8、 关于指针变量的存储类型,下面哪种说法是正确的( )。
答案: 其它选项的类型均有可能
9、 关于二级指针,以下说法正确的是( )。
答案: 二级指针指向的目标对象是一级指针
10、 对于存储类型缺省的局部指针变量,则其存储类型为( )。
答案: auto型
11、 在调用指针型函数时,如果被调函数的形参是指针变量,则主调和被调函数之间的的数据传递方式是:( )。
答案: 地址值传递,返回值也是地址值
12、 下面程序的输出结果为( )。#include <stdio.h>int main(){ int a[5][2] = {{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} }; int p[5]={a[0],a[1],a[2],a[3],a[4]} ; printf(“%d-“, (p+1)); printf(“%d”, (*p+1)); return 0;}
答案: 2-1
13、 下面程序的输出结果为( )#include <stdio.h>int main(){ int a[2][3] = {{1, 2, 3}, {4, 5, 6} }; int m, p[2] ={ a[1],a[0]}; printf(“%d-“, p[0][0]); printf(“%d-“, ((p+1))); printf(“%d”, (*p+1)); return 0;}
答案: 4-1-5
14、 下面程序运行的结果为( ) #include <stdio.h> int fun(int px, int py); int fun(int px, int py){ return (px > py? px : py);}void main( ){ int a=5,b=8; int p1=fun(&a,&b),p2=fun(&b,&a); printf(“%d-%d”, p1 , p2 );}
答案: 8-8
15、 如下程序的输出结果如下( )#include <stdio.h>void main( ){ int a[5][2] = {{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} }; int p[]={a[0],a[1],a[2],a[3],a[4]}; int pp[] ={p+4 , p+3 , p+2 , p+1 , p}; int ppp = pp ; printf(“%d—”, ++ppp); printf(“—%d—”, pp[2]); printf(“—%d”, —++ppp+1);}
答案: 6——4——3
16、 下面程序的输出结果为( )。#include <stdio.h>int main( ){ int a[2][3] = {{1, 2, 3}, {4, 5, 6} }; int m, (p)[3] = a+1; printf(“%d-“, p[0][0]); printf(“%d-“, ((p-1))); printf(“%d”, (*p-1)); return 0;}
答案: 4-1-3
17、 下面程序的输出结果为( )。#include <stdio.h>int main( ){ int a[5][2] = {{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} }; int p = a[0]; int (p2)[2] = a; ++p; ++p2; printf(“%d-“, p); printf(“%d-“, *p2); printf(“%d”, p2[1][1]); return 0;}
答案: 1-2-5
18、 int *p, pa[5]; p = pa ;
答案: 正确
19、 int *p, (pa)[5], a[5][5]; p=pa=a ;
答案: 错误
20、 char *str[5]; scanf(“%s”,str[0]);
答案: 错误
21、 int x, p =&x , a[5][5];p = a[0][0];
答案: 正确
22、 float a[10]; int *p=a;
答案: 错误
23、 char *p=”hust66″; gets(p);
答案: 错误
24、 char str[]=”hust66″; printf(“%c”,*(str+2));
答案: 正确
25、 float a=1, b=&a, *c=b;
答案: 错误
26、 float p,a[2][3]; p=a + 2;
答案: 正确
27、 int *p,a[3][4]; p=a;
答案: 错误
第十一周:字符串(1) 第十一周测验题
1、 下面程序的运行结果是:#include <stdio.h>void main( ){ char s=”hello”; s++; printf(“%d”,s);}
答案: 101
2、 若有语句char s1=”abcd”, s2=”abcd”;则下列描述不正确的是:
答案: s1与s2是完全相同的指针
3、 若有语句char string[20];则此数组存储字符串的最大长度是:
答案: 19
4、 下面程序的运行结果是:#include <stdio.h>void main( ){ char s[]=”ABCD”,*p; for(p=s+1;p<s+4;p++) printf(“%s”,p);}
答案: BCDCDD
5、 下述哪个库函数可以将字符串转换为整数:
答案: int atoi(char nPtr)
6、 下列能正确定义字符串的语句是:
答案: char str[]=”\0″;
7、 下列字符数组长度为5的是:
答案: char c[]={‘h’,’a’,’b’,’c’,’\0’};
8、 以下关于字符串的叙述中正确的是:
答案: 空串不是空格字符串
9、 定义了字符串char str[10] = “stronger”; 下面叙述正确的是:
答案: 通过printf(“%s”,str);输出这个字符串
10、 下面程序的功能是:#include<stdio.h>void main(){ char ch[80]=”123abcdEFG*&”; int j; long s=0; puts(ch); for(j=0;ch[j]>’\0′;j++) { if(ch[j]>=’A’&&ch[j]<=’Z’) ch[j]=ch[j]+’e’-‘E’; } puts(ch); }
答案: 将字符数组 ch 中的大写字母转换成小写
11、 已知 char x[]=”hello”, y[]={‘h’,’e’,’a’,’b’,’e’}; 则关于两个数组长度的正确描述是:
答案: x 大于 y
12、 下面各语句中,能正确进行字符串赋值操作的语句是:
答案: char *s=”ABCDE”;
13、 已知:char a[] = “program”;char p = a+1;则执行以下语句,不会输出字符a的是:
答案: putchar(*p+4);
14、 已知:char s[20] = “programming”, ps = s; 则不能读取字符串中第3个字符的表达式是:
答案: ps+2
15、 已知:char c[8] = “beijing”, s = c; int i;则下面的输出语句中,错误的是:
答案: printf(“%s”, *s);
16、 已知:char s[100];int i=10;则在下列引用数组元素的语句中,错误的表示形式是:
答案: ((s++)+i)
17、 以下程序的运行结果是: #include <stdio.h>void abc(char p);void main() { char str[]=”morning”; abc(str); puts(str);}void abc(char p){ int i, j; for(i=j=0; (p+i)!=’\0′; i++) { if((p+i)<‘n’) { (p+j)=(p+i); j++; } } *(p+j)=’\0′;}
答案: mig
18、 以下程序的运行结果是: #include <stdio.h>void main( ){ char p=”hello”, s = “world”; p=p+2; s++; printf(“%s-%s”,p, s);}
答案: llo-orld
19、 字符串是由字符组成的,只能包含英文字母。
答案: 错误
20、 char string[5]可以用来存放”abcde”字符串。
答案: 错误
21、 在字符指针初始化时,可以直接用字符串常量作为初始值。
答案: 正确
22、 在初始化或程序中向指针赋予字符串,相当于把该字符串复制到指针指向的地址中。
答案: 错误
23、 使用C语言库函数的gets函数输入字符串时,字符串可以包含空格。
答案: 正确
第十二周:字符串(2) 第十二周测验题
1、 下面函数的功能是:int fun(char s,char t){ while( (s) && (t) && (t++ == s++) ); return(s-t); }
答案: 比较两个字符串的大小
2、 下面函数是输出两个字符串中对应字符相等的字符。请选择正确的选项进行填空: void fun(){ char x[]=”programming”; char y[]=”Fortran”; int i=0; while(x[i]!=’\0′ && y[i]!=’\0′) { if(x[i]==y[i]) printf(“%c”,_); else i++; } }
答案: x[i++]
3、 以下程序运行结果是: #include <stdio.h>void swap(char x, char y);void main(){ char s1[] = “abc”, s2[]=”123″; swap(s1,s2); printf(“%s,%s”,s1,s2);}void swap(char x, char y){ char t; t = x; x = y; y = t;}
答案: 1bc,a23
4、 以下程序运行结果是:#include <stdio.h> #include <string.h> void main() { char str[ ] = “ABCDEFG”; char p1, p2; p1 = “abcd”; p2 = “efgh”; strcpy (str+1, p2+1); strcpy (str+3, p1+3); printf(“%s”, str);}
答案: Afgd
5、 定义compare(char s1, char s2)函数,以实现比较两个字符串大小的功能。以下程序运行结果为-32,选择正确答案填空:#include <stdio.h>int compare(char s1, char s2);void main(){ printf(“%d”, compare(“abCd”, “abc”));}int compare(char s1, char s2){ while(s1&&s2&&_____) { s1++; s2++; } return s1-s2;}
答案: s1==s2
6、 下列可以实现两个字符串之间比较的库函数是:
答案: int strcmp(char s1 ,char s2)
7、 下面描述正确的是:
答案: 字符串”That”小于字符串”The”
8、 判断字符串a和b是否相等,应使用:
答案: if(strcmp(a,b)==0)
9、 以下正确的叙述是:
答案: 当main函数带有形参时,传给形参的值只能从命令行中得到
10、 在一个C语言程序中,下面叙述正确的是:
答案: main函数可以有参数
11、 设有定义:char *cc[2]={“1234″,”5678”};则正确的叙述是:
答案: cc数组的两个元素中各自存放了字符串”1234″和”5678″的首地址
12、 设有定义: char p[]={“Shanghai”,”Beijing”,”Hongkong”}; 则结果为’j’字符的表达式是:
答案: *(p[1]+3)
13、 下面程序执行后的输出结果是:#include <stdio.h> #include <string.h> void main( ){ char arr[2][4]; strcpy(arr[0],”you”); strcpy(arr[1],”me”); arr[0][3]=’&’; printf(“%s”,arr);}
答案: you&me
14、 下面程序的输出是: #include <stdio.h>#include <string.h>void main(){ char p1[10]=”abc”,*p2=”ABC”,str[50]=”abc”; strcpy(str+2,strcat(p1,p2)); printf(“%s”,str);}
答案: ababcABC
15、 以下程序中,函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#include <stdio.h>#include <string.h>char scmp(char s1, char s2);void main( ){ int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[2])); printf(“%s”,string);}char scmp(char s1, char s2){ if(strcmp(s1,s2)<0) return(s1); else return(s2);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为:
答案: abba
16、 如下程序的输出结果如下( )#include <stdio.h>void main( ){ char str[][20]={“china”,”hubei”,”wuhan”}; int i ; for(i=0;i<3;i++) { printf(“%c-“, *(str[i]+i)); }}
答案: c-u-h-
17、 以下程序的运行结果是: #include <stdio.h>void main( ){ char str[][20]={“china”,”hubei”,”wuhan”}; int i ; for(i=0;i<3;i++) { printf(“%s-“, str[i]+i); }}
答案: china-ubei-han-
18、 以下程序的运行结果是: #include <stdio.h>char fun(char px,char py);void main( ){ printf(“%s%s”,fun(“abc”,”abcd”),fun(“1234″,”123”));}char fun(char px,char py){ return (px > py? px : py);}
答案: abcd123
19、 strcat(strcpy(str1,str2),str3)的功能是:将串str2复制到串str1中后再将串str1连接到串str3之后。
答案: 错误
20、 char *ps[5]定义了一个包含5个字符指针的一维字符指针数组ps。
答案: 正确
21、 C语言中,带参数main函数的参数可以在程序内部取得实际值。
答案: 错误
22、 在C语言程序中,malloc等内存分配函数的使用次数一定要和free相等,并一一配对使用。
答案: 正确
23、 下面的语句能正确执行: char *str[5]; scanf(“%s”,str[0]);
答案: 错误
第十三周:结构与联合(1) 第十三周测验题
1、 当定义一个结构体变量时,系统为它分配的内存空间大小是( )
答案: 结构中各成员所需内存容量之和
2、 定义以下结构体数组struct C{ int x; int y;};struct C s[2]={1,3,2,7};语句printf(“%d”,s[0].x*s[1].x)的输出结果为( )
答案: 2
3、 若有定义语句:struct a{ int a1; int a2;};struct a a3;以下赋值语句正确的是( )
答案: a3.a2=5;
4、 某结构型变量定义如下,对该结构型变量中成员的引用形式正确的是( )struct abc{ int s; char ch;};struct abc a1,p;p=&a1;
答案: p->ch
5、 若有以下说明语句struct date{ int year; int month; int day;};struct date birthday;则下面的叙述不正确的是( )
答案: birthday是用户定义的结构体类型名
6、 以下对结构变量stu1中成员age的非法引用是( )struct student{ int age; int num;};struct student stu1, p;p=&stu1;
答案: student.age
7、 设有定义struct{ char mark[12]; int num1; double num2; }t1, t2; 若变量均已赋初值,则以下语句中错误的是( )
答案: t2.mark = t1.mark;
8、 下面结构体的定义语句中,正确的是( )
答案: struct ord{ int x; int y; int z;};struct ord a;
9、 下列描述正确的是( )
答案: 结构体数组名为该结构体数组的存储首地址。
10、 以下scanf函数调用语句中对结构体变量成员的不正确引用是( )struct pupil{ char name [20]; int age; int sex;};struct puppil pup[5],*p;p=pup;
答案: scanf(“%d”, p->sex);
11、 以下正确的说法是 ( )
答案: 结构体类型变量可以初始化。
12、 静态结构体类型变量在程序执行期间, ( )
答案: 所有成员一直驻留在内存中。
13、 设有以下说明语句 struct stu { int a; float b; }stutype; 则下面不正确的叙述是 ( )
答案: stutype 是用户定义的结构体类型名。
14、 下列说法不正确的是 ( )
答案: 结构体的成员可以为任意结构体类型。
15、 下列描述说明正确的是 ( )
答案: 其它描述均不正确。
16、 下列描述说明正确的是 ( )
答案: 定义结构类型时,每个成员的数据类型可以不同。
17、 下列描述说明正确的是 ( )
答案: 结构类型定义时,结构类型本身并不占用存储空间,即系统并不给结构类型分配存储空间。
18、 下列描述说明正确的是 ( )
答案: 结构体成员项数据类型可以是结构体或其它C语言的数据类型。
19、 结构体中的成员项由其数据类型和成员名组成,每个成员项后用分号或逗号作为结束符。
答案: 错误
20、 结构变量的定义必须在该结构的定义之后。
答案: 正确
21、 结构数组也具有数组的属性,结构数组名是结构数组的存储首地址。
答案: 正确
22、 结构指针的增量运算,将跳过一个结构变量的成员项,指向结构变量中的下一个成员项。
答案: 错误
23、 用结构体变量作实参时,可在函数中对实参中的成员项进行修改。
答案: 错误
第十四周:结构与联合(2) 第十四周测验题
1、 运行下列程序段,输出结果是( )struct country{ int num; char name[10];};struct country x[5]={1,”China”,2,”USA”,3,”France’,4,”England”,5,”Spanish”};struct country p;p=x+2;printf(“%d, %c”, p->num,(p).name[2]);
答案: 3,a
2、 根据下面的定义,能输出Mary的语句是( )struct person{ char name[9]; int age;};struct person class[5]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16};
答案: printf(“%s” ,class[2].name);
3、 运行下列程序,输出结果是( )#include <stdio.h>struct country{ int num; char name[20];};struct country x[5]={1,”China”,2,”USA”,3,”France”,4,”Englan”,5,”Spanish”};void main( ){ int i; for(i=3;i<5;i++) printf(“%d%c”,x[i].num, x[i].name[0]);}
答案: 4E5S
4、 有以下程序#include <stdio.h>struct STU{ char name[9]; char sex; int score[2];};void f(struct STU a [ ]);void f(struct STU a[ ]){ struct STU b=(“Zhao”,’m’, 85,90); a[1]=b;}void main( ){ struct STU c[2]={{“Qian”,’f’, 95, 92},{“Sun”,’m’,98, 99}}; f(c); printf(“%s,%c,%d,%d,”,c[0].name, c[0].sex, c[0].score[0], c[0].score[1]); printf(“%s,%c,%d,%d”, c[1].name, c[1]sex, c[1].score[0], c[1].score[1]);}程序运行后的输出结果是( )。
答案: Qian, f, 95,92, Zhao, m, 85, 90
5、 有以下程序 #include<stdio.h>#include<string.h>struct A{ int a; char b[10]; double c;};void f(struct A t);void main(){ struct A a= {1001,”ZhangDa”,1098.0}; f(&a); printf(“%d,%s,%6.1f”,a.a,a.b,a.c);}void f(struct A t){ t->a=1002; strcpy(t->b,”ChangRong”); t->c=1202.0;}程序运行后的输出结果是( )
答案: 1002,ChangRong, 1202.0
6、 以下对结构体类型变量的定义中,不正确的是( )
答案: struct{ int n; float m;}tdl;
7、 执行下列程序的输出结果是( )#include<stdio.h>struct st { int x; int y; } p; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; void main( ) { p=aa; printf(“%d “,++p->x); printf(“%d”,(++p)->x); }
答案: 51 60
8、 字符’0’的 ASCII 的十进制数为 48,且数组的第 0 个元素在低位,则以下程序的输出 结果是( )#include<stdio.h> void main() { union { short i[2]; long k; char c[4]; } r, *s=&r; s->i[0]=0x39; s->i[1]=0x38; printf(“%c”, s->c[0]); }
答案: 9
9、 下列描述说明正确的是( )
答案: 联合变量定义时,系统按照占用空间最大的成员项分配存储空间。
10、 若有如下定义: union data { short i; char c; float f; } ;union data b;则联合变量 b 占用内存的字节数是( )
答案: 4
11、 如下定义的结构类型变量 a 所占内存字节数是( ) union U { char st[4]; short i; long l; }; struct A { short c; union U u; } a;
答案: 6
12、 假定整型变量中,数值的低位存储在低地址字节,高位存储在高地址字节,则以下程序的输出结果是( ) #include<stdio.h> void main() { union { short i[2]; long k; char c[2]; } r, *s=&r; s->k=0x12345678; printf(“%x”, s->c[0]); }
答案: 78
13、 在以下位字段结构的定义中,不正确的是( )
答案: struct test{ unsigned a:1; unsigned b:2; unsigned c:17; }
14、 若有以下说明和定义:union dt{ int a; char b; double c;};union dt data;以下叙述中错误的是( )。
答案: 程序段 data.a=5; printf(“%f”,data.c)输出结果为 5.000000
15、 已知学生记录描述为:struct student { int no; char name [20]; char sex; struct{ int year; int month; int day; }brith;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是( )。
答案: s.brith.year=1984; s.brith.month=11; s.brith.day=11;
16、 若有以下定义和语句:union date{ int i; char c; float f;};union date a;int n;则以下语句正确的是( )
答案: printf(“%d”, a.i);
17、 有以下程序:#include<stdio.h>struct STU{ char name[10]; int num; float TotalScore; };void f(struct STU p);void f(struct STU p){ struct STU s[2]={{“SunDan”,20044,550},{“Penghua”,20045,537}}, q=s; ++p; ++q; p=*q;}void main(){ struct STU s[3]={ {“YangSan”,20041,703},{“LiSiGuo”,20042,580}}; f(s); printf(“%s %d %3.0f”,s[1].name, s[1].num,s[1].TotalScore);}程序运行后的输出结果是( )。
答案: Penghua 20045 537
18、 有以下程序:#include<stdio.h>#include<string.h>struct STU { char name[10]; int num;};void f(char name, int num);void f(char name, int num){ struct STU s[2]={{“SunDan”,20044},{“Penghua”,20045}}; num=s[0].num; strcpy(name,s[0].name);}void main(){ struct STU s[2]={{“YangSan”,20041},{“LiSiGao”,20042}},*p; p=&s[1]; f(p->name,p->num); printf(“%s %d”,p->name,p->num);}程序运行后的输出结果是( )。
答案: SunDan 20042
19、 有以下程序:#include<stdio.h>struct STU { int num; float TotalScore;};void f(struct STU p);void f(struct STU p){ struct STU s[2]={{20044,550},{20045,537}}; p.num=s[1].num; p.TotalScore=s[1].TotalScore;}void main(){ struct STU s[2]= {{20041,703},{20042,580}}; f(s[0]); printf(“%d %3.0f”,s[0].num,s[0].TotalScore);}程序运行后的输出结果是( )。
答案: 20041 703
20、 以下叙述正确的是( )
答案: 位字段结构中位字段成员必须为整型类型。
21、 位字段结构体内不能定义不带名字的位字段。
答案: 错误
22、 位字段成员可以在数值表达式中引用,它会被系统自动的转换成整数型。
答案: 正确
23、 联合体的内存空间在某个时刻只能保持某个成员项的数据。
答案: 正确
24、 联合变量不可以向另一个相同类型的联合变量整体赋值。
答案: 错误
25、 一个位段可以跨存储单元存储。
答案: 错误
26、 联合类型变量中所有成员的起始存储地址都相同。
答案: 正确
第十五周:枚举、链表与文件(该章不作为考试内容) 第十五周测验题
1、 1.程序定义的节点结构体如下所示:struct LinkNode{ int data; struct LinkNode next;};struct LinkNode p, s;设节点机构体s中的data已经初始化,且p为已经建立的单链表中的一个节点,将s所指节点插入到p所指节点之后,其语句应为( )
答案: s->next=p->next; p->next=s;
2、 关于枚举类型,说法不正确的是( )
答案: 枚举元素的值可以改变。
3、 以下程序依次把从终端输入的字符存放到f文件中,用#作为结束输入的标志, #include <stdio.h>void main(){ FILE *fp; char ch; fp=fopen( “fname”, “w” ); while( ( ch=getchar()) !=′#′ ) fputc( ____ ); fclose(fp);}则在横线处应填入的选项是:( )
答案: ch,fp
4、 以下程序用来统计文件中字符的个数,空白处应填()。#include <stdio.h>void main(){ FILE *fp; long num = 0; fp = fopen(“fname.dat”,”r”); while( ______ ) { fgetc(fp); num++; } printf(“num = %d”,num ); fclose(fp); }
答案: feof(fp)
5、 读取二进制文件的函数调用形式为: fread(buffer,size,count,fp);其中buffer代表的是( )
答案: 一个内存块的首地址,代表读入数据存放的起始地址。
6、 以下程序的运行结果为( )#include <stdio.h>void main(){ FILE *fp; int i, a[6]={1,2,3,4,5,6},k; fp = fopen(“data.dat”, “w+”); for (i=0; i<6; i++) { fseek(fp, 0L, 0); fprintf(fp, “%d”, a[i]); } rewind(fp); fscanf(fp, “%d”, &k); fclose(fp); printf(“%d”, k);}
答案: 6
7、 #include <stdio.h>#define F(x) 2.84+x#define PR(a) printf(“%d” ,(int)(a))#define PRINT(a) PR(a);putchar(′′)void main(){ PRINT( F(5)*2 );}程序运行后的输出结果为:( )
答案: 12
8、 程序定义的结构体和变量如下:struct st{ int n; float t; };struct st a[20];FILE *fp;若文件已正确打开,则以下将文件内容读入数组a中的语句错误的是( )
答案: for(i=0; i<20; i++) fread(a[i],sizeof(struct st),1L,fp);
9、 设文件指针fp已定义,执行语句fp=fopen(“file”,”w”);后,以下针对文本文件file操作叙述的选项中正确的是( )
答案: 只能写不能读。
10、 以下叙述中错误的是( ):
答案: getchar函数用于从磁盘文件读入字符。
11、 C语言中只有”顺序存取”一种文件存取方式。
答案: 错误
12、 已定义枚举元素的值不可以改变。
答案: 正确
13、 类型定义语句只能是对基本数据类型定义新类型名。
答案: 错误
14、 typedef语句和#define命令一样,都是在编译预处理阶段进行处理的。
答案: 错误
15、 文件指针是程序中用FILE定义的指针变量。
答案: 正确
点关注,不迷路,微信扫一扫下方二维码
关注我们的公众号:阿布查查 随时查看答案,网课轻松过
为了方便下次阅读,建议在浏览器添加书签收藏本网页
电脑浏览器添加/查看书签方法
1.按键盘的ctrl键+D键,收藏本页面
2.下次如何查看收藏的网页?
点击浏览器右上角-【工具】或者【收藏夹】查看收藏的网页
手机浏览器添加/查看书签方法
一、百度APP添加/查看书签方法
1.点击底部五角星收藏本网页
2.下次如何查看收藏的网页?
点击右上角【┇】-再点击【收藏中心】查看
二、其他手机浏览器添加/查看书签方法
1.点击【设置】-【添加书签】收藏本网页
2.下次如何查看收藏的网页?
点击【设置】-【书签/历史】查看收藏的网页