2014 c语言程序设计形成性考核册,C语言程序设计形成性考核册参考答案

《C语言程序设计形成性考核册参考答案》由会员分享,可在线阅读,更多相关《C语言程序设计形成性考核册参考答案(35页珍藏版)》请在人人文库网上搜索。

1、语言程序设计作业(一)C+ 一、单项选择题 1. C+源程序文件的默认扩展名为(A )。 A. cpp B. exe C. obj D. lik )。源程序文件编译而成的目标文件的默认扩展名为( C2. 由 C+A. cpp B. exe C. obj D. lik 3. 由 C+目标文件连接而成的可执行文件的默认扩展名为(B )。 A. cpp B. exe C. obj D. lik )。 ( B4. C+程序从上机到得到结果的几个操作步骤依次是A. 编译、编辑、连接、运行 B. 编辑、编译、连接、运行 C. 编译、运行、编辑、连接 D. 编辑、运行、编辑、连接 )。B 5. 以下标识符中。

2、不全是保留字的是(A. case for int then defaultwhile B. C. bool class long char goto returnD. )。C 能作为 C+程序的基本单位是6.(A. 字符 B. 语句 C. 函数 D. 源程序文件 程序中主函数的名字为( A 7.)。 A. main B. MAIN C. Main D. 任意标识符 )。DC+程序的基本模块为( 8.A. 表达式 B. 标识符 C. 语句 D. 函数 )。语言用户标识符的一组标识符是( B9. 可用作C+A. void define +WORD B. a3_b3 _123 YN C. for -。

3、abc Case D. 2a DO sizeof 10. 存储以下数据,占用存储字节最多的是( D )。 A. 0 B. 0 C. “0” D. 0.0 11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作 为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a 的值是( C )。 A. 12 B. 144 C. 156 D. 288 13. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于 1,则下列能正确表示 1 )。 (代数式 D 的表达式是 abc 。

4、1.0/a/b/cD. 1/(a*b*c)C. 1/a/b/(float)c A. 1.0/a*b*c B. )。( D ”int a=15,b=26;,则”cout0 ”可知,该函数的返回类型为从一条函数原型语句“int21 _0_,该函数带有_个参数。 2 22. 当执行 cout 语句输出 endl 数据项时,将使 C+显示输出屏幕上的光标从当前位 置移动到_下一行_的开始位置。 23. 假定 x=5,y=6,则表达式 x+*+y 的值为_35_。 24. 假定 x=5,y=6,则表达式 x-*-y 的值为_25_。 25. 假定 x=5,y=6,则执行表达式 y*=x+计算后,x 和 。

5、y 的值分别为_6_和 _30_。 26. 假定 x=5,y=6,则执行表达式 y+=x-计算后,x 和 y 的值分别为_4_和 _11_。 27. C+常数 0 x145 对应的十进制值为_325_。 28. C+常数 0345 对应的十进制值为_2_。 29. 十进制常数 245 对应的十六进制的 C+表示为_0 xf5_。 30. 十进制常数 245 对应的八进制的 C+表示为_0365_。 31. signed char 类型的值域范围是_-128_至_+127_之间的整数。 32. int 和 float 类型的数据分别占用_4_和_4_个字节。 33. float 和 double。

6、 类型的数据分别占用_4_和_8_个字节。 34. bool 和 char 类型的数据分别占用_1_和_1_个字节。 35. unsigned short int 和 int 类型的长度分别为_2_和_4_。 36.字符串Thissabook.n的长度为_15_。 ”37.字符串nThissapennn的长度为_15_。 ”38.在C+中存储字符串abcdef至少需要_7_个字节。 ”39.在C+中存储字符串a+b=c至少需要_6_个字节。 ”40. 假定 x 和 y 为整型,其值分别为 16 和 5,则 x%y 和 x/y 的值分别为_1_ 和_3_。 三、写出程序运行结果 #include。

7、 1.#include void main() int a8=25,48,32,85,64,18,48,29; int max,min; max=min=a0; for(int i=0; iai) max=ai; if(minai) min=ai; coutmax:maxendl; coutmin:minendl; 解:max:85 min:18 2.#include main()void 3 int a,b; for(a=1,b=2; b50;) couta b ; a=a+b; b=a+b; coutendl; couta b endl; 解:1 2 3 5 8 13 21 34 55 8。

8、9 #include 3.const int M=3, N=4; void main() int i,j,s=0; for(i=1;i=M;i+) for(j=1;j=N;j+) s+=i*j; cout”s=”sendl; 解:s=60 4. #include void main() int a=2,b=5,c=0; if(a+b10) c=a*b; else c=3*a+b; if(c=20) coutc*c; else cout4+c-5; coutendl; a=a+b; b=a+b;c+=a+b; couta,b,c=a,b,cendl; a,b,c=7,12,30解:121 #in。

9、clude5. main()void x=5;int switch(2*x-3) ;coutxcase4: ;7:cout2*x+1case break;cout3*x-110:;case coutdefaultendl;default: 4 coutswitch end.endl; 解:11 14 switch end 6. #include #include int a4=36,-5,73,8; void main() int i,y; for(i=0; i4; i+) if(ai0) y=1; else if(ai10) y= ai* ai+3; else if(ai60) y=4*ai。

10、-5; / sqrt(x)为取 x 的平方根函数else y=int(sqrt(ai); coutsetw(5)aisetw(5)y; 解:36 139 -5 1 73 8 8 67 四、指出程序或函数的功能 #include 1.void main() int i,s=0; for(i=2;i=30;i+=2) s+=i*i; couts=sendl; 2222 的值+4+.+30+62解:计算并输出 #include2. #include #include void main() int i=10,a; while(i0) a=rand()?+10; /sqrt(x)为求 x 的平方根函数。

11、 k=int(sqrt(a)+1e-5);int j, j+) j=k; for(j=2; break;if(a%j=0) i-; ; coutak) 5 解:随机产生出 10 个 10 至 99 之间的素数并显示出来。 void trans(int x) 3. char a10; int i=0,rem; do rem=x_x0016_; x=x/16; if(rem10)ai=48+rem;/0字符的ASCII码为48 elseai=65+rem;/字符的ASCII码为65 A i+; while(x!=0); i;cout0) coutendl; 转换为十六进制数字串输出。x 解:此函数。

