收藏 分销(赏)

《C程序设计》期末复习练习题及参考答案(1).doc

上传人:二*** 文档编号:4535298 上传时间:2024-09-27 格式:DOC 页数:12 大小:91KB
下载 相关 举报
《C程序设计》期末复习练习题及参考答案(1).doc_第1页
第1页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、C次序 方案 期末复习练习 题及参考答案 (1)一、单项选择 题 1. 以下不克不迭 对二维数组a停顿精确 初始化的语句是Aint a23=0;Bint a3=1,2,0;Cint a23=1,2,3,4,5,6;Dint a3=1,2,3,4,5,6;2有以下次序 片断 float fun(int x,int y return(x+y);main() int a=2,b=5,c=8;printf%3.0fn,fun(int)fun(a+c,b),a-c);次序 运行 后的输出结果是:A)编译出错 B)9 C)21D)9.03假设 有以下调用 语句,那么不精确 的fun函数的函数原型是main

2、() int a50,n;fun(n, &a9);Avoid funint m, int x; Bvoid funint s, int h41;Cvoid funint p, int *s; Dvoid funint n, int a;4下面次序 片断 的实行 结果是:#define MAX 10int aMAX, i;main( ) printf(n); sub1( ); sub3(a); sub2( ); sub3(a);sub2( )int aMAX, i, max=5; for(i=0; imax; i+) ai=i;sub1( )for(i=0; iMAX; i+) ai=i+i;s

3、ub3(int a ) int i; for(i=0; iMAX; i+)printf(%d,ai); printf(n);A) 0 2 4 6 8 10 12 14 16 18 0 1 2 3 4 10 12 14 16 18B) 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18C) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4D) 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 185. 以下次序 实行 后的输出结果是#include main() int a33, *p, i;p = &a00;for (i=

4、1; i9; i+)pi=i+1;printf(%dn,a12);A3 B6 C9 D随机数6. 以下关于 C语言 次序 的描画精确 的选项是 。 A)main函数可以 在任何所在 出现。B)main函数必须 出现在次序 的结实 位置。C)main函数必须 出现在所欲函数之前。D)main函数必须 出现在所有 函数之后。7. 用C语言 编写的C次序 称为 。A) 源次序 B) 目标 次序 C) 汇编次序 D) 命令 次序 8. 设有定义 int a = 5, b; 实行 以下语句后,b的值不为2的是 。A) b=a%2; B) b=a/2; C) b=6-(-a); D) b=2;9. 以下次

5、序 实行 后的输出结果是 。#include int main()int x = 0, a = 10, b = 20, c = 15;if(a b)if(b c)x = 1;elsex = 2;printf(%dn,x);return 0;A) 0 B) 1 C) 2 D) 310. 已经清楚 字母b的ASCII码值为98,如ch为字符型变量,这表达 式ch=b+5-2 的值是 。A) d B) e C) 100 D) 10211. 有以下次序 #includemain() static char a =language,b =programe;char *p1,*p2;int k;p1=a;

6、p2=b; for(k=0;k=7;k+)if(*(p1+k) = *(p2+k)printf(%c,*(p1+k);次序 的输出结果是 。A) gae B) gue C) gua D) gam12. 有以下次序 #include void main()int i,j=4;for (i=j; i=2*j; i+)switch(i/j) case 0:case 1:printf(*);break;case 2:printf(#);次序 的输出结果是 。A) *# B) *#*# C) #*# D) *#13. 有以下次序 main() int i,j,x =0; for(i=0;i2;i+) x

7、+;for(j=0;j3;j+)if(j%2) continue; x+;x+; printf(x=%dn,x);次序 的输出结果是 。A) x=8 B) x=5 C) x=7 D) x=614. 以下次序 实行 后的输出结果是 。#include int main()int x = 1, y = 0, a = 0, b = 0;switch (x)case 1:switch(y)case 0: a+; break;case 1: b+; break;case 2: a+; b+; break;case 3: a+; b+;printf(a = %d,b = %dn,a,b);return 0

