《c语言复习资料(答案)-精品文档资料整理.doc》由会员分享,可在线阅读,更多相关《c语言复习资料(答案)-精品文档资料整理.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、 单项选择复习内容1、以下叙述正确的是C。A C程序基本组成单位是语句 B C程序每一行只能写一个语句C 简单C语句必须以分号作为结束符 D 注释语句可以嵌套2、下面标识符中,合法的用户标识符是 B。A 1abc B include C a-b-c123 D char3、设a和b均为int型变量,则执行以下语句后的输出为B。int a=20; int b=3; printf(%dn,a+=(b%=2);A 20 B 21 C 0 D 234、已知int i;,则执行语句 i=2.6;后,i的值为A。A 2 B 3 C 2.6 D 不确定5、若有以下定义和语句:int u=010,v=0x1
2、0,w=10,printf(%d,%d,%dn,u,v,w);,则输出结果是A。A 8,16,10 B 10,10,10 C 8,8,10 D 8,10,106、设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为A。printf(%d,sizeof(a*b)+2/5);A 4 B 8 C 6 D 77、以下程序:main() int i=10,j=1;i=i+j+;printf(%d,%d,%dn,i+,+j);执行后输出结果是C。A 12,3 B 12,2 C 11,3 D 12,38、设x、y为
3、int型变量,则执行下列语句后,y的值是A。int x=5, y=7; y = x+ * -y; A 30 B 35 C 36 D 429、以下程序运行后的输出结果是A。main() int x,y;x=y=2;y=x+-1; printf(%d %d ,x,y);y=+x-1; printf(%d %dn,x,y);A 3 1 4 3 B 3 1 3 3 C 2 1 4 3 D 2 1 3 210、已知int i=65;,则putchar(i);printf(%d,i);printf(%c,i);的输出结果为A。A A,65,A B 65,65,A C A,A,65 D A,A,A11、在嵌
4、套使用if语句时,C语言规定else总是C。A 和之前与其具有相同缩进位置的if配对B 和之前与其最近的if配对C 和之前与其最近不带else的if配对D 和之前的第一个if配对12、12、设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是C。A a&b B a&b|c C a&b&c D a|b&c13、以下程序中,while循环的循环次数是D。main() int i=0;while(i10) if(i1) continue;if(i=5) break;i+;A 1 B 10 C 6 D 死循环14、下列叙述中正确的是D。A break语句只能用于switch语
5、句B 在switch语句中必须使用defaultC break语句必须与switch语句中的case配对使用D 在switch语句中不一定使用break语句15、以下程序执行后sum的值是A。main() int i,sum=0;for(i=1;i6) n-; printf(%d,n); 该程序的输出结果是A 987 B 876 C 8765 D 9876 17、以下对二维数组a的正确定义(说明)的是C。A int a3; B float a(3,4); C double a14; D float a(3)(4);18、18、当执行以下程序时,A。int a=1;do a=a*a; while
6、(!a);A 循环体将执行1次 B 循环体将执行2次C 循环体将执行无限次 D 系统将提示有语法错误19、对于以下定义,叙述正确的是C。char x=abcdef;char x=a,b c,d,e,f;A 数组x和数组y等价 B 数组x和数组y的长度相等C 数组x的长度大于数组y的长度 D 数组x的长度小于数组y的长度20、下列描述不正确的是C。A 字符型数组中可以存放字符串B 可以对字符型数组进行整体输入和输出C 可以对整型数组进行整体输入和输出D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值21、若调用一个函数,且此函数中没有return语句,则正确的说法是A。A 该函数没
7、有返回值 B 该函数返回若干个系统默认值C 能返回一个用户所希望的函数值 D 返回一个不确定的值22、当执行下面程序时,如果输入ABC,则输出结果是A。#include#includemain() char ss10=12345;gets(ss); strcat(ss, 6789); printf(%sn,ss);A ABC6789 B ABC67 C 12345ABC6 D ABC45678 23、调用函数的实参与被调用函数的形参应有如下关系D。A 只要求实参与形参个数相等 B 只要求实参与形参顺序相同C 只要求实参与形参数据类型相同 D 上述三点均需具备24、以下正确的描述是B。A 函数的
8、定义可以嵌套,但函数的调用不可以嵌套B 函数的定义不可以嵌套,但函数的调用可以嵌套C 函数的定义和函数的调用均不可以嵌套D 函数的定义和函数的调用均可以嵌套25、具有相同基类型的指针变量p和数组y,下列写法中不合法的是D。A p=y B *p=yi C p=&yi D p=&y26、下列程序运行后的输出的数据是D。int sum(int n) int s=0,i;for(i=1;in);printf(%dn,(+p)-n);printf(%cn,+(*p-c);A 11 B 11 C 10 D 1020 20 20 20c b c b30、有以下说明语句,其中,p指向s,则结构变量s的成员nu
9、m的不正确引用是B。struct student int num;int age;s,*p;A s.num B *p.num C p-num D (*p).num二、填空复习内容1、设x为int型变量,请写出描述“x是偶数”的表达式是x%2=0。2、运行以下程序时,如从键盘上输入abcdefg,则输出结果是abc。main() char ch1,ch2,ch3;ch1=getchar(); ch2=getchar(); ch3=getchar();putchar(ch1); putchar(ch2); putchar(ch3);putchar(n);3、以下程序运行后的输出结果是9,10。#i
10、nclude main() int i=010 , j=10;printf(%d,%dn,+i,j-);4、为表示关系xyz,应使用C语言表达式x=y&Y=z。5、下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。main() int a,b,c,i;a=c=0;for(i=0;i=10;i+=2) a+=i;_b=i+1 ;c+=b;printf(偶数之和=%dn奇数之和=%dn,a, c-11 );6、以下程序的输出结果是5。main() int s,i;for(s=0,i=1;i=0;i-) ai=10-i; printf(%d%d%dn,a2,a5,a8);8、C语言规定
11、,调用一个函数时,实参变量和形参变量之间的数据传递方式是值传递。9、以下程序的输出结果是 4 。main() int a5=2,4,6,8,10, *p;p=a; p+;printf(%d, *p);班级(学生填写): 姓名: 学号: -密-封-线- (答题不能超出密封线)10、若有定义:int a23=2,4,6,8,10,12;则*(&a00+2*2+1)的值是 12 ,*(a1+2)的值是 12 。11、有以下说明语句,其中p指向stud1,利用p对结构变量中成员age的正确引用是 p-age。struct student int age; int sex; stud1,*p;三、程序填
12、空复习内容1、下列程序是求 的值。#include stdio.hmain() int i=2; float sum=1;while( i=50 ) sum=sum+1.0/i; ii2 ; printf(sum=%fn, sum );2、以下程序的功能是计算10名学生1门课成绩的平均分。float average(float array)int i;float aver,sum=array0; for(i=1; i10 ; i+) sum+= arrayi ; aver=sum/10; return aver;main()float score10,aver; int i; printf(n
13、input 10 scores:); for(i=0;i10;i+) scanf(%f,&scorei); aver= average (score) ; printf(naverage score is %5.2fn,aver);3、下面程序是把从终端读入的一行字符作为字符串放在字符数组中,然后输出,请填空。#include main()int i;char s80,*p;for(i=0;i79;i+)si= getchar() ;if(si=n) break;si= 0 ;p= s ;while(*p) putchar(*p+);4、以下程序的功能是:将字符串a复制为b。main() ch
14、ar a=I am a boy.,b20,*p1,*p2; int i;/ p1指向字符数组a的第1个字符 P1=a ; / p2指向字符数组b的第1个字符 p2=b ;/ 把数组a的一个元素赋给数组b中相应位置的元素 for( ; *p1!=0 ; p1+,p2+ ) *p2=*p1 ; *p2!=0 ; 四、 程序设计复习内容1、一个数如果恰好等于它的因子之和,这个数就称为“完数”。编程找出某范围以内的所有完数。1、#include #include void main() int i,j,sum=1; for(i=3;i=1000;i+) sum=1; for(j=2;ji;j+) if
15、( i%j=0) sum+=j; if(i=sum) printf(%3d, 因子为:,i); for( j=2; ji; j+ ) if( i%j = 0 ) printf(%3d, j ); printf(n); 2、编写程序找出水仙花数。#includeint sum(int a)int b=a%10;if(a10) return a*a*a; else return sum(a/10)+b*b*b;int main() int i;for(i=100;i1000;i+) if(sum(i)=i)printf(%dn,sum(i);return 0;3、用“起泡法”对一组整数进行排序的函
16、数。#includevoid sort(int *a,int n)int i,j,t;for(j=0;jn;j+) for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;void main()int a10;int i,j,t;printf(input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);sort(a,10);printf(the sorted numbers:n);for(i=0;i10;i+)printf(%d ,ai);printf(n);4、用递归方法计算阶乘。#include int sum(int n) if(n=0) return 1; else return n*sum(n-1); int main() int n; printf(请输入要计算阶乘的整数:); scanf(%d,&n); printf(%d!=%dn,n,sum(n); getch(); return 0;