第一篇:C语言复习题
1、.char型变量的长度为_b__个字节选择一项: a.3 b.1 c.4 d.2
2、C语言程序开头的#define表示:____c_________选择一项: a.定义变量
b.主函数 c.定义常量 d.预处理
3、short型变量的长度为_c__个字节选择一项: a.1 b.3 c.2 d.4
4、一个C语言程序总是从____b_____开始执行。选择一项: a.主程序 b.主函数 c.子程序 d.函数
5、一个C语言程序是由______d___组成。选择一项: a.子程序
b.主程序
c.过程
d.函数
6、以下哪种不属于C语言的变量类型? c a.双精度型 b.单精度型 c.多精度型 d.整型变量
7、如果有语句scanf(“%1d%d”,&a,&b);则在输入了123 45后,b的值为:_____d__选择一项: a.12345 b.123 c.45 d.23
8、如果要定义一个变量用于精确输入中国人口总数,则应该把变量类型定义为:_a____选择一项: a.long b.char c.short d.float
9、如果要定义一个变量用于输入商品单价,则应该把变量类型定义为:____d___选择一项: a.short b.int c.char d.float
10、如果要求ax+b=0的根(a不等于0),则下面可以求x的值的方法是:_d___选择一项: a.ax+b=0 b.以上都不对 c.a+b=0 d.x=-b/a
11、如果要计算x的平方并赋值给y,一般使用的方法是:_____c___选择一项: a.y=x*x b.y=x^2 c.y=pow(x,2)d.y=x2
12、定义圆周率为常数的方法是____b_选择一项: a.const float PI=3.14;b.#define PI 3.14 c.以上都不对 d.float PI=3.14;
13、已知变量c为字符型,且c='A',则执行c+=33后,c的值变为:_b_______选择一项: a.'A' b.'b' c.'B' d.'a'
14、无符号short型能表示的数的范围是:____b_____选择一项: a.0~65536 b.0~65535 c.-32768~32767 d.0~255
15、语句printf(“%2f”,0.418)会输出:_____a_____选择一项: a.0.418000 b.0.418 c.0.41 d.0.42
16、输出语句printf(“%-5d”,123)会输出__a__选择一项: a.123__(_表示空格,下同)b.--123 c.以上都不对 d.__123 char型变量只能存放字符,不能用于存放数字 × C程序中可以用“=”为常量赋值选择一项:×
C程序中,变量的值是可以变化的选择一项:√ 一个C语言程序可以不包含主函数选择一项:×
一个C语言程序可以包含一个以上的主函数选择一项:× 变量可以多次赋值选择一项:√ 只要是以字母或下划线开头,全部由字母、数字和下划线组成的,长度不超过8个的标识符,都可以用来做变量名 选择一项:×
可以在定义变量的时候就对它赋值选择一项 √
定义了一个int变量x后,如果要用它存放实数,可以再把它定义为float型,即:int x;float x;×
定义多个变量时可以同时对它们进行赋值,如:int x=y=0;×
1、已知int x=10,y=20,z=30;,以下语句执行后x,y,z的值是_______。if(x>y)z=x;x=y;y=z;printf(“%d,%d,%d”,x,y,z);选择一项: a.20,30,30 b.10,20,30 c.20,30,20 d.20,30,10
正确答案是:20,30,30
'
2、若以下变量均是整型,且有语句num=sum=7;,则执行表达式++sum,++num后sum的值是_________。选择一项: a.9 b.10 c.7 d.8
正确答案是:8
3、下面不正确的C语句是
。选择一项: a.a=--a b.a=3++;c.a=a--;d.a=++a;
正确答案是:a=3++
4、下面不正确的C语句是
。选择一项: a.if(x>0)x=x;b.if x>0 x=x+2;c.if(x<=0)x=x+2;d.if(x<0)x=x;
正确答案是:if x>0 x=x+2;
5、下面不正确的C语句是
。选择一项: a.x&&=2;b.x/=x;c.x%=2;d.x+=2;
正确答案是:x&&=2;
6、下面输出结果为2的C语句是
。选择一项: a.printf(“%d”,(x=0,x=++x));b.printf(“%d”,(x=0,x=x++));c.printf(“%d”,(x=1,x=x++));d.printf(“%d”,(x=1,x+=x));
正确答案是:printf(“%d”,(x=1,x+=x))
7、以下不符合C语言语法的赋值表达式是_________。选择一项: a.a=9+e b.a=9 c.a[0]=2 d.a+2=x
正确答案是:a+2=x
8、以下运算符优先级最低的是__________选择一项: a.& b.!= c.&& d.||
正确答案是:||
9、在C语言中,要求运算数必须是整型的运算符是_______。选择一项: a.% b.++ c.!= d./
正确答案是:%题目
10、若x、i、j都是int型变量,则执行下面表达式x=(i=4,j=4,i+j)后x的值为_________。选择一项: a.52 b.4 c.8 d.32
反馈正确答案是:8
11、若以下变量均是整型,且有语句num=sum=7;,则执行表达式++sum,++num后sum的值是_________。选择一项: a.8 b.7 c.10 d.9
正确答案是:8
12、若有定义:
int a=7;
float x=2.0,y=4.0;则表达式x+a%3*(int)(x+y)的值是_________。选择一项: a.3.5 b.8 c.2.5 d.4.5
正确答案是:8
C语言规定if和else必须成对使用。×
C语言规定,else总是与它上面的最近的if配对: × if语句可以嵌套使用。√
switch„case结构中case后的表达式必须为常量表达式。:√
switch„case结构中条件表达式和常量表达式值可以为float类型。×
switch后面圆括号内的表达式的值和case后面的常量表达式的值都必须是整型或字符型,不允许是浮点型。对
所有关系运算符的运算优先级相同。×
语句int a=2;if(a=3)b=1;执行后b的值是1。√
1、下面程序段的运行结果是_______。int a=1,b=2,t;while(a
反馈正确答案是:2,1
2、以下程序执行后的输出结果是_____。#include “stdio.h” main(){
int i,s=0;
for(i=1;i<10;i+=2)s+=i;
printf(“%dn”,s);} 选择一项: a.25 b.26 c.21 d.20
答案是:25
3、循环语句for(int a=0;a<3;a++);_______。选择一项: a.是无限循环
b.循环次数不定
c.循环4次
d.循环体循环执行3次
正确答案是:循环体循环执行3次
4、设有程序段:
int i=5;while(i==0)i--;
则下面描述中正确的是_______。选择一项: a.循环是无限循环
b.循环体语句一次也不执行
c.循环体语句执行一次
d.while循环执行5次
正确答案是:循环体语句一次也不执行
5、设有程序段: int k=10; while(k==0)k=k-1;则下面描述中正确的是_______。选择一项: a.循环是无限循环
b.while循环执行10次
c.循环体语句执行一次
d.循环体语句一次也不执行
正确答案是:循环体语句一次也不执行
6、设有程序段:int k=5;while(k>0)k--;则下面描述中正确的是_______。选择一项: a.循环体语句执行5次
b.循环体语句一次也不执行
c.循环是无限循环
d.while循环执行5次
正确答案是:循环体语句执行5次
'C语言中while和do-while循环的主要区别是do-while允许从外部转到循环体内选择一项: 错
'for循环体语句中,可以包含多条语句,但要用花括号括起来选择一项:√ '执行for(I=0;I<4;I++);后I的值为3选择一项: 错
break语句和continue语句不可以同时出现在同一个循环体内:× break;语句执行时结束本次循环,开始下一次循环。: × break;语句执行时退出到包含该break;语句的循环。:√ continue语句的作用是结束整个循环的执行: ×
C语言中while和do-while循环的主要区别是do-while循环只能用break语句退出循环: × C语言中while和do-while循环的主要区别是do-while循环只能用continue语句退出循环: ×
C语言中while和do-while循环的主要区别是do-while的循环体不能是复合语句: ×
C语言中while和do-while循环的主要区别是do-while的循环体至少无条件执行一次:√
C语言中while和do-while循环的主要区别是while的循环控制条件在前: × c语言中不能使用do-while语句构成循环嵌套: × c语言中不能使用for语句构成循环嵌套: × c语言中不能使用while语句构成循环嵌套: × c语言中只能使用for语句构成循环嵌套: ×
C语言中,do-while语句构成的循环只能用break语句退出。×
do—whiLe语句构成的循环,当while后的表达式值为零时结束循环:√ do—whiLe语句构成的循环,当while后的表达式值为非零时结束循环: ×
do„while语句的循环体至少执行1次,while和for循环的循环体可能一次也执行不到。√ for、while、do-while循环中的循环体均可以由空语句构成:√ for循环只能用于循环次数已经确定的情况: × for循环是先执行循环体语句,后判定表达式: ×
for循环表达式的括号内的3个表达式均不可以省略: × while循环是先判断表达式后执行循环体语句:√ 从多层循环嵌套中退出时,只能使用goto语句: × 只能在循环体内和switch语句体内使用break语句:√ 在for循环中,不能用break语句跳出循环体:×
在循环中使用break 语句的功能是使程序执行结束: ×
在循环中使用break 语句的功能是终止本次循环,继续下次循环: × 在循环中使用break 语句的功能是跳出包含此break语句的所有循环: × 在循环体内使用break语句或continue语句的作用相同: ×
在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。: × 强制终止死循环可以使用CTRL+BREAK组合键:√ V 所有类型的循环都可以进行嵌套使用选择一项:√
执行语句for(i=0;i<3;i++)printf(“*”);时,表达式i++执行3次: × 执行语句for(i=0;i<3;i++)printf(“*”);时,表达式i++执行4次:√
用1作while循环的判断条件,则循环一次也不执行: ×
由int i=-1;while(i<10)i+=2;i++;可知此while循环的循环体执行次数为6次。:√
程序有死循环的时候,上机编译不能通过: ×
程序段x=-1;do{x=x*x;} while(!x);循环体执行一次:√ 程序段x=-1;do{x=x*x;} while(!x);循环体执行二次: × 程序段x=-1;do{x=x*x;} while(!x);是死循环: × 程序段x=-1;do{x=x*x;} while(!x);有语法错误:×
1、下面程序段的运行结果是_______。char a[7]=“abcdef”;char b[4]=“ABC”;strcpy(a,b);
printf(“%c”,a[5]);选择一项:
a.e b.f
c.一个空格
d.
正确答案是:f
2、判断字符串c,d是否相等,应当使用_________.选择一项: a.if(strcmp(c,d)==0)b.if(c==d)
c.if(strcpy(c,d))d.if(c=d)
正确答案是:if(strcmp(c,d)==0)
3、判断字符串str1,str2是否相等,应当使用()选择一项: a.if(str1==str2)
b.if(str1=str2)
c.if(strcpy(str1,str2))d.if(strcmp(str1,str2)==0)
正确答案是:if(strcmp(str1,str2)==0)
4、有下面程序段, 则_______。char a[3],b[]=“China”;a=b;printf(“%s”,a);选择一项: a.运行后将输出Chi b.运行后将输出Ch c.编译出错
d.运行后将输出China 正确答案是:编译出错
5、有如下数组声明” int values[30];”,下标值引用错误的是选择一项: a.values[30] b.values[10] c.values[0] d.values[20]
正确答案是:values[30]
6、给字符数组a、b的首元素赋值,应当使用语句_______。选择一项: a.a[1]=1,b[1]==2;b.a[0]=1;b[0]=2;c.a[1]==1,b[1]=2 d.a[0]==1,b[0]==2
正确答案是:a[0]=1;b[0]=2;
C语言中,在对全部数组元素赋初值时,必须指定数组的长度。× C语言中,字符串以' '为结束标志。选择一项:√ C语言中,字符串以'1'为结束标志。选择一项: ×
C语言中,数组元素在内存中是顺序存放的,它们的地址是连续的。选择一项:√ C语言中,数组元素的下标是从0开始的,下标不能越界。选择一项:√ C语言中,数组元素的下标是从1开始的,下标不能越界。选择一项: ×
C语言中,数组名是一个常量,是数组首元素的内存地址,可以重新赋值。选择一项: × C语言中,用格式符“%s”输入字符数组时,数组名前不能加&。选择一项:√ 一个数组中的所有元素可以具有不相同的数据类型。选择一项: × 使用字符串处理函数strcmp需要包含头文件string.h。选择一项:√
假设int型变量占两个字节的存储单元,若有定义:
int x[10]={0,2,4};
则数组x在内存中所占字节数为10 ×
已知字符数组str1的初值为“China”,则语句str2=str1;执行后字符数组str2也存放字符串“China”。×数组大小可变,但是同一数组中所有数组元素的类型必须相同:× 数组大小可变,同一数组中可以有不同类型的数组元素 × 数组大小固定,但是同一数组中可以有不同类型的数组元素 × 数组大小固定,同一数组中所有元素的类型必须相同
√ 数组定义int a[]=”string”;不合法:√
若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小不确定 × 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是3 :√
1、编程统计高等数学(分数为:65,34,75,55,85,45,95,90,80,70)及格的学生的平均成绩 提示:
for(int i=0;i<10;i++){ if(xs[i]>60){ sum+=xs[i];n++;} } „„
2、请编写一个函数计算购买商品的折扣金额,其中折扣率为90%,调用该函数计算并输出3种商品(单价分别为:6.50、12.50、10.00,数量分别为30、20、40)的折扣金额。
其中,函数可定义为: …… double getMoney(double price, int num){ …… } void main(){ printf(“商品一折扣金额=%.2fn”, getMoney(6.50,30));printf(“商品二折扣金额=%.2fn”, getMoney(12.50,20));printf(“商品三折扣金额=%.2fn”, getMoney(10.00,40));}
3、编写一个查表程序,即若干个数据存放在一个表(数组)中,程序运行时任意输入一个数,找出并输出表中大于该数的所有数。
代码提示: ……
scanf(“%d”,&x);for(int i=0;i<10;i++){ if(a[i]>x)printf(“%dn”, a[i]);} ……
4、编程统计符合助学金发放标准的学生人数,标准是学习成绩及格并且家庭收入低于每月2000元。
提示如下:
o o 定义两个数组,一个是成绩数组cj[10],一个是家庭收入数组sr[10] 关键代码:
……
for(int i=0;i<10;i++){ if(cj[i]>=60 && sr[i]<2000)n++;}
5、请写程序求出1-20的偶数和。
6、编程统计1,5,6,7,9,12,15,6,3,9中有几个可以被5整除的数。
7、编程统计1,5,6,7,9,12,15,6,3,9中有几个可以被5整除的数。
8、编写函数fun计算表达式x+2y+3z的值,其中x、y、z为整型参数。
9、编写函数getnum(int a[], n),找出并返回含n个元素的整型数组中的最小值或最大值。
10、编写程序,找出数组中的最小值或最大值。
编程题目重点内容: 多分支选择结构
求数组的最大值,最小值,平均值及大于(或小于)平均值的数 循环及循环嵌套的应用
求某区间范围的奇数和、偶数和或奇数个数(偶数个数),引申题目为“被n整除的数” 函数的定义及调用
以下是课堂中讲得较少的题目,复习时注意查漏补缺。
编程求一元二次方程a*x*x+b*x+c=0的实根(a,b,c都为整数),要求系数a,b,c从键盘输入,若无实根有相应提示。
#include “stdio.h” #include “math.h” main(){ int a,b,c,d;float x1,x2;scanf(“%d%d%d”,&a,&b,&c);d=b*b-4*a*c;if(d>=0){
x1=(-b+sqrt(d))/2*a;
x2=(-b-sqrt(d))/2*a;
printf(“x1=%f,x2=%fn”,x1,x2);} else
} printf(“此方程没有实根!”);
编写函数fun计算表达式x+2y+3z的值,其中x、y、z为整型参数。
int fun(int x,int y,int z){ return x+2*y+3*z;}
编写一个与strlen函数功能一样的函数(测试字符串长度函数),用其测试任意输入的字符串的长度,并输出结果。
#include “stdio.h” main(){ char a[100];int i=0;gets(a);while(1){
if(a[i]!=' ')
i++;
else
break;
} printf(“%dn”,i);
}
请编程计算并输出数据30.5,55.0,70.4,77.0,100.0,50.8的平均值和小于平均值的数据。
#include “stdio.h” main(){ float a[6]={30.5,55.0,70.4,77.0,100.0,50.8};float sum=0,ave;int i;for(i=0;i<6;i++)
sum=sum+a[i];ave=sum/6;printf(“ave=%fn”,ave);for(i=0;i<6;i++){
if(a[i] printf(“%.1f ”,a[i]);} } 读小学的小明同学数学考试不及格,加法题的错误特别多,父亲得知后决定要惩罚他,惩罚措施如下:计算式子1+1=2,2+2=4,4+3=7,7+4=11,...一直算下去,直到某个加式的结果大于1000为止,请问小明一共要写多少个加式?试编程实现之。 #include “stdio.h” main(){ int i,sum;sum=1;for(i=1;sum<=1000;i++){ sum=sum+i;} printf(“%dn”,i); } 设有鸡兔同笼,头共35个,脚共94只,求鸡和兔各几只 #include “stdio.h” main(){ int ji,tu;for(ji=1;ji<=34;ji++){ tu=35-ji; if(2*ji+4*tu==94) printf(“ji=%d,tu=%dn”,ji,tu); } } 输入三个数存入变量a,b,c并进行交换,最后a,b,c三个变量的内容从小到大排列并输出 对输入的温度进行判断,如果低于20度则输出“冷”,21-26输出“适宜”,27以上输出“热” #include “stdio.h” main(){ int t; printf(“请输入温度”);scanf(“%d”,&t);if(t<=20)printf(“冷n”);else if(t>=21 && t<=26)printf(“适宜n”);else printf(“热n”); } 公共C考试注意事项: 1.“两证齐全”:务必带上学生证(或一卡通)与身份证; 2.提前进场检验电脑是否一切正常,如有无法使用情况,及时报告监考老师申请换位置; 3.考试过程中如遇电脑死机,重启等问题,不要自行处理,及时报告监考老师。4.在没做完试卷前,请勿点击“交卷”按钮。5.考试中不定时查看考试界面右下角的“剩余时间”,如遇长时间不动,报告监考老师处理。6.交卷后不要在考场附近逗留影响未交卷考生。 7.交卷后请勿打电话向课任老师求分,如有这种情况,酌情扣减平时成绩。8.考试后3-5天,可在教务系统查询分数,如对分数有异议,可要求查分。 1.编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。#include double fact(int k){ double t=1;int i;for(i=1;i<=k;i++)t*=i;return t;} void main(){ int i,n;double s=0;scanf(“%d”,&n);for(i=1;i<=n;i++)s+=1/fact(i);printf(“%fn”,s);} 2.输入一个x,输出下面分段函数f(x)的值。要求将分段函数的计算定义成函数。 #include int f(double x)// 函数定义 { int y=0;if(x>0)y=1;else if(x==0)y=0;else y=-1;return y;} void main(){ double x;int y;scanf(“%lf”,&x);y=f(x);// 函数调用 printf(“f(%g)=%dn”,x,y);} 3.输入一个正整数,输出该数的各个数字之和。要求编写函数,计算整数的各个数字之和。#include int sum(int a){ int s=0;while(a!=0){ s+=a%10;a=a/10;} return s;} void main(){ int x;scanf(“%d”,&x);printf(“%dn”,sum(x));} 4.输入两个正整数a和n,求a+aa+aaa+……+aa…a(最后一项为n个a)之和。例如输入2和3,输出246(即2+22+222)。要求定义并调用函数f(a,n),它的功能是返回aa…a(n个a)。例如f(2,3)返回222。#include int f(int a,int n){ int s=0;for(;n>0;n--)s=s*10+a;// s+=pow(10,n-1)*a;return s;} void main(){ int a,n,sum=0,i;printf(“input a n:n”); scanf(“%d%d”,&a,&n);for(i=1;i<=n;i++)sum+=f(a,i);printf(“%dn”,sum);} 5.输入三个数,输出它们的最小值。要求定义一个函数,返回两个数的最小值。#include double min(double x,double y){ if(x return x;else return y;} void main(){ double x,y,z,t;scanf(“%lf%lf%lf”,&x,&y,&z);t=min(x,y);t=min(t,z);printf(“min:%fn”,t);} 6.在主函数中输入字符c和m,调用函数prn,连续将字符c输出m次。定义函数prn,完成连续将某个字符c输出m次后换行。#include void prn(char,int);// 函数声明 void main(){ char c;int m;printf(“Input c m:n”);scanf(“%c%d”,&c,&m);prn(c,m);} void prn(char c,int m){ int i;for(i=1;i<=m;i++)putchar(c);printf(“n”);} 7.输入一个整数n,计算3.2n的值。要求定义函数计算xn 值。#include double fact(double x,int n);void main(){ double x,y;int n;printf(“Input x n:n”);scanf(“%lf%d”,&x,&n);y=fact(x,n);printf(“%fn”,y);} double fact(double x,int n){ int i;double t=1;for(i=1;i<=n;i++)t=t*x;return t;} 8.输入平面上p1(x1,x2)、p2(x2,y2)两点坐标,计算两点间的距离输出。要求定义一个函数计算平面上两点间的距离。#include #include double f(double,double,double,double);void main(){ double x1,x2,y1,y2,d;printf(“Input(x1,y1),(x2,y2):n”); scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2);d=f(x1,y1,x2,y2);printf(“%fn”,d);} double f(double x1,double y1,double x2,double y2){ double d;d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));return d;} 9.输出一张摄氏温度——华氏温度转换表。摄氏温度取[-100℃ ~150℃ ],温度间隔5℃,要求定义函数ctof(c),将摄氏温度转换为华氏温度,转换公式:F=32+C*9/5 #include void main(){ float c,f, ctof(float);int i;for(i=0,c=-100;c<=150;c+=5){ f=ctof(c);printf(“%6.0f %-6.0f”,c,f);i++;if(i%5==0)printf(“n”);} } float ctof(float c){ float f;f=32+c*9/5;return f;} 10.求11~999之间所有“回文数”之和。要求编制函数 JSValue(m)用于判断m是否为回文数。回文数是指各位数字左右对称,例如11、121、676、909等等。#include int JSValue(int m){ int a=0,b;b=m;while(b!=0){ a=a*10+b%10;b=b/10;} if(a==m)return 1;else return 0;} void main(){ int s=0,i;for(i=11;i<=999;i++)if(JSValue(i)==1)s+=i;printf(“%dn”,s);} 11.输入100个学生的数学课程成绩,计算平均分,并统计成绩在平均分数正负10%区间的学生的人数。#include void main(){ int a[100],i,k=0;float sum=0,aver;for(i=0;i<100;i++){ scanf(“%d”,&a[i]);sum+=a[i];} aver=sum/100;for(i=0;i<100;i++)if(0.9*aver<=a[i]&&a[i]<=1.1*aver)// 当前成绩在平均分数正负10%区间 k++;printf(“%f,%dn”,aver,k);} 12.输入两个正整数m和n(m#include int isprime(int x){ int i;for(i=2;i if(x%i==0)return 0;return 1;} void main(){ int m,n,s=0,k;scanf(“%d%d”,&m,&n);for(k=m;k<=n;k++)if(isprime(k)==1)s+=k;printf(“%dn”,s);} 13.输入一个字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数(例如:输入morning回车,再输入n,输出2)。#include main(){ char s[80],c;int i,k=0;printf(“输入字符串:n”);gets(s);printf(“输入字符:n”);c=getchar();for(i=0;s[i]!=' ';i++)if(s[i]==c)k++;printf(“%s中包含%d个%cn”,s,k,c);} 14.输入10组数,每组数3个数,输出每组数的最大值。要求定义并调用函数max(x,y,z)求x、y、z的最大值。#include double max(double x,double y,double z){ double m;m=x;if(mif(mreturn m;} void main(){ double x,y,z,i;for(i=1;i<=10;i++){ scanf(“%lf%lf%lf”,&x,&y,&z);printf(“%fn”,max(x,y,z));} } 15.输入一个字符串,统计其中数字字符出现的次数。#include void main(){ char s[80];int i,n=0;gets(s);for(i=0;s[i]!=' ';i++)if(s[i]>='0'&&s[i]<='9')n++;printf(“%s中包含%d个字符n”,s,n);} 16.将一个大小为10的数组b的值按逆序重新存放(数组的值由键盘任意输入,不使用辅助数组)。#include void main(){ double a[10],t;int i,j;for(i=0;i<10;i++)scanf(“%lf”,&a[i]);for(i=0,j=9;i { t=a[i];a[i]=a[j];a[j]=t;} for(i=0;i<10;i++)printf(“%8.2f”,a[i]);} 17.计算5×5数组周边元素的和。#include void main(){ double a[5][5],sum=0;int i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(“%lf”,&a[i][j]);for(i=0;i<5;i+=4)for(j=0;j<5;j++)sum+=a[i][j];// 第1、最后两行元素和 for(i=1;i<4;i++)for(j=0;j<5;j+=4)sum+=a[i][j];// 最左、右两列(不包括角上)元素和 printf(“%8.2fn”,sum);} 18.输入一5行、5列的数组,将数组的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后以行列对齐格式输出数组内容。#include void main(){ float a[5][5],t;int i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(“%f”,&a[i][j]);for(i=0;i<5;i++){ t=a[i][i];// { for(j=0;j<5;j++)for(j=0;j<5;j++)// if(i!=j)a[i][j]=a[i][j]/a[i][j];a[i][j]=a[i][j]/t;// a[i][i]=1;} } for(i=0;i<5;i++){ for(j=0;j<5;j++)printf(“%8.2f”,a[i][j]);printf(“n”);} } 19.输入一个字符串(字符个数少于80),判断是否为回文?若是输出YES,否则输出NO。 解一: #include void main(){ char s[80];int i,j;gets(s);for(j=0;s[j]!=' ';j++);// 求字符串长度 for(i=0,j--;i if(s[i]!=s[j]){ printf(“NOn”);break;} if(i>=j)printf(“YESn”);} 解二: #include void main(){ char s[80];int i,j,flag=1;gets(s);for(j=0;s[j]!=' ';j++);for(i=0,j--;i if(s[i]!=s[j])flag=0;if(flag==1)printf(“YESn”);else printf(“NOn”);} 20.编写函数fun,返回一个数组(10个数)中除最大值和最小值以外的平均值。#include double fun(double a[ ],int n){ double sum=0,max,min;int i;max=min=a[0];for(i=0;i { if(max else if(min>a[i])min=a[i];sum+=a[i];} return(sum-max-min)/(n-2);} void main(){ double b[10],v;int i;for(i=0;i<10;i++)scanf(“%lf”,&b[i]);v=fun(b,10);printf(“average:%.2fn”,v);} 21.在主函数中输入一个正整数x,编写函数f1,它的功能是:求出能整除x且不是偶数的各正整数,并放在数组a中,这些除数的个数返回给主函数。在主函数中输出各除数。#include int f1(int a[ ],int x){ int j,n=0;for(j=1;j<=x/2;j+=2)if(x%j==0){ a[n]=j;n++;} return n;} void main(){ int a[20],i,n,x;scanf(“%d”,&x);n=f1(a,x);for(i=0;i printf(“%5d”,a[i]);printf(“n”);} 22.在主函数中输入6行、6列的数组和变量m的值,编写函数f2,该函数的功能是:将数组左下半三角元素中的值乘以m。在主函数中以行列对齐格式输出该数组。#include void f2(int a[ ][6],int m){ int i,j;for(i=0;i<6;i++)for(j=0;j<=i;j++)a[i][j]*=m;} void main(){ int a[6][6],i,j,m;for(i=0;i<6;i++)for(j=0;j<6;j++)scanf(“%d”,&a[i][j]);printf(“Input m:”);scanf(“%d”,&m);f2(a,m);// 调用函数 for(i=0;i<6;i++){ for(j=0;j<6;j++)printf(“%5d”,a[i][j]);printf(“n”);} } 23.编写一个函数f3,它的功能是:实现两个字符串的连接。#include void main(){ char s1[100],s2[40];void f3(char s1[ ],char s2[ ]);gets(s1);gets(s2);f3(s1,s2);puts(s1);} void f3(char s1[ ],char s2[ ]){ int i,j;for(i=0;s1[i]!=' ';i++);// 找s1 中字符串结束位置 for(j=0;s2[j]!=' ';j++,i++)s1[i]=s2[j];// 将s2 中字符串连接到s1后 s1[i]=' ';// 连接后加结束标志 return;} 24.在数组x的10个数中求平均值v,找出与v相差最小的数组元素。#include #include void main(){ double x[10],v,d;int i;for(i=0,v=0;i<10;i++){ scanf(“%lf”,&x[i]);v+=x[i];} v=v/10;d=x[0];for(i=1;i<10;i++)if(fabs(d-v)>fabs(x[i]-v))d=x[i];printf(“平均值:%-8.2f,与平均值最近元素:%-8.2fn”,v,d);} 25.输入n(n≤20)个数放在一维数组中,找出其中最小的数,将它与数组最前面的数交换后输出这些数。#include void main(){ int i,k,temp,n,a[20];printf(“Input n:n”);scanf(“%d”,&n);for(i=0;i scanf(“%d”,&a[i]);for(k=0,i=1;i if(a[i] temp=a[0];a[0]=a[k];a[k]=temp;for(i=0;i printf(“Input %d numbers:n”,n);for(i=0;i printf(“Input x:”);scanf(“%d”,&x);for(i=n-1;i>=0;i--)if(a[i]>x)a[i+1]=a[i];else break;a[i+1]=x;for(i=0;i} 27.输入一个5行、6列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个下标值。#include #include void main(){ int a[5][6],i,j,max,maxi,maxj;for(i=0;i<5;i++)for(j=0;j<6;j++)scanf(“%d”,&a[i][j]);max=abs(a[0][0]);maxi=maxj=0;for(i=0;i<5;i++)for(j=0;j<6;j++)if(abs(a[i][j])>max){ max=abs(a[i][j]);maxi=i;maxj=j;} printf(“max: %dn”,a[maxi][maxj]);printf(“row: %d col: %dn”,maxi,maxj);} 28.从键盘输入任意一个整数,统计该整数中出现的不同数字的个数。#include void main(){ int x,a[10]={0},i,n=0;printf(“Input x:n”);scanf(“%d”,&x);while(x!=0){ a[x%10]=1;x=x/10;} for(i=0;i<10;i++)n+=a[i];printf(“%dn”,n);} 29.三角形面积公式为: 其中 s=(a+b+c)/2 a、b、c分别是三角形的三条边。请分别定义计算s和area的宏,写程序,在程序中用带实参的宏名来求面积。#include #include #define s(a,b,c)(a+b+c)/2 #define area(a,b,c,s)sqrt(s*(s-a)*(s-b)*(s-c))main(){ double x,y,z,d,t;scanf(“%lf%lf%lf”,&x,&y,&z);if(x+y>z&&x+z>y&&y+z>x){ d=s(x,y,z);t=area(x,y,z,d);printf(“area=%fn”,t);} else printf(“error!n”);} 30.编程,输入一个正整数,将其转换成二进制数。#include main(){ int x,a[32],i,j;printf(“Enter x:”);scanf(“%d”,&x);for(i=0;x!=0;i++){ a[i]=x%2;x/=2;} for(j=i-1;j>=0;j--)printf(“%d”,a[j]);printf(“n”);} 31.输入一行字符,统计并输出其中英文字母、数字字符、空格和其他字符的个数。#include void main(){ char str[80];int zm,sz,kg,qt,i;zm=sz=kg=qt=0;gets(str);for(i=0;str[i]!=' ';i++)if(str[i]>='A'&&str[i]<='Z'|| str[i]>='a'&&str[i]<='z')zm++;else if(str[i]>='0'&&str[i]<='9')sz++;else if(str[i]==' ')kg++;else qt++;printf(“ 字母=%d,数字=%d,空格=%d,其它=%dn”,zm,sz,kg,qt);} 32.编制函数del_char,函数原型为 void del_char(char *a,char ch),函数的功能是删除a指向的字符串中的值为ch的字符。例如从字符串“AscADef” 中删除 'A' 后,字符串为“scDef”。#include void del_char(char *a,char ch){ char *p;p=a;while(*a!=’ ’){ if(*a!=ch){ *p=*a;p++;} a++;} *p=’ ’;} void main(){ char s[80],ch;printf(“请输入字符串:”);gets(s);printf(“输入要删除字符:”);ch=getchar();del_char(s,ch);puts(s);} 33.编制函数,其功能是在float类型1维数组中查找最大值、最小值并将它们返回到主函数输出。#include void max_min(int *a,int n,int *max,int *min){ int *p;*max=*min=*a;for(p=a;p if(*p>*max)*max=*p;if(*p<*min)*min=*p;} } void main(){ int a[10],i,max,min;for(i=0;i<10;i++)scanf(“%d”,a+i); max_min(a,10,&max,&min);printf(“max=%d,min=%dn”,max,min);} 34.输入10个数,按绝对值从小到大排序后输出。要求定义一个函数sort,完成绝对值从小到大排序。#include #include void sort(int *a,int n){ int i,j,k,t;for(i=0;i { k=i;for(j=i+1;j if(fabs(*(a+j))t=*(a+i);*(a+i)=*(a+k);*(a+k)=t;} } void main(){ int a[10],i;for(i=0;i<10;i++)scanf(“%d”,a+i);sort(a,10);for(i=0;i<10;i++)printf(“%d ”,*(a+i));} 35.输入n和x,n和x分别表示对数组前n个元素赋初值为x。要求定义一个函数value,完成对一维整型数组的n个元素进行赋值,具体赋值x。#include void value(double *a,int n,double x){ int i;for(i=0;i *(a+i)=x;} void main(){ double a[10],x;int i,n;printf(“Input n x:n“);scanf(”%d%lf“,&n,&x);value(a,n,x);for(i=0;i printf(”%8.2f“,*(a+i));} 36.定义一个函数,计算两个数的和与乘积。#include void f(double x,double y,double *p,double *q){ *p=x+y;*q=x*y;} void main(){ double a,b,add,mult;printf(”Input a b:n“);scanf(”%lf%lf“,&a,&b);f(a,b,&add,&mult);printf(”add=%-8.2f mult=%-8.2fn“,add,mult);} 37.定义一个函数,将一维数组中最大值及最小值交换位置。#include void f(int *a,int n){ int i,*p,*q,t;for(i=0,p=q=a;i { if(*p<*(a+i))p=a+i;if(*q>*(a+i))q=a+i;} t=*p;*p=*q;*q=t;} void main(){ int a[10],i;for(i=0;i<10;i++)scanf(”%d“,a+i);f(a,10);for(i=0;i<10;i++)printf(”%d “,*(a+i));} 38.编写求字符串长度函数strlen,将字符串中小写字母转换成大写字母函数。#include int strlen(char *s){ int i;for(i=0;*(s+i)!=' ';i++);return i;} void cov(char *s){ for(;*s!=' ';s++)if(*s>='a'&&*s<='z')*s-=32;} void main(){ char a[100];gets(a);printf(”strlen:%dn“,strlen(a));cov(a);puts(a);} 39.编写函数void fun(int *a, int *n),它的功能是:求出1到100之内能被3或者7整除,但不能同时被3和7整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。#include void fun(int *a, int *n){ int i,j;for(i=1,j=0;i<=100;i++)if((i%3==0||i%7==0)&&i%21!=0){ a[j]=i;j++;} *n=j;} void main(){ int a[100],i,n;fun(a,&n);for(i=0;i printf(”%d “,*(a+i));} 40.编程,检查一个5×5二维数组a是否对称(即:对所有i和j都有a[i][j]=a[j][i])。若是输出YES,否则输出NO #include void main(){ double a[5][5];int i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(”%lf“,*(a+i)+j);for(i=0;i<5;i++)for(j=0;j if(*(*(a+i)+j)!=*(*(a+j)+i)){ printf(”NOn“);return;} printf(”YESn“);} 41.定义函数int strdel(char *s),删除空格字符并返回空格个数。#include #include int strdel(char *s){ int n=0;for(;*s!=' ';)if(*s==' '){ strcpy(s,s+1);n++;} else s++;return n;} void main(){ char str[80];int n;gets(str);n=strdel(str);printf(”空格数:%d,删除空格后:%sn“,n,str);} 42.编写函数void fun(char *s,int b[ ]),统计在s所指向字符串中26个英文字母(不区分大小写)各自出现的次数,并依次放在b所指的数组中,在主函数中输出各字母出现的次数。#include void fun(char *s,int b[ ]){ char *p;for(p=s;*p!=' ';p++)if(*p>='a'&&*p<='z')b[*p-'a']++;else if(*p>='A'&&*p<='Z')b[*p-'A']++;} void main(){ char str[80];int a[26]={0},i;gets(str);fun(str,a);for(i=0;i<26;i++)printf(”%2c“,'A'+i);printf(”n“);for(i=0;i<26;i++)printf(”%2d“,a[i]);printf(”n“);} 43.函数int fact(char *s,char *t)的功能是:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。#include int fact(char *s,char *t){ int n=0;for(;*s!=' ';s++)if(*s<97){ *t=*s;t++;n++;} *t=' ';return n;} void main(){ char s[80],t[80];gets(s);printf(”<97:%dn",fact(s,t));puts(t);} 44.编写程序,输入当天日期,要求输出明天日期(利用结构类型)。#include void main(){ int m[]={0,31,28,31,30,31,60,31,31,30,31,30,31};int leap;struct date { int year,month,day;}d;printf(“year-month-day:”); scanf(“%d-%d-%d”,&d.year,&d.month,&d.day);if(d.year%4==0&&d.year%100!=0||d.year%400==0)m[2]=29;// 闰年2月份有29天 d.day++;if(d.day>m[d.month]){ d.day=1;d.month++;if(d.month>12){ d.year++;d.month=1;} } printf(“明天:%d-%d-%dn”,d.year,d.month,d.day);} 45.将1000以内的奇数写入文件design1.dat中。#include main(){ int a;FILE *fp;fp=fopen(“design1.dat”,”w”);for(a=1;a<=1000;a++)if(a%2==1)fprintf(fp,“%4d”,a);fclose(fp);} 46.求上题所建文件design1.dat中的数据和,在屏幕上输出结果。#include main(){ int a,sum=0;FILE *fp;fp=fopen(“design1.dat”,”r”);while(!feof(fp)){ fscanf(fp,“%d”,&a);sum+=a;} fclose(fp);printf(“sum=%dn”,sum);} C 语言复习题(2013 版) 一、选择题 请把答案填写在下面的横线上,否则不能得分。 1.B 2.D 3.C 4.D 5.A 6.B 7.A 8.D 9.C 10.D 11.C 12.B 13.D 14.B 15.D 16.C 17.D 18.D 19.A 20.C 21.A 22.D 23.B 24.C 25.C 26.B 27.B 28.A 29.D 30.A 31.C 32.A 33.B 34.A 35.C 36.D 37.B 38.D 39.A 40.C 41.B 42.D 43.C 44.C 45.D 46.D 47.D 48.C 49.D 50.C 51.A 52.B 53.B 54.A 55.C 56.A 57.B 58.A 59.B 60.C 61.D 62.C 63.C 64.A 65.B 66.C 1.下列关于C 程序的说法错误的是()。 A)一个程序必须有一个main 函数B)函数首部后面必须有分号 C)可以使用“/* */”来注释一段代码D)每个语句的末尾必须有分号 2.下列关于C 程序的说法错误的是()。 A)stdio.h 是输入输出头文件B)一个C 语句必须以分号结束 C)VC6.0 中可以使用“//”来注释一行D)#define 命令不是预处理命令 3.下列选项中,不能作为C 语言标识符的是()。A)_total B)p405 C)$123 D)abc 4.若有“float x=123.41;printf(“%4.2f”,x);”,则执行后的输出结果为()。A)12.3 B)12.34 C)123.4 D)123.41 5.下列选项中,不能正确表示分式 4 的C 语言表达式是()。 A)4/3 B)4/3.0 C)1.0*4/3 D)4/(float)3 6.若有定义“int x,y;”,则表达式“x=1,y=x+3/2”的值为()。A)1 B)2 C)2.0 D)2.5 7.下列关于C 程序的说法错误的是()。 A)C 语言程序的基本组成单位是语句B)C 语言程序中一行可以写多条语句 C)每条语句必须以分号结束D)一个语句可以写在多行上 8.以下关于标识符的说法错误的是()。 A)标识符由字母、数字和下划线组成B)标识符不能与系统的关键字同名 C)首字符必须是字母或下划线D)不区分大小写,s 和S 是同一个变量 9.表达式7%4+7/2 的值是()。A)4 B)4.5 C)6 D)6.5 10.已知变量a 和b 是int 型,若有语句“scanf(“a=%d,b=%d”,&a,&b);”,使a 的值是5,b 的值是8,则正确的输入是()。 A)5 8↙ B)5,8↙ C)a=5 b=8↙ D)a=5,b=8↙ 11.若有定义“int a;float b;”,执行“scanf(“%3d%f”,&a,&b);”语句时,从键盘输入: 1234 567.8↙,则a 和b 的值分别是()。A)1234 和567.800000 B)123 和567.800000 C)123 和4.000000 D)234 和567.800000 12.执行“printf(“%f%%”,1.0/3);” 语句后,正确的输出结果是()。 A)0.3 B)0.333333% C)0.3% D)0.003% 13.若要定义符号常量PI 代表3.14,正确的预处理命令是()。A)#define PI 3.14;B)#define PI=3.14 C)define PI 3.14 D)#define PI 3.14 14.以下变量定义及初始化语句中正确的是()。A)double a=0.5;b=1.5;B)char a=97,b='b';C)int a=b=0;D)float a=1,b=&a;15.以下关于算法的描述中不正确的是()。A)算法中每一个步骤的含义都应该是确定的 B)算法中每一个步骤都应该能有效执行 C)正确的算法应在有限步骤内结束 D)正确的算法都必须有输入和输出 16.当一个关系表达式成立时,该表达式的值为()。A)-1 B)0 C)1 D)不确定的非0 值 17.关于if 语句的说法正确的是()。A)双分支语句中有可能两个分支都不执行 B)if 多分支语句中不能没有最后的else C)if 语句中可以使用continue 语句 D)else 总是与前面最近的、没有与其它else 配对的if 配对 18.要判断x 是否满足表达式“-1≤x≤1”,正确的C 语言表达式是()。A)-1<=x<=1 B)-1≤x≤1 C)x>=-1||x<=1 D)x>=-1&&x<=1 19.若有程序段“int x=10;while(x!=0)x=x-1;”,执行完该程序段后x 的值是()。A)0 B)-1 C)10 D)9 20.若有定义“float x,*p=&x;”,能正确输入一个值给x 的语句是()。 A)scanf(“%f”,x);B)scanf(“%lf”,&x);C)scanf(“%f”,p);D)scanf(“%lf”,&p);21.以下选项中,对变量的定义和初始化正确的是()。 A)int a,*p=&a;B)int a,*p=*a;C)int a,p=&a;D)int a,*p=a;22.逻辑运算符两侧运算对象的数据类型为()。A)只能是0 或者1 B)只能是0 或非0 正数 C)只能是整型或字符型数据D)可以是任何类型的数据 23.在c 语言中,执行完语句“for(i=1;i<=10;i++);”后,i 的值是()。A)10 B)11 C)1 D)不确定 24.定义了指向某个变量的指针,其含义是指针变量里存放的是该变量的()。A)值B)名C)地址D)一个标志 25.若有语句“int *pt, a=4;pt=&a;”,则下面均代表地址的一组选项是()A)a,pt B)&a,*pt C)&a,pt D)*pt,&pt 26.若有语句“float *p,m=3.14;”,想要建立如下图所示的存储结构,则正确的赋值语句是 ()。p m A)p=m;B)p=&m;C)*p=m;D)*p=&m;27.有语句“int a=3, b=5, *p, *q;p=&a;q=&b;”,若要实现下图中所示的存储结构,则可以 使用的赋值语句是()。3.14 A)*p=*q;B)p=q;C)p=*q;D)*p=q;28.以下程序段中有个语句是错误的,则下列说法正确的是()。int *p, i;char *q, ch;p=&i;q=&ch;*p=4;p=q;A)p 和q 的类型不一致,不能执行语句p=q B)*p 中应该存放地址值,因此不能执行*p=4 C)q 虽然指向了具体的存储单元,但是该单元中没有具体的值,所以不能执行p=q D)q 没有指向具体的存储单元,所以不能执行p=q 29.若输入字符串:abcde<回车>,则以下while 循环体将执行()次。while((ch=getchar())=='e')printf(“*”);A)5 B)4 C)6 D)1 30.若i,j 已______定义为int 类型,则以下循环嵌套程序段中循环体一共要执行的次数是()。 for(i=5;i>0;i--)for(j=0;j<4;j++){...} A)20 B)25 C)24 D)30 31.关于函数的说法不正确的是()。 A)C 语言用函数实现模块的功能B)可根据需要自己来编写函数 C)可以在一个函数内定义另一个函数D)一个函数可以没有参数 32.C 程序中,若对函数类型未加显式说明,则函数类型默认为()。A)int B)void C)double D)int * 33.在函数内部定义的局部变量,若不对其存储类型进行说明,则默认为()。A)static B)auto C)extern D)以上均不对 34.若函数fun 被调用3 次,则最后一次的输出结果为()。void fun(){ int a=1;a+=2;printf(“a=%dn”,a);} A)a=3 B)a=5 C)a=7 D)a=9 35.若函数fun 被调用3 次,则最后一次的输出结果为()。void fun(){ static int a=1;q 5 b p 3 a a+=2;printf(“a=%dn”,a);} A)a=3 B)a=5 C)a=7 D)a=9 36.如果在一个函数中的复合语句中定义了一个变量,则该变量()。A)在该函数中有效B)为非法变量 C)在本程序范围内均有效D)只在该复合语句中有效 37.C 语言规定,函数返回值的类型是由()。 A)调用该函数时系统临时决定B)在定义该函数时所指定的类型决定 C)return 语句中的表达式类型决定D)调用该函数时主调函数类型决定 38.putchar 函数可以向终端输出一个()。A)整型变量表达式值B)实型变量值 C)字符串D)字符或字符型变量值 39.执行以下程序段的输出结果是()。void fun(int x, int y){ x=10;y=20;} void main(){ int a=1, b=2;fun(a, b);printf(“%d, %dn”, a,b);} A)1,2 B)10,20 C)10,2 D)1,20 40.执行函数调用“fun('5')”得到的返回值为()。int fun(char ch){ return(ch>='0'&&ch<='9');} A)-1 B)0 C)1 D)2 41.关于局部变量的说法正确的是()。 A)有效范围是从定义开始到程序结束的所有函数 B)有效范围是从定义开始到函数结束 C)形参不是局部变量,而是全局变量 D)复合语句中不能定义局部变量 42.关于变量属性的说法错误的是()。 A)动态变量是在函数开始执行时分配内存单元,函数执行完毕后立即释放 B)静态变量是在函数的执行过程中始终占用同一内存单元,程序执行结束时才释放 C)全局变量都是静态变量,只有局部变量才有动态变量 D)动态变量若不赋初值,系统会自动赋值为0 43.若有变量定义“int x=5,*p=&x;”,则执行函数调用“fun(p);”时,传递给fun 函数的是()。 A)指针变量p 的地址B)指针变量*p 的值 C)变量x 的地址D)变量x 的值 44.以下数组的定义形式正确的是()。 A)int k=5,a[k];B)int a[ ];C)char c[]={'a'};D)char a(10);45.以下一维数组的定义及初始化中,错误的是()。A)int a[3]={0};B)int a[3]={1,1,1}; C)static int a[3];D)int n=3,a[n]={0};46.若有定义“int a[ ][3]={0,1,2,3,4,5,6,7};”,则元素a[1][2]的值为()。A)1 B)2 C)4 D)5 47.若有说明语句“int a[2][4]={{1},{2,3}};”,则数组元素a[1][1]的值为()。A)0 B)1 C)2 D)3 48.若有定义“char s1[20],s2[ ]=“China”;”,为使s1 的值与s2 相同,下列选项中正确的是()。 A)s1=s2;B)strcmp(s1,s2);C)strcpy(s1,s2);D)strcpy(s2,s1);49.为了比较字符串s 是否大于t,条件表达式应该写成()。A)s>t B)strcmp(s,t)<0 C)strcmp(s,t)==0 D)strcmp(s,t)>0 50.若有语句“int a[10],*p=&a[2];”,则执行语句“p=p+4;”后,p 指向的数组元素是()。 A)a[4] B)a[5] C)a[6] D)a[7] 51.执行以下程序段的输出结果是()。char s[ ]=“Program”,*ptr;for(ptr=s;*ptr!='g';ptr++)printf(“%c”,*ptr);A)Pro B)Prog C)Proram D)程序有错误 52.对以下说明语句的正确理解是()。int a[10]={6,7,8,9,10};A)将5 个初值依次赋给a[1]至a[5] B)将5 个初值依次赋给a[0]至a[4] C)将5 个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确 53.以下给字符数组str 定义和赋值正确的是()。 A)char str[10];str={“China!”};B)char str[ ]={“China!”};C)char str[10];strcpy(str, “abcdefghijkl”);D)char str[10]={“abcdefghijkl”};54.当接受用户输入的含有空格的字符串时,应使用()函数。A)gets B)getchar C)scanf D)printf 55.执行以下程序段的输出结果是()。int a[ ]={1,8,2,8,3,8,4,8,5,8};printf(“%d,%dn”,a[4]+3,a[4+3]);A)6,6 B)8,8 C)6,8 D)8,6 56.以下说法正确的是()。 A)p[i]等价于*(p+i)B)&p[i]等价于*(p+i)C)p[i]等价于p+i D)p[i]等价于*p+i 57.设有定义“double a[10], *s=a”,以下能够代表数组元素a[2]的是()。A)(*s)[2] B)*(s+2)C)*s[2] D)*s+2 58.执行下面程序段的输出结果是()。char s[ ]=“Prog”;char *p;for(p=s;p 用不正确的是()。 A)scanf(“%s”,stu.name);B)printf(“%d,%s,%dn”,stu);C)p->score=98;D)strcpy((*p).name,“LiMing”);60.已知如下定义,则下面叙述不正确的是()。struct stu{ int a;float b;}stutype;A)struct 是结构体类型的关键字 B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和b 都是结构体成员名 61.当定义一个结构体变量时,系统为它分配的内存空间是()。A)结构体中一个成员所需的内存容量 B)结构体中 10.C 语言中求字节的运算符是____________。 11.若有C 语言语句“scanf(“%d,%d”,&a,&b);”,如果要给变量a 输入5,变量b 输入6,则 在程序执行时,应该输入____________,然后回车。12.C 语言中表示换行的转义字符是____________。13.C 语言程序书写格式自由,一行可以写几个语句,一个语句也可以写在多行上。每条语 句的最后必须有一个____________符号表示语句的结束。 14.若有定义“int a=2,b=3,x;x=a>b?a:b;”,则x 的值为____________。 15.switch 语句中,为了在其它条件都不满足时执行某个操作,应该使用____________子句。 16.如果循环体不需要执行任何操作,此时应使用____________语句作为循环体。17.若要提前终止循环语句的执行,应该使用____________语句。 18.若有定义“int a,*p=&a;”,要通过指针变量p 来输入a 的值,请填空。scanf(“%d”,____________);19.若有定义“int x,*p;”,为了让p 指向x,应该执行的操作是____________。20.判断闰年的逻辑表达式为y%4==0&&y%100!=0______y%400______0。21.关系表达式的值是一个逻辑值,只有____________种取值。22.设“a=1,b=2,c=3,d=4,m=n=1”,执行完“(m=a>b)&&(n=c>d)”后,n 的值为____________。23.C 语言提供了3 种基本循环结构:while 循环、do-while 循环和____________循环。24.for 语句中有3 个表达式,各表达式间用____________分隔。25.除了给指针变量赋地址值外,还可以给指针变量赋空值,给指针变量p 赋空值的语句是 ____________。第二篇:c语言复习题
第三篇:c语言复习题