8、;A) a = 1,b = 0 B) a = 2,b = 2 C) a = 1,b = 1 D) a = 2,b = 115. 假设 有下面的语句,那么精确 的说法是 。int a10 = 6, 7, 8, 9, 10;A) 将5个初值依次赋给a1至a5。B) 将5个初值依次赋给a0至a4。C) 将5个初值依次赋给a6至a10。D) 因为 数组长度与初值的个数纷歧 样,因而 此语句不精确 。16. 有以下函数定义 ,那么以下差错 的函数调用 是 。int Mul(int a, int b)return a*b;A) if(Mul(x,y); B) z= Mul( Mul(x,y), Mul(x

9、,y) );C) z= Mul( Mul(x,y), x, y ); D) Mul(x, y);17. 以下次序 的运行 结果是 。#include float fun(int x, int y)return x+y; int main()int a = 2, b = 5, c = 8;printf(%3.0fn,fun( (int)fun(a + c, b), a -c) );return 0;A) 编译出错 B) 9 C) 21 D)9.018. 以下次序 的运行 结果是 int k=0; void fun(int m) m+=k;k+=m;printf(m=%d k=%d ,m,k+);

10、 main() int i=4; fun(i+); printf(i=%d k=%dn,i,k); A)m=4 k=5 i=5 k=5 B)m=4 k=4 i=5 k=5 C)m=4 k=4 i=4 k=5 D)m=4 k=5 i=4 k=519. 有以下次序 main() int i,s=1; for (i=1;ib)a=b; c=a; if(c!=a)c=b; printf(%d,%d,%dn,a,b,c); 其输出结果是A)次序 段有语法错 B)3,5,3 C)3,5,5 D)3,5,7 21. 假设 有定义 :float x=1.5;int a=1,b=3,c=2;,那么精确 的swi

11、tch语句是 A)switch(x) case 1.0:printf(*n); case 2.0:printf(*n); B)switch(int)x); case 1:printf(*n); case 2:printf(*n); C)switch(a+b) case 1:printf(*n); case 2+1:printf(*n); D)switch(a+b) case1:printf(*n); casec:printf(*n);22. 以下次序 的输出结果是#include stdio.h main() int i,a=0,b=0; for(i=1;i10;i+) if(i%2=0) a

12、+; continue; b+; printf(a=%d,b=%d,a,b); A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 二、填空题1、C语言 中全然 的数据典范 有:整型 、实型 、字符型 。2、在次序 方案 中,需要 用到常量Pi,其中 为结实 值3.14。假设将Pi定义 为标志 常量,其代码为: #define Pi 3.14 ;假设将Pi定义 为常变量,其代码为: const float Pi=3.14; 。3、设a是一维数组,p是指向数组元素的指针变量,且初始化为p = a;假设要通过指针p引用数组a的下标为i的那个 元素,其代码为: *(p+i

13、) 。4、实行 以下语句int a=8; a+=a-=a*a; 后,a的值是- 112 。5、有如下语句:char A =I am a student; 该字符串的长度是14 ,A3=m 。6、标志 a跟 a的区不是a是字符串常量,而a是字符常量。7、所谓“指针的确是所在 。 “&运算符的感染 是取运算东西 的所在 。“*运算符的感染 是取指针变量所指的内容。 。三、次序 运行 结果分析题1#include struct STU char num10; float score3; ; main()struct STU s3=20021,90,95,85, 20022,95,80,75, 200

14、23,100,95,90, *p=s; int i; float sum = 0; for (i=0; iscorei; printf(%6.2fn,sum); 次序 的运行 结果是:270.002#include main( ) char s100; char c, i; scanf(%c, &c); scanf(%d, &i); scanf(%s, s); printf(%d,%c,%sn, c, i, s);已经清楚 字符a的ASCII码值为97,那么当次序 输出:a97123,次序 运行 结果是:97,a,1233#include int a=13, b=8;int max(int a

15、, int b)int c; c=ab?a: b; return(c);main( )int a=5; printf(Max=%dn, max(a, b);次序 运行 结果是:Max=84以下次序 的输出结果是_。#include int main()int i,j;for(i = 0; i 4; i+)for(j = 0; j i; j+)putchar(#);for(j = 0; j 4; j+)putchar(*);printf(n);return 0;次序 运行 结果是:5. 当运行 以下次序 时,运行 结果是_3628800_。#include int main()int fun(i

16、nt n);int n = 10, y;y = fun(10);printf(%dn,y);return 0;int fun(int n)int f;if(n 0)f = 0;printf(error!);else if( n = 0 | n = 1)f = 1; elsef= fun(n -1) * n;return f;6以下函数int strcmp(char *p1,char *p2)比较输出字符串是否 相当 ,假设 相当 那么前去 0,否那么前去 其他 值。当运行 以下次序 时,运行 结果是_-7_。#include #define N 10int strcmp(char *p1,ch

