谱豆黄棘歧跑帕踢沏如搅撮唬
第一周: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}};” 是正确的。
答案: 正确
上方为免费预览版答案,如需购买完整答案,请点击下方红字
为了方便下次阅读,建议在浏览器添加书签收藏本网页
添加书签方法:
1.电脑按键盘的Ctrl键+D键即可收藏本网页
2.手机浏览器可以添加书签收藏本网页
我们的公众号
打开手机微信,扫一扫下方二维码,关注微信公众号:萌面人APP
本公众号可查看各种网课答案,还可免费查看大学教材答案
,
第一周: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}};” 是正确的。
答案: 正确
上方为免费预览版答案,如需购买完整答案,请点击下方红字
为了方便下次阅读,建议在浏览器添加书签收藏本网页
添加书签方法:
1.电脑按键盘的Ctrl键+D键即可收藏本网页
2.手机浏览器可以添加书签收藏本网页
我们的公众号
打开手机微信,扫一扫下方二维码,关注微信公众号:萌面人APP
本公众号可查看各种网课答案,还可免费查看大学教材答案
垂霓吐雄炮恼仟桥剁衬手白侯