C语言考试复习专用三套题附答案
更新时间:2024-04-20 14:38:01 阅读量: 综合文库 文档下载
- C语言考试复制推荐度:
- 相关推荐
《C语言程序设计》习题集
习题一
一、 语言基础(共20分,每题2分)
(一)设x为一数字字符,则其所对应的十进制数值为 。 A)x B)x-‘0’ C)*x D)&x
(二)说明语句char s=‘\\t’,使s包含了几个字符? 。 A)1 B)2 C)3 D)说明有错 (三)设a=6,b=4,则表达式b*=a+3的值为 。 A)3 B)18 C)27 D)36 (四)若给定表达式(m)?a++:a--,则其中表达式m和 等价。
A)m==0 B)m!=0 C)m=0 D)m=1
(五)设有说明语句int a[10],则数组a包括了 个数组元素。 A)1 B)9 C)10 D)20 (六)以下函数test返回值类型为 。 test(int x)
{ printf(“%f\\n”,(float)x); }
A)int B)float C)void D)不确定或错误 (七)C语言规定,main函数的参数 。
A)只能有0个 B)只能有0个或一个 C)只能有0个或2个 D)可有任意个
(八)设x为整型变量,p基类型为整型的指针变量,则正确的赋值表达式是 。 A)p=&x B)p=x C)*p=&x D)*p=*x
(九)Turbo C中,int型数据在存储器中占二个字节,则以下类型数据在存储器中占的字节数为: 。
struct test { int x; float y; char z; } ;
A)2 B)3 C)6 D)7 (十)rewind()函数的作用是 。 A)重新打开文件
B)使文件位置指针重新回到文件的开始 C)使文件位置指针重新回到文件的末
D)返回文件长度值
二、阅读下列程序,写出运行结果(共18分,每题3分) [程序1]
#include
{ int a=1,b=4,c=2; 运行结果: 1 a=(a+b)/c;
printf(“%d \\n”,--a); } [程序2]
void main ( )
{ char c1=67; /*‘A’的ASCII码值为65 */
if (‘A’ <=c1 && c1<=’Z’) 运行结果: 67,D
printf(“%d,%c”,c1,c1+1); else printf(“%c”,c1); } [程序3]
viod main ( )
{ int a=0, n=5; 运行结果: 1,5,4,3,2,0 for ( ; ; ) { a++; n--;
printf(“%d,”,a); a=n;
if (n==0) break; }
printf(“%d”,a); } [程序4]
main ( )
{ int i, j; 运行结果: 1,2,4,8,16,32,64,128,256,512 static int a[10]={1,1,1,1,1,1,1,1,1,1}; for (i=0;i<10;i++) for (j=0;j
printf(“%d,”,a[i]); } [程序5]
int k=2;
f (int m) 运行结果: 6,8 { m+=k;k+=m; 5,9 printf(“%d,%d \\n”,m,k++); }
main ( )
{ int i=4; for (i++);
printf(“%d,%d \\n”,i,k); } [程序6]
void main ( )
{ static int a[10],i; 运行结果: 1 3 5 7 9 for (i=0;i<10;i++) a[i]=i+1;
for (i=0;i<10;i=i+2)
printf(“%d”,*(a+i)); }
三、阅读分析下列程序,在 处填上适当的内容使程序(或函数)完整(共21分,每空3分)
(一) 以下程序输出所有大写字母和其对应的ASCII码值。
void main ( ) { int ch;
for (ch=’A’;ch<=’Z’;ch++)
printf(“字母%c的ASCII码值是:%d\\n”,ch, 1 ); }
答案: ch
(二)以下函数的功能是将一个字符串S的内容颠倒过来。 void reserve( 2 ) 答案: char s[ ]
{ int i, j, k;
for (i=0,j=strlen(s)-1; 3 ;i++,j--) 答案: i (三)由键盘输入三个数a,b,c,计算以这三个数为边长的三角形面积。 #include { float a, b, c, s, s1; scanf(“%f%f%f”, 4 ); 答案: &a,&b,&c if ((a+b)>c && (a+c) > b && (b+c) >a) { s=(a+b+c)/2; s1=s*(s-a)*(s-b)*(s-c); s= 5 ; 答案: sqrt(s1) printf(“\\n 三角形面积为:%f \\n”,s); } else printf(“ \\n 不是三角!\\n”); } (四)从键盘输入一个字符串,把它输出到文件中,文件名由键盘输入。 #include char ch, *fn; scanf(“%s”,fn); if ((fp=fopen(fn, 6 ))==NULL) 答案: “w” { printf(“打开文件出错 \\n”); exit(1); } while ((ch=getchar( ))!=EOF) { fputc( 7 ); 答案: ch,fp putchar (ch); } fclose (fp); } 四、编程题(共21分) 1. 从键盘输入3个整数,输出其中最大数。(5分) main ( ) { int i=0, x, mx=-32768; while ( i++<3) {scanf (“%d”,&x); if (x>mx) mx=x; } printf (“\\n %d \\n”,mx); } 2. 编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。(5分) #include i=strlen(s); if (i==0) return; if (s[0] >= ’a’ && s[0] <= ’z’) s[0] += ’A’ - ‘a’; if (s[i-1] >= ’a’ && s[i-1] <= ‘z’) s[i-1] +=’A’ – ‘a’; } main ( ) { char s[ ]=”asdfgh”; uf (s); printf(“ \\n%s\\n”,s); } 3. 从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。(5分) #include float a[10], ave=0; int i; for (i=0; i<10;i++) { scanf(“%f”,&a[i]); ave +=a[i]; } ave /=10; for (i=0;i<10;i++) if (a[i] printf(“%f\\t”,a[i]); } 习题二 一、语言基础(共20分,每题2分) (一) 若a为float类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0 的值为 4.68 。 (二)设有int x=11,y=10;则以下表达式的值为 10 。 x-- >y? 10:11>y++?’a’:’z’ (三)若所有变量都已正确定义为int型则执行下列程序段后x 的值为 79 。 x=80;a=10b=16;y=9;z=0; if (a (四)i,j为int型的变量,则下面程序中的循环体的执行次数为 5 。 i=1;j=0; while(i+j<=10) { if (i>j j=j+2); else i=i+2;} (五)若有数组a[10],类型为int型,元素及值如下所示: 数组元素:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9] 元素中的值:9 4 8 3 2 6 7 0 1 5 则*(a+a[9] )的值为 6 。 (六)以下函数调用语句中实参的个数为 3 . Sub ((x1,x2) ,(x3,x4,x5),x6) (七)若有以下函数定义: int (*hs ) () { ??/*函数体*/ } 则函数hs返回的值是 整形 。 (八)某C编译程序规定,int型数据存储占2个字节,float型数据存储占4个字节,char型数据存储占1个字节,现有记录描述如下: struct stu { union { char bj[5]; int bh[2]; }class; char xm[8]; float cj; }xs; 则sizseof(xs)的值为 17 。 (九)设有以下定义:#define a 6 #define b a+4 则执行语句c=b*10(c为int型数据)后,c的值为 46 。 (十)在C中,文件指针变量的类型只能是 FILE 。 二、阅读下列程序,写出运行结果(共20分,每题4分) [程序1] #include main() { int i; 运行结果:i= 18,J=29.44 float j; i=18; j=29.4361; printf(“i=M,j=%2.2f”,i,j ); } [程序2] main() { int k=10; char c=’b’; do swith(c++) 运行结果:12 { case ‘a’:k++; case ‘b’:k--; case ‘c’:k+=3;break; case ‘d’:k=k%4; } while(c!=’c’); printf(“%d\\n”,k );} [程序3] main() { char a[]=”computer”; char t; int i,j=0; for(i=0;I<8;I++) for(j=i+1;j<8;j++) if(a[i] t=a[i]; a[i]=a[j]; a[j]=t; } printf(“%s”,a); [程序4] main() { char *p,s[]=”abcdefg”; for(p=s;*p!=’\\0’); 运行结果: { printf(“%s\\n”,p); if(*p!=’\\0’) p++; else break; } } 5、以下程序的输出结果为___hello wellcom______。main( ) { char s1[40]=\int i=0,j=0; while(s1[i]!='\\0') i++; while(s2[j]!='\\0') s1[i++]=s2[j++]; s1[i]=0; printf(\} 运行结果:utrpomec abcdefg p++; 6、#include main() { int i, j, x = 0; for (i=0; i<2; i++) { x++; for (j=0; j<3; j++) { if (j % 2) break; x++; } x++; } printf(\} 程序运行结果是: x=6 三、阅读下列程序,在 线处填上合适的内容使程序(或函数)完整(共18分,每空2分) 1. 以下程序的功能是求三个数的最小公倍数。 max (int x, int y ,int z) { if (x>y &&x>z ) return(x); else if (y>=x &&y>z) return(y) ; else return(z); } main() { int a,b,c,I=1,j,s; scanf(“%d%d%d”,&a,&b,&c); s= max(a,b,c) ; while(1) { j=s*i; if( (j%a==0)&&(j%b==0)&&(j%c==0) ) break; i++; } prinf(“%d”,j); } 2. 下面程序是判断输入的字符是否中心对称,(如”xyzzyx”和”xyzyx”都中心对称 #include char s[100],*p1,p2; int n; gets(s); n=strlen(s); p1=s; p2= s+n-1 ; while(p1 break; else {p1++; p2-- ;} if (p1 printf(“NO\\n”); else printf(“YES\\N”); } 3. 结构数组中有4人的姓名和年龄,以下程序输入四人中年龄最大的人的姓名和年龄。 #define NULL 0 static struct node { char name[20]; int age; }person[ ]={“lihong”,18, “wangjun”,19, “zhangwei”,20, “zhaofeng”,19 }; main() { struct node * p,* q; int old=0; q=NULL; p=person; for(; p!=NULL ;p++) if(old { q=p; old=p->age ; } printf(“%s,%d\\n”,q->name,q->age); } 四、编程题(共22分) 1. 有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬1 块砖,恰好一次全部搬完,编程求出成年男子 成年女子和儿童各有多少人。(6分) main() {int men,women,child; for(men=0;men<9;men++) for(womem=0;women<12;women++) {child=36-men-women; if((men*4+women*3+child/2.0)=36) printf(“%d,%d,%d\\n”,men,women,child); } 2. 非波那契数的递归如下: 除X0和X1外,序列中某个元素的值是其前两个元素的和,编写程序输入序号n,求它的非波那契数Xn。 long fib(int y) { if(y==0) return(0); else if(y==1) return(1); else return(fib(y-1)+fib(y-2)); } main() { int n; long k; scanf(“%d”,&n); k=fib(n); printf(“k=%d\\n”,k); } 3.用循环语句编程将二维数组a[3][4]的第一行和第三行对调(如下图), 并输出数组。(8分) main() { int i,j,t; int a[3][4]={2,3,4,5,3,8,10,2,7,9,3,1}; for (i=0;i<4;i++) { t=a[0][i]; a[0][i]=a[2][i]; a[2][i]=t; } for (i=0;i<3;i++) { for (j=0;j<4;j++) printf(“=”,a[i][j]); printf(“\\n”); } } 习题三 一.语言基础(共20分,每题2分) (一)正确的C语言自定义标志符是 A 。 1. A)file_bak B)abc(10) C)continue D)class+3 (二)设int x=8,y,z;执行y = z = x + +;x = y = =z后,变量x的值是 B 。 2. A)0 B)1 C)8 D)9 (三)字符串“w\\x53\\ \\ \\np \\103q”的长度是 A 。 3. A)7 B)9 C)15 D)16 (四)设int a = 9,b = 8,c = 7, x = 1;则执行语句 if (a>7) if (b>8) if (c>9) x=2 ;else x = 3; 后 x 的值是 C 。 4. A)0 B)2 C)1 D)3 (五)有如下程序 main () { int x=23; do{ printf(“%d”,x - -); }while (! x); } 该程序的执行结果是 B 。 5. A)321 B)23 C)不输出任何内容 D)陷入死循环 (六)定义一个具有8个元素的整型数组,应当使用语句 A 。 6. A) int a[8]; B) int a[2,4]; C) int a[ ]; D) int * a[8]; (七)设int x []={4,2,3,1},q,*p=&x[1];则执行语句 q = (* ――p)+ +后,变量q的值为 A 。 7. A)4 B)3 C)2 D)1 (八)函数调用时,下列说法中不正确的是 B 。 8. A) 实际参数和形式参数可以同名 B) 若用值传递方式,则形式参数不予分配存储单元 C) 主调函数和被调函数可以不在同一个文件中 D) 函数间传递数据可以使用全局变量 (九)下列数据类型中不属于构造类型的是 D 。 9. A)数组型 B)结构型 C)公用型 D)枚举型 (十)存储整型数据-7856时,在二进制文件和文本文件中占用的字节数分别是 B 。 10.A)3,2 B)2,5 C)5,5 D)5,2 二、阅读下列程序,写出运行结果(共20分,每题4分) 【程序1】 #include int x = 1,a = 0,b = 0; 运行结果: a=1,b=1 switch(x){ case 0; b + +; case 1; a + +; case 2; a + +;b + +; } printf (“a = % d ,b = % d \\n”,a,b); } 【程序2】 space (int m) { while (m - -) printf (“%c”,32); } 运行结果: * main() *** { int i ,j;printf (“\\n”); * * * for (i=5;i>=1;i - -) * * * { * * * space (i); printf (“*”); for (j=3;j>=2*(i/5)+2;j - -) { space (4-i); printf(“*”); } printf (“\\n”); } } 【程序3】 long ff(int n) 运行结果:6 { if (n>3) return (ff(n-1)+ff(n-2)); else return (3); } main () { printf (“%d\\n”,ff(4)); } 【程序4】 main () 运行结果4 0 0 -4 -3{ int i, a[5]; for(i=0;i<5;i+ +) a[i]=9*(i-2+4*(i>2))%5; for (i=4;i>=0;i- -) printf (“=”,a[i]); } 【程序5】 #include int i; char ch[2]; }a; main () { a.ch[0]=13; a.ch[1]=0; printf (“%d\\n”,a.i); } 6、以下程序的输出结果为_____ x=37___。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf(\} 7.#include void Fun(int *y) { printf(\ : *y += 20; printf(\} main() { int x = 10; printf(\ Fun(&x); printf(\} 程序运行结果是: x=10 *y=10 *y=30 X=30 三、阅读下列程序,在 处填上适当的内容使其完整。(共20分,每空2分) (一)下面程序用于计算n!的值。 main () { int i,s,n; s = 1; printf (“enter n:”); scanf(“%d”,&n); for (i=1;i< = n;i + +) ( s=s*i ); printf (“s=%d”,s); } (二)从键盘上输入一行字符(不多于40个,以回车换行符作为输入结束标记),将其中的大 写字母改为小写字母,其它字符不变,然后逆向输出。 main () { char a[40]; int n = 0; do{ scanf (“%c”,&a[n]); if( (‘A’<=a[n])&&(a[n]<=’z’)) a[n] + = 32; n + +; }while ( a[n-1] ! = ‘ \\n ’); n= n-2; while (n > = 0) printf(“%c”,a[n--]); } (四)从终端读入的文本(用@作为文本结束标志)复制到一个名字C.DAT的新文件中。 # include main () { char ch; if((fp= p exit(0); while ((ch=getchar())! = ‘@’) fpute ( *p= =x ); fclose(fp); } 四、编程题(共20分) 1.编写一程序,从键盘输入10个实数,计算并输出算术平均数。( main() { int i; float ave=0,a[10]; for(i=0;i<10;i++) scanf(“%f”,&a[i]); for(i=0;i<10;i++) ave+=a[i]; printf(“.4f\\n”,ave/10); } 2.求两个整数m和n最大公约数。(6分) #include int m,n,a,b,r; scanf(“%d,%d”,&m,&n); a=m; b=n; do { r=a%d; a=b; b=r; }while (r!=0) printf(“%d,%d is %d\\n”,m,n,a); } 7分)
正在阅读:
C语言考试复习专用三套题附答案04-20
人物动作描写的片段02-21
计算机硬件技术基础网上作业及答案11-30
管理信息系统教案第2课12-22
2016海南高中会考科目02-08
6.1 细胞的增殖-高一生物(人教版2019必修1)04-25
南京邮电大学通达学院201301-06
宋代司法检验制度浅析12-03
同意落户证明02-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 语言考试
- 复习
- 答案
- 专用
- 政治经济学试卷及答案(5000字)
- 强制清算转为破产清算的相关问题
- 祭姑母文
- 天津市社会工作者继续教育网答案 社会工作实务 课后测验
- VI手册设计文字说明参考
- 新时期大学生犯罪心理原因及对策探讨
- 教科版科学三上《水和食用油的比较》教学反思
- 10kV保护测控试验报告
- 英特尔《21世纪课堂评价》模块二讨论满分答案
- 中国教育的发展历程
- 妹子最爱的高分展示面
- 关于规范周例会管理的通知(定稿)
- 化工行业符号标准
- java程序设计题目
- 国家传感网创新示范区发展简介
- 数学广角 - 合理安排时间 课堂实录
- 计算方法拉格朗日插值公式C语言
- 计算机组成原理与系统结构课后作业答案(包健 - 冯建文 章复嘉版
- 广西建设工程检测见证取样员手册讲义 - 图文
- 农村文化产业概论、农村发展概论论文说明