17、ar *p2) int k; if(p1 = NULL | p2 = NULL) return -1; /揣摸 p1跟 p2是否 为空指针 while(1)if( k = *p1 - *p2)break; else if (*p1 = 0 |*p2 = 0)break; p1+ ; p2+ ; return k;int main()char a=China; char b=Japan; printf(%d, strcmp(a, b);return 0;7以下次序 的功能 为:已经清楚 数组array中以保存 num个有效整数,并按从小到大年夜 排序,现在再输出一个整数x,并拔出到数组中,保持

18、数组的数有序,同时更新num的值。假设 输出要拔出的数:70 那么拔出一个数后的数组包含 5个数,次序 运行 结果是:24 55 70 99 110 #include void fun(int *w, int x, int *n)int i, p;p = 0;w*n = x;while(x wp) p+;for(i = *n; i p; i -) wi = wi-1 ;wp = x; + *n ;int main()int array60 = 24, 55, 99, 110;int num = 4,x,i;printf(请输出要拔出的数:);scanf(%d,&x);fun(array,x,&

19、num);printf(拔出一个数后的数组包含 %d个数,分不为:n,num);for(i = 0; i num; i+)printf(%d , arrayi );printf(n);return 0; 8下面次序 的输出结果是_ xyabcABC _。#include#includemain() char str120=abc, *p1=str1,*p2=ABC, str50= xyz; strcpy(str+2, strcat(p1,p2); printf(%sn, str);9. 当运行 以下次序 时,运行 结果是_。#include void search_s(int (*p)5,in

20、t n,int m,int re42); void main() int score45= 60,90,92,66,55, 75,40,58,40,90, 60,80,66,90,55, 78,45,56,90,57; int result42=0; /第一列表示 称心 条件 ,第二列表示 平均分数 search_s(score,4,5,result); for(int i=0;i4;i+) if(resulti0 = 1) printf(No.%d has selected, The average is %dn,i+1,resulti1); void search_s(int (*p)5,

21、int n,int m,int re42) int i,j; int flag; int sum,temp; for(i=0;in;i+) sum = 0; flag = 0; for(j=0;jm;j+) temp = *(*(p+i)+j); sum = sum + temp; if( temp 60) if(flag = 1) rei0 = 1; else flag = 1; rei1 = sum/m; 四、次序 填空题1阅读 次序 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次序 残缺并符合 题目 恳求 。由键盘输出一个班的某课程的后生成 果,打算 其平均分,然后 输出。注:

22、应用 静态数组实现 #include #include main()int *p=NULL,n,i,sum;printf(please enter array size: );scanf(%d, &n ); p=(int *)malloc(n* sizeof(int); if (p=NULL) printf(no enough memory!n);exit(0); /或者 return ;printf(please enter the score: );for(i=0;in;i+)scanf(%d,p+i); sum=0 ; for(i=0;in;i+) sum=sum+*(p+i) ; pr

23、intf(aver=%dn,sum/n);free(p); 2输出一个字符数小于100的字符串string,然后 在string所保存 字符串中的每个字符间加一个空格。 #include#define MAX 100void CopyString(char c,char s);void Insert(char s);main()char stringMAX;scanf(%s,string);Insert(string);printf(%s,string);void CopyString(char c, char s)int i;for (i=0; si!=0; i+)ci = si;ci =

24、0;void Insert(char srcStr)char strTempMAX;int i = 0, j = 0;CopyString(strTemp, srcStr);while (strTempj != 0)srcStri = strTempj;i+;j+;srcStri = ; i+;srcStri = 0;3以下次序 从键盘上输出整数n,输出2到n之间的所有 素数。其中 函数getprime求解2到n之间包含 2与n的所有 素数并保存 在数组a中,同时前去 素数的个数。揣摸 整数m是否 为素数可以 采用以下方法:依次揣摸 m是否 为2到m-1之间各个素数的倍数,假设都不克不迭 整除

25、,那么m是素数。 #include int main()int getprime(int a,int n); int a100,n,k,i; scanf(%d,&n); k=getprime(a,n); for (i=0;ik;i+) printf(%d ,ai);printf(n);return 0;int getprime(int a,int n)/*求解2到n之间的所有 素数,保存 到数组a中,并前去 其个数*/ int m,i,k=0; for ( m=2; m=n ; m+ ) /*依次揣摸 m是否 为素数*/ for ( i=0; ik; i+ ) /*对已求解素数停顿循环 */ if ( m%ai=0 ) /*揣摸 是否 为已求解素数的倍数*/ break ; /*假设整除,那么m不是素数*/ if (i=k) ak+ = m; /*m为素数,保存 到数组a中*/ return k ; /*前去 素数个数*/*假设输出20,那么输出2 3 5 7 11 13 17 19*/精选可编辑

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服