12、用于把十进制整数 #include4. n) double f1(int sign=1,s=1;double i=2;ia; coutf1(a)endl; i1)?(a 1+解:计算并输出? 的值由键盘输入。a 的值,其中 2 i 2i? op) chara, double b, f1(double5. double switch(op) a+b;:returncase+ a-b;-case:return a*b;:case*return 6 case/:if(b=0) coutdivided by 0!endl; exit(1); else return a/b; default: cout。

13、operator error!endl; exit(1); 解:以参数 a 和 b 为运算对象,以参数 op 为四则算数运算符,求出运算结果并返回。 #include6. #include main()void x,y;int cinx; 的算术平方根/sqrt(x)为求 y=int(sqrt(x);x i=1;i=y;i+)for(intx/iendl;iif(x%i=0)cout *”x=” 分解为所有可能的每两个因子之积。X 解:把从键盘上输入的一个整数 7 语言程序设计作业(二)C+ 一、单项选择题 1. 函数调用不可以( D )。 A. 出现在一个表达式中 B. 出现在执行语句中 C。

14、. 作为一个函数的实参 D. 作为一个函数的形参 )。 以下正确的描述是( B2.A. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套 )。 若用数组名作为函数调用的实参,传递给形参的是( A3.A. 数组的首地址 B. 数组中第一个元素的值 C. 数组全部元素的值 D. 数组元素的个数 )。以下错误的描述是( D4. A. 被调用函数中可以不用 return 语句 B. 被调用函数中可以用多个 return 语句 C. 被调用函数中,如果有返回值,就一定要有 retur。

15、n 语句 D. 被调用函数中,一个 return 语句可返回多个值给调用函数 )。C 5.以下正确的描述是( A. 不允许设置参数的默认值 B. 设置参数的默认值只能在定义函数时设置 C. 设置参数的默认值时,应该设置右边的参数 D. 设置参数的默认值时,应该全部参数都设置 )。D6. 采用重载函数的目的是( A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 7. 将两个字符串连接起来组成一个字符串时,选用( C )函数。 A. strlen() B. strcap() C. strcat() D. strcmp() 8. 以下叙述中正确的是( B )。 A. 使用#。

16、define 可以为常量定义一个名字,该名字在程序中可以再赋另外的值 定义的常量名有类型之分,其值在程序运行时是不可改变的const B. 使用 在程序中使用内联函数使程序的可读性变差C. 在定义函数时可以在形参表的任何位置给出缺省形参值D. 是文件级作用域。C)9. 下面的标识符中,( 自动类标识符语句标号B.D.C.外部静态类标识符 A.函数形参 ()D。10. 以下叙述不正确的是 宏名无类型B. 宏替换不占用运行时间A. 宏名必须用大写字母表示 D. 宏替换只是字符替换C. 8 二、填空题 1. 含随机函数的表达式 rand() 的值在_0_至_19_区间内。 在 switch 语句中,。

17、每个语句标号所含关键字 case2. 后面的表达式必须是整型_常量 _。 3. 在 if 语句中,每个 else 关键字与它前面同层次并且最接近的_if_关键字相 配套。 4. 作为语句标号使用的 C+保留字 case 和 default 只能用于_switch_语句的 定义体中。 执行 switch 语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置5. 起向下执行,当碰到下一个标号位置时_不停止_执行。 6. 若 while 循环的“头”为“while(i+=10)”,并且 i 的初值为 0,同时在循环体 中不会修改 i 的值,则循环体将被重复执行_11_次后正常结束。 7. 若。

18、 do 循环的“尾”为“while(+i10)”,并且 i 的初值为 0,同时在循环体中不 会修改 i 的值,则循环体将被重复执行_10_次后正常结束。 8. 当在程序中执行到_break_语句时,将结束本层循环类语句或 switch 语句的执行。 9. 当在程序中执行到_continue_语句时,将结束所在循环语句中循环体的一次执行。 10. 在程序中执行到_return_语句时,将结束所在函数的执行过程,返回到调用该函 数的位置。 三、写出程序运行结果 1. #include const int T=6; void main() int i,j; for(i=1;i=T;i+=2) for。

19、(j=2;j=T;j+=2) if(i+jT)cout+; elsecout*; 解:+*+* 2. #include void main() int a,b,c=0; for(a=1;a1;b-=2) if(a+b)%2=0) c+=a+b; else c+=a*b; if(b=2) couta b cendl; 9 12 1 2 解: 2 2 30 3 2 66 3. #include int B=2;const void main() int p=1,s=1; while(s50) p*=B; s+=p; couts=sendl; s=63解: #include4. main()void。

20、 x=24,y=88;int i=2,p=1;int do x/=i; y/=i; i+; while(x=i coutp*x*yendl; 264解: 5.#include N=3;const int main()void int-4,-2; -2,-7;int i,j,cNN;int 计算矩阵/ for(i=0;iN;i+)C for(j=0;jN;j+) cij=aij+bij; 输出矩阵 Cfor(i=0;iN;i+) / for(j=0;jN;j+) 10 coutsetw(5)cij; coutendl; 1 10-6 解: -3 4 0 -96 -66. #include int。

21、 a=5; void main() int b=a+20; int a=10; couta bendl; int a=0,b=0; for(int i=1; i6; i+) a+=i; b+=a; couta bendl; couta bendl; 解: 10 25 15 35 10 25 四、指出程序或函数的功能 1. void f2(double a, int n) int i; double sum=0; for(i=0;in;i+) sum+=ai; sum/=n; for(i=0;i=sum)coutai; coutendl; 解:显示输出数组 an中大于等于平均值的所有元素值。 2。

22、. void f4(char aMN) int c1,c2,c3; c1=c2=c3=0; for(int i=0;iM;i+) if(strlen(ai)=5 c3+;else c3endl;coutc1c2 11 解:对于二维字符数组 a 中保存的 M 个字符串,分别统计并输出其长度小于 5、大于等于 5 且小于 15、大于等于 15 的字符串个数。 3. void fun3(int aN, int m, int n, int row=col=0; for(int i=0;im;i+) for(int j=0;jx) x=aij; row=i; col=j; 解:从一个二维整型数组中查找具。

23、有最大值的元素,由引用参数 row 和 col 带回该元素的 行号和列号。 4. int fun6(int m, int n, int b=2) if(mb else if(m%b=0 else return fun6(m,n,+b); 解:一个递归函数过程,求出两个自然数 m 和 n 的最小公倍数。 5. char* f8(char* str1, const char* str2) int i=0,j=0; while(str1i) i+; while(str2j) str1i+=str2j+ ; str1i=0; return str1; 解:实现 strcat 函数的功能,把 str2 。

24、所指字符串连接到 str1 所指字符串的后面,并返回 str1 指针。 12 语言程序设计作业(三)C+ 一、单项选择题 )。C 个元素的一维整型数组的正确语句是( 1. 用 new 运算符创建一个含 10A. int *p=new a10; B. int *p=new float10; C. int *p=new int10; D. int *p=new int10=1,2,3,4,5 )。A 下列给字符数组赋初值时,正确的是( 2.A. char s1=”abcdef”; B. char s24=”abcd”; C. char s323=“abc”,”xyz”; D. char s44=a。

25、,x,s,t; 3. 设有定义“static int data56;”,设该数组在静态存储区中的起始地址为十 进制的 100,若每个 int 型数占 4 个字节,则数组元素 data23的地址为( D )。 A. 115 B.124 C.130 D.160 )。 的正确语句为( B定义为“int m=7;”,则定义变量 p 4. 假定变量 m int D.*p=m;C. int A. int p= B. int *p=5. 假定 k 是一个 double 类型的变量,则关于变量 p 的正确定义语句为(D )。 A. double p= B. int *p= C. double D. char 。

26、*p=”Thank you!”; 6. 变量 s 的定义为“char *s=”Hello world!”;”,要使变量 p 指向 s 所指向的同一个 字符串,则应选取(A )。 A. char *p=s; B. char *p= C. char *p;p=*s; D. char *p; p= 7. 关于 void 指针,下列说法正确的是(C )。 A. void 指针就是未指向任何数据的指针 B. void 指针就是已定义而未初始化的指针 C. 指向任何类型数据的指针可直接赋值给一个 void 指针 D. void 指针值可直接赋给一个非 void 指针 8. 假定一条定义语句为“int a1。

27、0, x, *pa=a;”,若要把数组 a 中下标为 3 的元素 )。 ,则不正确的语句为( D值赋给 xA. x=pa3; B. x=*(a+3); C. x=a3; D. x=*pa+3; )。 D b10; int *pb;”,则不正确的赋值语句为( 9. 假定有定义“intA. pb=b; B. pb= C. *pb=new int; D. pb=b5; )。0.假定p指向的字符串为string,则couta 若 a 10. _。 coutaa 中所存字符串的表达式为_ 11. 若 a是一个字符数组,则向屏幕输出 _。 _10_个字符串,每个字符串的长度一个二维字符数组 a1020能够。

28、存储12. _19_。至多为元素a1,789,则进行初始化的数据为13.对一个二维字符数组a123,456 ”。_对应的字符串为_456 ”。_1_A)的值为)apple的值为_5_,strcmp(a,14.strlen( ”_strcpya中,则需要执行_15.若需要把一个字符串aaa赋值到字符数组 ” 函数的调用来实现。 ,则 a11假定对二维数组 a34进行初始化的数据为 16.和 a23分别被初始化为_8_和_0_。 17. 在 C+语言中,一个函数由函数头和_函数体_组成。 重载一个函数的条件是:该函数必须在参数的个数或参数的_类型_18.上与 其它同名函数有所不同。 19. 如果一。

29、个函数只允许同一文件中的函数调用,则应在该函数定义前加上_ static _C+保留字。 20. 若“double x=100;”是文件 F1.CPP 中的一个全局变量定义语句,若文件 F2.CPP 中的某个函数需要访问此 x , 则应在文件 F2.CPP 中添加对 x 的声明语句为_ extern double x _。 三、写出程序运行结果 1. #include int f1(int x, int y) x=x+y; y=x+y; 潣瑵?硜尽?尼 y=yendl; return x+y; void main() int x=5,y=8; int z=f1(x,y); 潣瑵?硜尽?尼 y=。

30、y; cout, z=zendl; Y=8 Z=34X=13 Y=21 X=5解:2. #include void f2(int x=y; y=z; 14 void f3(int* x, int* y) int z=*x; *x=*y; *y=z; void main() int x=10,y=26; 潣瑵?硜礬尽?尼 yendl; f2(x,y); 潣瑵?硜礬尽?尼 yendl; f3( 潣瑵?硜礬尽?尼 yendl; x+; y-; f2(y,x); 潣瑵?硜礬尽?尼 yendl; 解:X,Y=10,26 X,Y=26,10 X,Y=10,26 X,Y=25,11 3. #include 。

31、void f4(int a, int n, int for(int i=0; in; i+) s+=ai; void main() int b8=4,8,6,9,2,10,7,12; int x; f4(b,5,x); coutx ; int y; f4(b+3,4,y); couty ; coutx+yendl; 解:29,28,57 4. #include void main() int a8=36,25,48,14,55,40,50,24; b2;int b1, b1=b2=a0; i=1;ib1) b2=b1; b2=ai;if(aib2)else 15 coutb1 b2endl; 。

32、解:55,50 5. #include void main() char a=abcdabcabfgacd; int i1=0, i2=0, i=0; while(ai) if(ai=a)i1+; if(ai=b)i2+; i+; couti1i2inext; while(f) if(f-datap-data) p=f; f=f-next; return p; 假定 IntNode 的类型定义为: struct IntNode int data; /结点值域 /结点指针域 IntNode* next; 解:从表头指针 f 指向的、由 IntNode 类型的结点所构成的链表中查找出 data 域。

33、的最大的 结点并返回指向该结点的指针。 2. int Count(IntNode *f) if(!f) return 0; int c=0; while(f) c+; f=f-next; return c; 16 假定 IntNode 的类型定义为: struct IntNode int data; /结点值域 /结点指针域 IntNode* next; 解:统计出以表头指针为 f 的链表中结点的个数。 3. void Output(IntNode *f) if(!f) return; while(f) coutdatanext; coutendl; 假定 IntNode 的类型定义为: st。

34、ruct IntNode int data; /结点值域 /结点指针域next; IntNode* ; 解:首先从键盘上输入一个整数给 n,然后依次输入 n 个整数建立以表头指针为 f 的链表。 4. void Input(IntNode* coutn; while(n0); if(n=0) f=NULL; return; f=new IntNode; IntNode* p=f; cout”从键盘输入”nnext=new IntNode; cinp-data; p-next =NULL; p=f; f=f-next; delete p; 假定 IntNode 的类型定义为: struct In。

35、tNode int data; /结点值域 /结点指针域 next; IntNode*; 解:首先从键盘上输入一个整数给 n,然后依次输入 n 个整数建立以表头指针为 f 的链表。 17 5. int f(const char *s) int i=0; while(*s+)i+; return i; ; 解:求出并返回字符指针参数 s 所指向的字符串长度。 18 语言程序设计作业(四)C+ 一、编程题 1. 已知 6a30、15b36,求出满足不定方程 2a+5b=126 的全部整数组解。如 (13,20)就是其中的一组解,并按此格式输出每组解。 2. 假定函数声明为“void Print(i。

36、nt a, int n);”,要求按下标从大到小的次序 输出数组 a 中的 n 个元素的值,每个值后面接着输出一个空格。 3. 假定一个函数声明为“int FF(int a, int n);”,要求递归求出数组 a 中所有 n 个元素之积并返回。 4. 假定函数声明为“void Print(int a, int n);”,要求按下标从大到小的次序 输出数组 a 中的 n 个元素的值,每个值后面接着输出一个逗号,但最后一个值后面为换行 符。 参考解答: 1. #include void main() int a,b; for(a=6;a=30; a+) for(b=15;b=36;b+) if(2*a+5*b=126) cout(a,b)=0; i-) coutai; cout0; i-) coutai,; couta0endl; 20。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值