C语言综合复习资料
发布时间:2023-04-20 14:04:52浏览次数:129C 语言综合复习资料一、单选题1. C 语言中基本数据类型有A)整型、实型、逻辑型 B)整型、字符型、逻辑型C)整型、实型、字符型 D)整型、实型、字符型、逻辑型2. 在 C 语言中,数字 029 是一个A)八进制数 B)十进制数 C)十六进制数 D)非法数3. 在以下关于 C 语言的不严格的叙述中,错误的说法是A)在标识符中,大写字母和小些字母的意义相同B)有些不同类型的变量可以在一个表达式中运算C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型D)同一个运算符号在不同的场合可以有不同的含义4. 已知 int a=4,b=5; ,这执行表达式 a=a>b 后,变量 a 的值为A) 0 B)1 C) 4 D) 55. 设有定义 int a=3,b=4,c=5; ,则以下表达式中,值为 0 的表达式是 A) a&&b B) a<=b C) a||b+c&&b-c D) !((a<b)&&!c||1)6. 以下不合法的赋值语句是A)x=(1,y=2); B)++x; C)x=y=15; D)y=int(x);7. 已定义 c 为字符型变量,则下列语句中正确的是A)c='97'; B)c="97"; C)c="a"; D)c=97;8. 能将高级语言编写的源程序转换为目标程序的软件是A)汇编程序 B)编辑程序 C)解释程序 D)编译程序9. 设有定义 char *p=“abcde\0fghjik\0”; 则 printf(“%d\n”,strlen(p));输出结果是A) 12 B) 15 C) 6 D) 510.以下选项中合法的实型常数是A) 5E2.0 B) E-3 C) .2E0 D) 1.3E11.以下非法的赋值语句是A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0;12.已定义 c 为字符型变量,则下列正确的赋值语句是A)c='66'; B)c="66"; C)c="B"; D)c=66;13.设 a=3,b=4,c=-5,则逻辑表达式:a || b+c&& b==c 的值是 A)1 B)0 C)非 0 D)语法错14.以下能正确定义数组并正确赋初值的语句是 A)int N=5,b[N][N]; B)int a[1][2]={{1},{3}}; C)int c[2][]= {{1,2},{3,4}}; D)int d[3][2]={{1,2},{34}};
}28. #include <stdio.h>fun(int a, int b){ if(a>b) return(a);else return(b); }void main(){ int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf("%d\n", r);}三、编程题1. 设有分段函数:x (x<1)Y= 2x-1 (1≤x<10) 写一程序,输入 x,输出 y 的值。3x-11 (x≥10) 2.编程任意输入两个实数 a 和 b,计算下面函数的值,并输出 y 值。 a-b a>by= a<ba*b a=b3.编程序求如下分段函数的值4.写一个判断素数的函数。要求在主函数中输入一个整数并输出相应的判断信息。5.编程序计算 s=1!-2!+3!-4!+ …… -10!,并输出结果。6.编写一个函数,将一个字符串(最多 80 个字符)中的大写字母变为小写字母,小写字母变为大写字母。要求字符串的输入与输出在主函数中完成。7.编程计算:s=1+12+123+1234+12345+123456 (必须用循环控制语句实现)8.编写函数 change 使输入的字符串按反序存放,在主函数中输入和输出字符串。例如输入是:12345abcde,则输出为:edcba543219.编程,在 N×N 矩阵中(即 N 行 N 列的数组),求主对角线和次对角线上的各元素之和。10.10 个评委给出某选手打分,编程实现去掉一个最高分和一个最低分,求最后得分 (平均
分)C 语言综合复习资料
一、单选题1C 2D 3A 4A 5D 6D 7D8D 9D 10C 11C 12D 13A 14C15A 16B 17C 18C 19D 20A 21D22B 23C 24B 25C 26C 27C 28B二、读程序写出程序执行结果题1、13,32、143、pass!warm!4、3,35、186、red7、848、***9、01112210、123 是 3 位数11、abcdefgabcdefg12、656534513、max=10,row=1,colum=214、good15、1616、517、918、4 3 119、<><>#20、656534521、222、4,3,123、a=2,b=1
24、t=2 25、area=18 26、32 27、2928、12三、编程题1. 设有分段函数:x (x<1)Y= 2x-1 (1≤x<10) 写一程序,输入 x,输出 y 的值。3x-11 (x≥10) #include <stdio.h>void main(){intx,y;printf(“输入 x:”);scanf(“%d\n”,&x);if(x<1) {y=x;printf(“x=%3d,y=x=%d\n”,x,y);}else if(x<10){y=2*x-1;printf(“x=%3d,y=2*x-1=%d\n”,x,y);}else{y=3*x-11;printf(“x=%3d,y=3*x-11=%d\n”,x,y);}}2.编程任意输入两个实数 a 和 b,计算下面函数的值,并输出 y 值。 a-b a>by= a<ba*b a=b#include <stdio.h>void main(){
floata,b,y;scanf(“%f,%f”,&a,&b);if(a<b) y=a/b;elseif(a==b)y=a*b;else y=a-b;printf(“y=%f\n”,y);}3.编程序求如下分段函数的值#include<stdio.h>#include<math.h>void main() { floatx,y;scanf(“%d”,&x);if(x<=0) y=fabs(x)+3; else if(x<1&&x>=0){y=1+x*x;}else{y=2*x+sqrt(x); printf(“x=%f,y=%f\n”,x,y);}4.写一个判断素数的函数。要求在主函数中输入一个整数并输出相应的判断信息。#include <stdio.h>void main(){intn,i;printf(“please enter a integer number,n=?”);scanf(“%d”,&n);for(i=2;i<=n-1;i++)if(n%i==0)break;if(i<n) printf(“%d is not a prime number.\n”,n);
elseprintf(“%d is a prime number.\n”,n);}求素数的问题方法有很多,同学们可以到教材或网络上进行查找学习。5.编程序计算 s=1!-2!+3!-4!+ …… -10!,并输出结果。#include <stdio.h>void main(){inti,k=1,njie=1;float sum=0;for(i=1;i<=10;i++) {njie=njie*i;sum=sum+njie*k;k=-1*k; }printf("%f\n",sum); }6.编写一个函数,将一个字符串(最多 80 个字符)中的大写字母变为小写字母,小写字母变为大写字母。要求字符串的输入与输出在主函数中完成。#include <stdio.h>void main(){inti;char a[80];gets(a);puts(a);for(i=0;i<80;i++)if(a[i]>=65&&a[i]<=90)a[i]=a[i]+32;puts(a);}7.编程计算:s=1+12+123+1234+12345+123456 (必须用循环控制语句实现)#include <stdio.h>void main(){longint t=0,s=0,i;for(i=1;i<=6;i++){t=i+t*10;s=s+t;}printf(”s=%ld\n”,s);}
本题请注意 s 数据类型的定义。8.编写函数 change 使输入的字符串按反序存放,在主函数中输入和输出字符串。例如输入是:12345abcde,则输出为:edcba54321void main(){ char a[100]; gets(a); change(a); puts(a);} #include<stdio.h>#include<string.h>void change(char a[]){inti,j,k; char temp; k=strlen(a); for(i=0;i<k;i++) for(j=i+1;j<k;j++) { temp=a[i]; a[i]=a[j]; a[j]=temp; }}9.编程,在 N×N 矩阵中(即 N 行 N 列的数组),求主对角线和次对角线上的各元素之和。#define N 10;main(){inti,j;int a[N][N];int sum=0;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);for(i=0;i<N;i++)for(j=0;j<N;j++)
if(i==j||(i+j==N))//i==j 是 判 断 是 否 主 对 角 线 的 元 素 i+j==N 是 判 断 是 否 是 次 对 角 线 的 元 素sum+=a[i][j];printf("%d",sum);}10.10 个评委给出某选手打分,编程实现去掉一个最高分和一个最低分,求最后得分 (平均分)#include <stdio.h>int main(){ int a[10],i,max,min;float sum;for(i=0;i<10;i++ ) {scanf("%d",&a[i]); }max=a[0];min=a[0];for(i=1;i<=9;i++) {if(max<a[i])max=a[i];else if(min>a[i])min=a[i]; }for(i=0;i<=9;i++) {sum=sum+a[i];}sum=(sum-max-min)/8;printf("%f\n",sum);}}
15.结构化程序设计的三种基本结构是 A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue16.在一个 C 程序中 A)main 函数必须出现在所有函数之前 B)main 函数可以在任何地方出现 C)main 函数必须出现在所有函数之后 D)main 函数必须出现在固定位置17.以下合法的字符常量是A)‘ \084’ B)‘ ab’ C)‘ \x43’ D)“ \0”18.用 8 位无符号二进制数能表示的最大十进制数为 A)127 B)128 C)255 D)25619.设有定义:int x=0,y=1,z=1;则运行表达式:x=y++>z--后,x,y,z 的值分别是A) 1,1,1 B) 1,2,0 C) 0,1,1 D) 0,2,020.设有 int x=11;则表达式(x++*1/3)的值是 A) 3 B)4 C) 11 D) 1221.若有: int x=1,n=5; 则执行语句 x%=(n%2)后,x 的值为A) 3 B)2 C) 1 D) 022.结构化程序的 3 种基本控制结构是A) if-else 结构、while 结构、for 结构 B) 顺序结构、分支机构、循环结构C) while 结构、do-while 结构、for 结构 D) 以上三种都不对23.下面程序段的输出结果是int k=11;printf(“%d,%o,%x”,k,k,k);A)11,12,11 B)11,13,13 C)11,013,0xb D)11,13,b24.在微型计算机系统中,存储一个汉字的国标码所需要的字节数是A) 1 B) 2 C) 3 D) 425.以下非法的赋值语句是A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0;26.语句:printf("%d",(a=2)&&(b=-2)); 的输出结果是A)无输出 B)结果不确定 C) 1 D) 227.设有定义语句:charstr[][20]={"Hello","Beijing"},*p=str; 则 printf("%d\n",strlen(p+20)); 输出结果是A)0 B)5 C)7 D)2028.以下选项中,与 k=++n 完全等价的表达式是A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1二、读程序,写出程序执行结果1. #include <stdio.h>
void main(){ int a=10,b=0;if(a==12) {a++; b++; }else{ a=a+3 ; b=b+3;}printf(“%d,%d\n”,a,b); }2. #include <stdio.h>void main(){ ints,i;for(s=0,i=1;i<5;i++,s+=i) ;printf(“%d\n”,s);}3. #include “stdio.h”void main(){ char n=‘c’;switch(n++){ default: printf(“error!”); break;case ‘a’: case ‘A’: case ‘b’: case ‘B’: printf(“good!”);break;case ‘c’: case ‘C’: printf(“pass!”);case ‘d’: case ‘D’: printf(“warm!”);}}4. #include <stdio.h>void main(){ int k=4,n=0;for( ; n<k ; ){ n++;if(n%3!=0) continue;k- -; }printf("%d,%d\n",k,n);}5. #include <stdio.h>int f(int b[],intm,int n){ inti,s=0;
for(i=m;i<=n;i+=2) s+=b[i];return s;} void main() { intx,a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,3,8);printf(“%d\n”,x);}6. #include <stdio.h>voidcopy_str(char from[ ],char to[ ]){ int k=0;while(from[k]!=‘\0’){ to[k]=from[k]; k++; } to[k]=‘\0’; /*末尾加上串结束标志*/ }void main(){ char str1[80]=”red”,str2[80]=”green”;copy_str (str1,str2); puts(str2);}7. #include <stdio.h>int d=1; void fun(int p){ int d=5;d+=p++;printf(“%d”,d);} void main(){ int a=3;fun(a); d+=a++; printf("%d\n", d); }8. #include <stdio.h>void main(){ int i,j;for(i=0; i<3;i++){for(j=0; j<=i;j++)
printf("*");printf("\n");}}9. #include <stdio.h>void main(){ inti;for (i=0; i<3; i++)switch (i){ case 1: printf("%d ", i);case 2: printf("%d ", i);default :printf("%d ", i); } }10. #include <stdio.h>intws(int x) { if(x/100>0) return(3);else if(x/10>0 ) return(2);else return(1); }void main() { int a=123; printf("%d 是%d 位数\n",a,ws(a));}11. #include <stdio.h>#include <string.h>void main(){ char a[10]="abc";char b[]="defg";puts(a); puts(b);puts(strcat(a,b));}12.#include <stdio.h>
void main(){ int i,n[]={1,2,3,4,5};for(i=0;i<2;i++){ n[i]=n[4-i]+1;printf("%d ",n[i]);}for(i=0;i<5;i++)printf("%d ",n[i]);}13.#include <stdio.h>void main(){ int a[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}};int i,j,row=0,colum=0,max;max=a[0][0]; for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){ max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d",max,row,colum);}14.#include <stdio.h>voidcopy_str(char from[ ],char to[ ]){ int k=0;while(from[k]!= ‘\0’){ to[k]=from[k]; k++; }to[k]=‘\0’; /*末尾加上串结束标志*/ }void main(){ char str1[80]= "good",str2[80]= "abcdef";copy_str(str1,str2);puts(str2);}15. #include <stdio.h>void main()
{ int a=0; a+=(a=8);printf(“%d\n”,a);}16. #include <stdio.h>void main(){ int x=4;if(x++>=5)printf(“%d\n”, x) ;elseprintf(“%d\n”, x--) ; }17. #include <stdio.h> #define MAX(a,b) (a>b ? a : b)+1 void main() { int i=6,j=8; printf(“%d\n”,MAX(i,j));}18.#include <stdio.h>void main(){ int i,j,m=0,n=0,k=0;for(i=6; i<=9;i++) for(j=2; j<=3;j++)switch(i%j ){ case 0: m++; break;case 1: n++; break;case 2: k++; break;default: k++;n++;m++; }printf("%d %d %d\n",m,n,k);}19. #include <stdio.h>void main(){ inti;for(i=1;i<5;i++){ if(i%2)putchar(‘<’);else
continue;putchar(‘>’);}putchar(‘#’);}20. #include <stdio.h>void main(){ int i,n[]={1,2,3,4,5};for(i=0;i<2;i++){ n[i]=n[4-i]+1;printf("%d ",n[i]);}for(i=0;i<5;i++){ printf("%d ",n[i]);}}21. #include <stdio.h>int m=13; int fun(int x,int y){ int m=3; return(x*y-m);} void main() { int a=7, b=5; printf("%d\n", fun(a,b)/m); }22. #include <stdio.h>void main(){ int n=2;printf(“%d,%d,%d\n”, ++n , n+=2 , --n) ; }23. #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\n”,a,b);}24. #include <stdio.h>void main(){ ints,t,a=-2,b=6; s=t=1;if(a>0) s=s+1;if(a>b) t=s+t;else if(a==b) t=5;else t=2*s;printf("t=%d ", t); }25. #include <stdio.h>#define S(a,b) (a)*(b) void main(){ int a=3 ,area;area=S(a,a+3) ;printf("area=%d\n",area); }26. #include <stdio.h>void main(){ inti=0,a=0;while(i<20 ){ for(;;)if((i%10)==0) break;elsei--; i+=11;a+=i; }printf("%d\n",a);}27. #include <stdio.h>void main(){ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0 ;for(i=0;i<4;i++) s+=aa[i][2];printf(“%d\n”,s);