C语言复习题

时间:2019-05-12 16:28:34下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言复习题》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言复习题》。

第一篇: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天,可在教务系统查询分数,如对分数有异议,可要求查分。

第二篇:c语言复习题

 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语言复习题

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 赋空值的语句是 ____________。

26.能表述“10

27.程序段“int k=10;while(k=0)k=k-1;”,则循环体语句将会执行____________次。28.设i,j,k 均为int 型变量,执行完语句“for(i=0,j=10;i<=j;i++,j--)k=i+j;”后,k 的值为

____________。

29.设x 为int 型变量,请写出一个关系表达式,用以判断x 同时为3 和7 的倍数时,关系 表达式的值为真。____________ 30.为了使函数能返回一个确定的值,必须使用____________语句。31.定义一个函数没有返回值,则函数类型应为____________。32.指针作为函数实参时,实际传递的是某个变量的____________。33.普通变量做参数时,实参与形参占有____________的内存单元。34.程序在调用一个函数的过程中,该被调函数又可以调用其它函数,这种情况称之为函数 的____________调用。

35.一个C 源程序中至少应包括一个____________函数。

36.如果在程序中用到函数sqrt,则在程序开始处应使用命令:#include <____________>(请

填上应该包含的文件名)。

37.从作用域的角度,变量可分为局部变量和____________。

38.若有定义“int i,*p;”,为了使p 指向i,则能实现该功能的语句是____________。39.在C 程序中,指针变量p1 指向整型变量a,如需要让指针变量p2 也指向整型变量a,则对应的语句为____________或者____________。

40.若有定义“static int a[10]={1,2,3};”,则a[3]的值为____________。41.一维数组中,下标的取值是从____________开始的。

42.若有定义“int a[3][4];”,则该数组的最后一个元素是____________。

43.若有定义“char *p=“ABCD”;”,执行“puts(p+2);”的输出结果为____________。44.若有定义“int a[10],*p1=&a[5],*p2=&a[2];”,则p1-p2=____________。45.若有定义“int a[10];”,则*(a+5)表示____________。

46.设int a[2][3]={{2},{3}};则数组元素____________的值为3。

47.若有定义:double xx[3][5];,则xx 数组中行下标的最大取值为____________。48.若有定义:char s1[20],s2[ ]=“China”;,则执行语句:strcpy(s1,s2+2);后,字符数组s1 中

存放的字符串为____________。

49.字符串用一维字符数组形式进行存储,它以____________结尾。

50.有语句“ char c[ ]={“I am a student”};”; 该字符串的长度是____________,c[3]=____________。51.若有定义“ char str[10];”,用str 存储一个字符串时,则该字符串的最大长度为 ____________。

52.若有定义:int a[10], *p=&a[3];,则p[4]表示的数组元素是a[____________]。53.连接两个字符串的库函数为____________。

54.在C 语言中,二维数组在内存中的存放顺序是____________。

55.若二维数组a 有m 列,则在a[i][j]前的元素个数为____________。

56.若有枚举类型定义“enum weekday{Sun=7, Mon, Tue, Wed=0, Thu, Fri, Sat};”,则枚举常

量Mon 的值为____________。

57.若有结构体类型的定义“struct test{ char x;int y;float z;};”,则该结构体类型的变量所占

字节数为____________。

58.若有结构体类型的定义“struct test{ int x;int y;}tt,*p=&tt;”,通过指针p 引用结构体变量

tt 的成员x 的方法有____________和____________。59.定义共用体类型的关键字是____________。

60.共用体变量某一时刻只能存放其中____________个成员的值。61.共用体变量的地址与它的所有成员的地址____________。62.访问文件时,文件指针变量的类型需定义为____________。63.以写方式打开文件letter.txt 的语句是____________(“letter.txt”,“w”)。64.关闭文件指针fp 指向的文件的语句是____________。

三、程序填空题

注:以下参考答案仅用于参考,若干答案也可以写成其它等价的形式。1.下列程序段要从键盘输入两个变量x、y 的值,并交换x 和y。请填空。int x,y,temp;scanf(“%d%d”, ____________);// &x,&y temp=x;____________;// x=y y=temp;printf(“x=%d,y=%dn”, x,y);2.下面的程序段用于读入一个华氏温度,计算并输出对应的摄氏温度,华氏温度转换为摄 氏温度的公式为:

C  5 F。请填空。

double C,F;printf(“Input F:n”);scanf(“____________”,&F);// %lf ______________________;// C=5.0/9*(F-32)printf(“C=%.2fn”,C);3.下面的程序段用于计算周期为T 秒的人造卫星离地面的平均高度,其中:地球质量M=6 ×1024kg,地球半径R=6.371×106m。人造卫星离地面的平均高度H 的计算公式为:

H MT R  

2 11 2 4 6.67 10 

#define PI 3.1415926 #define M 6E24 #define R 6.371E6 double T,H,x;printf(“Input T: ”);scanf(“%lf”,&T);x=______________________;// 6.67E-11*M*T*T/(4*PI*PI)H=____________-R;// pow(x, 1.0/3)printf(“H=%lfn”, H);4.下面的程序段用于从键盘输入3 个正整数,找到最大数并输出。请填空。int a,b,c,max;scanf(“%d%d%d”,&a,&b,&c);____________;// max=a if(____________)// maxmax max=b;if(c>max)max=c;printf(“max=%dn”,max);5.有如下分段函数,根据输入的x 值计算y 值,并输出。请填空。

2 3lg 3 5 11 2 1 2 1 3 

  

  

x x x x x e y x

6.闰年是指被能4 整除,但不能被100 整除;或者能被400 整除的年份。请填空。int year;scanf(“%d”,&year);if(____________&&year%100!=0____________year%400==0)// year%4==0、|| printf(“leap year.n”);else printf(“not leap year.n”);7.从键盘读入一个百分制成绩,将其转换为对应的五级制并输出。请填空。int score;scanf(“%d”,&score);// 输入一个0-100 之间的分数 ____________(score/10)// switch { case 10: case 9: printf(“An”);____________;// break case 8: printf(“Bn”);break;case 7: printf(“Cn”);break;case 6: printf(“Dn”);break;____________: printf(“En”);// default } 8.下面的程序段用于计算10!。请填空。int i,s;s=____________;// 1 for(i=1;i<=10;i++)____________;// s=s*i printf(“10!=%dn”,s);9.从键盘输入若干字符,以回车结束,统计其中大写字母、空格及其它字符的个数。请填 空。char ch;int upper=0,space=0,other=0;while((ch=____________)!='n')// getchar()if(________________________)//大写字母// ch>='A' && ch<='Z' upper+=1;else if(____________)//空格// ch==' ' 或ch==32 space+=1;else //其它字符 other+=1;printf(“upper=%d, space=%d, other=%dn”,upper,space,other);10.下面的程序段输出九九乘法表。请填空。for(i=1;i<=9;i++){ for(j=1;j<=____________;j++)// i

printf(“%d*%d=%-3d”,j,i,j*i);____________;// printf(“n”)} 11.下面的程序段用于输出101 到200 之间的所有素数。请填空。int m,k,i;for(m=101;m<=200;m+=2){ k=(int)sqrt(m);for(i=2;i<=k;i++)if(____________)// m%i==0 break;if(i==____________)// k+1 printf(“%-4d”,m);} 12.输出所有的水仙花数。水仙花数是指一个3 位数,其各位数字的立方和等于该数本身,例如153=13+53+33。请填空。int a,b,c,i;for(i=100;i<=999;i++){ a=____________;// i/100 b=i%100/10;c=i%10;if(i____________a*a*a+b*b*b+c*c*c)// == printf(“%d ”,i);} 13.从键盘输入一个正整数,计算其最高位数字。请填空。int x;scanf(“%d”,&x);while(____________)// x>=10 x=____________;// x/10 printf(“最高位数字为:%dn”,x);14.国民生产总值(GDP)每年递增7.5%,编写程序计算并输出需要多少年国民生产总值 才能翻一番。请填空。int year=0;double a=1;while(____________)// a<2 { a=a*____________;//(1+0.075)year++;} printf(“经过%d 年翻一番!n”,year);15.编写函数fun 求mn。请填空。

____________ fun(int m, int n)// double { int i;double t=1;for(i=1;i<=n;i++)

____________;// t=t*m return t;} 16.函数fun 用于计算n!(1≤n≤18)。请填空。double fun(____________)// int n { double r=1;int i;for(i=1;i<=n;i++)r=r*i;____________;// return(r)} 17.若要通过函数调用语句“swap(&a,&b);”交换a、b 的值,下面是函数swap 的定义。请 填空。

void swap(int *pa, ____________)// int *pb { int t;t=*pa;*pa=*pb;____________;// *pb=t } 18.以下程序的功能是,从键盘输入两个整数a、b,调用函数swap 交换a、b 的值,最后输 出交换后的结果。请填空。void swap(int *p1, int *p2){ int t;t=*p1;____________;*p2=t;// *p1=*p2 } void main(){ int a,b;scanf(“%d%d”,&a,&b);swap(____________);// &a,&b printf(“a=%d,b=%dn”, a,b);} 19.下面的程序段是用冒泡法对数组a 中的10 个整数按从小到大排序。请填空。int a[10]={8,6,4,9,7,3,5,1,2,0},i.j,t;for(i=0;i<9;i++)for(j=0;j<____________;j++)// 9-i if(____________)// a[j]>a[j+1] 或a[j]>=a[j+1] { t=a[j];a[j]=a[j+1];a[j+1]=t;} 20.以下程序段将一个一维数组中的数逆序存放。请填空。int a[10],i,j,t;for(i=0;i<10;i++)scanf(“%d”, &a[i]);for(i=0,j=9;i

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}, ____________, i, j;// b[4][3] for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=____________;// a[i][j] 22.输入一个M 行M 列的二维数组,分别计算两条对角线上的元素之和。M 为符号常量,请填空。#define N 5 void main(){ int a[N][N],i,j,s1=0,s2=0;printf(“input a %d*%d matrix:n”,N,N);for(i=0;i='0'&&s[i]<='9' count+=1;printf(“%dn”,count);24.输入6 个字符串,找出最大的字符串并输出。请填空。char str[6][50];int i,k;for(i=0;i<6;i++)gets(____________);// str[i] k=0;for(i=1;i<6;i++)if(strcmp(str[i],str[k])>0)

____________;// k=i printf(“the largest string is: %sn”,str[k]);25.函数copy_string 用于把字符串from 拷贝到to 中。请填空。void copy_string(char *to, char *from){ while((____________)!='')// *from!='' *to++=*from++;*to=____________;// '' }

四、编程题

注:每个程序的编写方法有千万种,下面给出的只是其中一种,以供参考。1.编写一个程序,输入一个天数,求这个天数包含几周零几天。#include void main(){ int d,a,b;scanf(“%d”,&d);a=d/7;b=d%7;printf(“%d week(s)and %d day(s).n”,a,b);} 2.输入一行字符,统计其中空格的个数。#include void main(){ char ch;int count=0;while((ch=getchar())!='n')if(ch==' ')count+=1;printf(“%dn”,count);} #include void main(){ char ch;int count=0;scanf(“%c”,&ch);while(ch!='n'){ if(ch==' ')count+=1;scanf(“%c”,&ch);} printf(“%dn”,count);} 3.设有分段函数: 10 1 3lg 3 1 13 3 5 1 2 1 3 

  

  

x x x x e x y x

编写程序,输入x 的值,输出y 值。#include #include

void main(){ double x,y;scanf(“%lf”,&x);if(x<-1)y=x*x*x-1;else if(x<=10)y=3*exp(2*x-1)+5;else y=3*log10(3*x-1)-13;printf(“y=%lfn”,y);} 4.输入x 的值,根据下面的公式计算y 值。10 1 3 5 ln 2 1 2 3       

x x x x x x y

#include #include void main(){ double x,y;scanf(“%lf”,&x);if(x<1)y=x+2;else if(x<10)y=log(2*x)-1;else y=pow(3*x+5,1.0/3);printf(“y=%lfn”,y);} 5.从键盘输入若干整数,以0 作为结束标志,找出最大数并输出。#include void main(){ int x,max;scanf(“%d”,&x);max=x;while(x!=0){ if(x>max)max=x;scanf(“%d”,&x);}

printf(“max=%dn”,max);} 6.编写程序,计算 10 1 

!n n,即1!+2!+3!+„+10!。

#include void main(){ int i,fact,sum;sum=0;fact=1;for(i=1;i<=10;i++){ fact*=i;sum+=fact;} printf(“%dn”,sum);} 7.编写程序,判断一个指定的数是否是素数。#include #include void main(){ int m,i,k;scanf(“%d”,&m);k=(int)sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i<=k)printf(“%d is not a prime!n”,m);else printf(“%d is a prime!n”,m);} 8.编写程序求两个数的最大公约数。#include void main(){ int m,n,gcd;scanf(“%d%d”,&m,&n);for(gcd=m;gcd>=1;gcd--)if(m%gcd==0&&n%gcd==0)break;printf(“gcd=%dn”,gcd);}

9.函数fun 的功能是计算下面表达式的值:

!...1 3!1 2!1 1 n sum 

请根据已经给出的代码完成fun 函数。#include double fun(int n){ } void main(){ int n;scanf(“%d”,&n);printf(“sum=%fn”,fun(n));} 10.函数isPrime 的功能是判断参数m 是否是素数,如果是素数,返回整数1,不是素数则 返回整数0。请根据已经给出的代码完成该函数。#include #include int isPrime(int m){ } void main(){ int m;do // 输入的m 必须大于等于2 { printf(“Input m: ”);scanf(“%d”,&m);}while(m<=1);if(isPrime(m)==1)printf(“%d is a prime.n”,m);else printf(“%d is not a prime.n”,m);} int i;double fact=1,sum=0;for(i=1;i<=n;i++){ fact*=i;sum+=1.0/fact;} return(sum);int i,k;k=(int)sqrt(m);for(i=2;i<=k;i++)if(m%i==0)return(0);return(1);

11.函数fun 的功能是计算下面表达式的值:

(1)...1 3* 4 1 2 * 3 1 1* 2 1

n n sum 请根据已经给出的代码完成fun 函数。#include double fun(int n){ } void main(){ int n;do // 输入的n 必须大于等于1 { printf(“Input n: ”);scanf(“%d”,&n);}while(n<1);printf(“sum=%fn”,fun(n));} 12.编写函数,计算nm C。m 和n 在主函数中输入,计算结果在主函数中输出。1≤m,n≤12,n<m。计算时使用如下公式:!

!n m n m Cnm

。

主函数已经给出,请根据已有内容编写自定义函数Fact。#include int Fact(int n){ } void main(){ int m,n,c;scanf(“%d%d”,&m,&n);c=Fact(m)/(Fact(n)*Fact(m-n));int i;double sum=0;for(i=1;i<=n;i++)sum+=1.0/(i*(i+1));return(sum);int i,fact;fact=1;for(i=1;i<=n;i++)fact*=i;return(fact);

printf(“%dn”,c);} 13.从键盘输入10 个整数存放在一个一维数组中,找出最大的数并输出。#include void main(){ int a[10],i,k;for(i=0;i<10;i++)scanf(“%d”, &a[i]);k=0;for(i=1;i<10;i++){ if(a[k] void main(){ int a[11],i,j,temp;for(i=1;i<=10;i++)scanf(“%d”,&a[i]);for(i=1;i<=9;i++)for(j=1;j<=10-i;j++)if(a[j]>a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} for(i=1;i<=10;i++)printf(“%d ”,a[i]);} 15.编写程序,将字符数组str2 中的全部字符连接到字符数组str1 的后面。不得使用strcat 函数。

#include void main(){ char str1[80],str2[50];gets(str1);gets(str2);for(i=0;str1[i]!='';i++);

for(j=0;str2[j]!='';i++,j++)str1[i]=str2[j];str1[i]='';puts(str1);} 填空题参考答案: 1. 函数

2. %(或取余)3. math.h 4. fabs 5. 顺序结构 6. // 7.(1)/*(2)*/ 8.(1)数字(2)下划线(3)下划线 9. double 10.sizeof 11.a=5,b=6 12.'n' 13.分号 14.0 15.default 16.空 17.break 18.p 19.p=&x;20.(1)||(2)== 21.2 22.1 23.for 24.分号 25.p=NULL;26.a>10&&a<20 27.0 28.50 29.x%3==0&&x%7==0 30.return 31.void 32.地址 33.不同 34.嵌套 35.main 36.math.h 37.全局变量 38.p=&i;39.(1)p2=&a;(2)p2=p1;40.0 41.0 42.a[2][3] 43.CD 44.3 45.a[5] 46.a[1][0] 47.2 48.ina 49.'' 50.(1)15(2)m 51.9 52.7 53.strcat 54.按行存储 55.i*m+j 56.1 57.9 58.(1)(*p).x(2)p->x 59.union 60.1 61.相同 62.FILE 63.fopen 64.fclose(fp);__

第四篇:语言得体复习题

语言得体练习

1.有一位顾客买菜时,把白菜外层还不算太老的叶给摘了,售货员要劝阻她,话该怎样说,请选出语气最委婉而又能收到效果的一句。()

A.同志,请小心,别把菜叶碰掉了!B.同志,请不要摘菜叶!

C.同志,请别那么自私!D.同志,您不喜欢这菜吗?

2.指出下列句子中哪些用词不得体。()

(1)起初,他和他的女朋友商谈结婚事宜时,也觉得应该本着节约的原则,不要铺张、讲排场。

(2)放学后,一位同学叫我去玩游戏机,我严辞予以拒绝。

(3)小玲对妈妈说:“母亲,带我上公园玩吧!”

3.下面是某同学在一次讨论会上的发言摘要,有几处用语不得体,把它们找出来并加以改正(有几处写几处)

刚才刘老师的一番话真是抛砖引玉,使我深受教育。我们是跨世纪的青年人,祖国建设的重任将落在我们肩上。像刘老师这样快要退休的老师仍在为培养我们而略尽绵薄,难道我们倒可以对学习不负责任?我殷切期望平时抄作业、考试作弊的同学赶快改正错误,不要再自欺欺人了。

(1)应改为(2)应改为(3)应改为

4.一名读者到新华书店去买书,下边是他和营业员的对话:

读者:请问有没有《现代汉语词典》卖?

营业员:卖完了。(1)

读者:本市哪家书店可能有?

营业员:不知道。(2)

读者:贵店什么时候能到货?

营业员:不知道。(3)

营业员的三次回答既简明又如实,但读者不仅感到扫兴,而且心中不是滋味。试为营业员的回答换一种说法,使读者有亲切感和心理满足感,但不能改变原意

(1)改为:

(2)改为:

(3)改为:

5.王老师刚退休,就收到张伟的来信。信写得有真情实意,但在表达上有一些不得体的毛病。下面是信中的一段,请把三处毛病找出来并加以修改。

老师,此时此刻,多少往事历历在目。课堂上你循循善诱,悉心指导,开启我们心灵的窗户;生活中,您精心呵护,无微不至,提供我们成长的沃土。如今,您离我而去,在我心中您的音容宛在。我一定牢记您的教导,发奋学习,争取早日成才。

(1)应改为(2)应改为 6.说话要注意自己的身份和对象,用语得体,才会有好效果。根据下面的材料,按要-1-

求写出恰当的话。(每句话不少于30字)

青年工人小王经常请假不参加车间的技术培训,理由是要在家当“陪读”——陪儿子小刚复习功课,做家庭作业,否则会考试不及格。

(1)如果你是小王的车间主任,就这件事你将对小王怎样说?

答:

(2)如果你是小刚的班主任,知道这个情况后,你将对小王说一点什么?

答:

7.下面是协议书的一些条款,表达不准确、不严密的条款是()

①甲乙双方不得终止协议,否则,由终止方负责对方的全部经济损失。

②甲方投资装修的房屋将作为不动产,在期限满时移交乙方,不包括室内设备。

③甲方向乙方提供的钢瓶 1000只,分三次供完,乙方在甲方贷到全付款。

④此协议自1996年1月 l日起至1999年12月31日止,有效期3年。期满后,如无其他特殊原因,协议继续有效。

⑤由甲方提供周转资金人民币2万元整。

A.①②③B.①③④C.②③⑤D.③④⑤

8. 广播稿要求通俗、口语化,一听就明白。把下一段文字改作广播稿时,有四处非改动不可,写出这四处的序号。

自a从我省西部b地区发生强烈地震c以来,本市各界d对赈灾e以后的人民生活十分

关心,积极开展赈灾f活动,捐款累计g已逾 100万元之巨h。我厂原来已经捐款(包括捐赠衣服、物品折款I)8万元,昨天又捐款 2万元。这些钱物j已经转送到了灾区k。

9.下面是周华同学给博物馆金馆长写的一张便条,其中有些词用得不得体,请你帮他修改。

金馆长:

您约我今天下午去贵处谈我班同学光临贵馆参观一事,因我有急事,现决定改期。具体改在何时,另行磋商。

10.下面是某校准备张贴在大门口的通知稿,有三处必须修改,写出这三处的序号。

今天是我校建校50周年的大喜日子,感谢大家能在百忙之中莅临参加。为了校庆活动的顺利进行,各位务必先到接待处签名,然后领取纪念册。10点钟到礼堂参加庆祝大会。会后欢迎您到母校参观。

11.某县教育局丁局长在欢迎著名的语文特级教师张某某的大会上致辞说:“张老师是一

位语文改革家,是我们崇敬的导师和偶像,我代表全县人民十分虔诚地欢迎他的到来„„”张老师听了很不自在,在答谢辞中说:“我们语文教师,最讲究分寸,刚才丁局长的讲话就缺乏分寸„„”在场的老师都议论纷纷。以上两人对话有哪些地方不得体?

12.下列各句中,语言表达得体的一句是()

A.老大爷远远看见我,遂放下赶鸭的竿子,擦了擦额上的汗,笑眯眯地向我走来。

B.林海正在草拟“失物启事”,他写道:“昨天我在教室里丢失了一本《名言词典》,如有拾获,请从速交还。”

C.张冷和王玲婚后生活一直很艰难,现在他们有三个孩子,大的卖冰棒,二的拾破烂,三的满地爬。

D.小明看到王家失火后匆匆跑来对母亲说:“火!冲天的大火!它吞噬了太阳!遮住了大地!”

附:答案及简析

1.答案:A

2.(1)(商谈事宜)(2)(严辞予以拒绝)(3)(母亲)

3.(1)“抛砖引玉”→金玉良言(2)“略尽绵薄”→不遗余力(竭尽全力)

(3)殷切期望→衷心希望(“抛砖引玉”是自谦之词,用在这里明褒实贬;“略尽绵薄”是自谦之词,用以评价老师,不得体;“殷切期望”多用于上对下、长对幼)

4.①刚卖完,你早一点来就好了。②对不起,这我可说不准(或:我来帮你联系一下。)③

眼前还没有消息,书一到我就通知你,好吗?(营业员三个“不知道”,冷冰冰的。所给答案只是举例)

5.(1)离我而去→退休在家(2)音容宛在→形象平凡而高大(“离我而去”会令人想到

去世;“音容宛在”用于逝者)

6.(1)做父母的固然要关心孩子学习,但不能以放弃自己的事业为代价。(2)要培养孩子独立学习的习惯,依赖是孩子成长的绊脚石,陪读弊多利少。(车间主任是领导,应对小王启发教育;班主任是教育工作者,谈问题自然应从教育孩子的角度出发。)

7.【答案】B.①③④

【解析】上题①句“甲乙双方不得终止协议”语意不明,应改为“甲乙任何一方不得单独终止协议”。③句中“乙方在甲方货到全付款”也不明确,是“乙方在甲方货到,全付款”呢,还是“乙方在甲方货到全,付款”呢?这有明显分歧,容易产生纠纷。④句中“有效期”分明是4年,却写成3年;期满后协议能否生效,那是“后话”,可以不写;句中“如无其他特殊原因”句意含混。②⑤句表达准确。严密、无问题,所以正确答案是B。

8.【答案】[e][f][h][i]

【解析】该题考察的就是运用口语的能力,恰当运用口语与书面语,是社会语言交际的一项重要能力。口语是表达的一种方式,用口语表达意思,作用听觉,因此,必须“通俗”“一听就明白”。辨析口语运用正误,就要辨析听后是否会产生歧义,听后是否感到不解或者费解,以及是否通俗、流畅。

广播稿只有用口语表达形式写下来才能让人听明白,而上面提供的材料是用书面语形式写成的,人们可以看明白,但要念出来给人听,就会使人误解。

该题中“震灾”与“赈灾”同音异义,用口语表达时必须修改,以免产生误解。“逾”是书面词语,不通俗。“100万元之巨”也是书面化词语,不通俗,不符合广播稿要求。另外,广播中不能使用书面语才能用的括号加注释说明的表述方法。

9.【答案】 ①“光临”改为“到(去)”②“决定”改为“不得不(只好、只能)”③“磋商”“商量(商议、商定)”

【解析】结合具体的语境,“光临” “决定” “磋商”三个词语用得就不得体。“光临”为敬辞,只能用于说话双方的对方。“决定”用在这里非常不礼貌,有劳人家,说话应该客气。“磋商”是“反复商量,仔细讨论”之意,用在这里不合适。

11.和偶像删,虔诚改热忱,“我才疏学浅,只是在语文教学改革方面作了一些探索。今天能有机会来贵县与各位领导和同行作交流,感到很荣幸。”

第五篇:C语言章节复习题

一、选择题:

1、一个C程序的执行是从(A)。A本程序的main函数开始,到main函数结束

B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束

2、在 C 语言中,每个语句必须以(D)结束。

A.回车符 B.冒号 C.逗号 D.分号

3、C 语言规定:在一个源程序中,main函数的位置(C)。A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后

4、一个C 语言程序是由(B)。

A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成

5、下列说法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体 B.主函数可以调用任何非主函数的其他函数 C.任何非主函数可以调用其他任何非主函数

D.程序可以从任何非主函数开始执行

6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将(C)。A.生成可执行目标文件 B.生成目标文件 C.输出运行结果 D.自动保存源文件

二、填空题:

1、C 语言只有 32 个关键字和 9 种控制语句。

2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 * 符号作为开始标记,以 */ 符号作为结束标记。

4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。

5、系统默认的C 语言源程序文件的扩展名是.c,经过编译后生成的目标文件的扩展名是.obj,经过连接后生成的可执行文件的扩展名是.exe。

6、C 语言的标识符只能由字母、数字和 下划线 三种字符组成。

第三章数据类型、运算符和表达式

一、选择题:

1、以下选项中,不正确的 C 语言浮点型常量是(C)。A.160.B.0.12 C.2e4.2 D.0.0

2、以下选项中,(D)是不正确的 C 语言字符型常量。A.'a' B.'x41' C.'101' D.“a”

3、在 C 语言中,字符型数据在计算机内存中,以字符的(C)形式存储。A.原码 B.反码 C.ASCII 码 D.BCD码

4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。x=(i=4,j=16,k=32)

A.4 B.16 C.32 D.52

5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。A.算术运算、赋值运算、关系运算 B.算术运算、关系运算、赋值运算 C.关系运算、赋值运算、算术运算 D.关系运算、算术运算、赋值运算

6、若有代数式,则不正确的C语言表达式是(C)。

A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3

7、表达式!x||a==b 等效于(D)。A.!((x||a)==b)B.!(x||y)==b C.!(x||(a==b))D.(!x)||(a==b)

8、设整型变量 m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是(A)。

A.0,0 B.0,1 C.1,0 D.1,1

9、设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是(B)。A.3 B.0 C.9 D.-12

10、在以下一组运算符中,优先级最低的运算符是(D)。A.* B.!= C.+ D.=

11、设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。A.6 B.12 C.15 D.表达式出错

12、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是(C)。A.1 B.2 C.2.0 D.2.5

13、sizeof(double)的结果值是(A)。A.8 B.4 C.2 D.出错

14、设a=1,b=2,c=3,d=4,则表达式:a

15、设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10)&&!(a>=15)

16、设 f是实型变量,下列表达式中不是逗号表达式的是(D)。

A.f= 3.2, 1.0 B.f>0, f<10 C.f=2.0, f>0 D.f=(3.2, 1.0)

17、表达式18/4*sqrt(4.0)/8值的数据类型是(C)。A.int B.float C.double D.不确定

18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句 C2=’A’+’6’-‘3’;后c2中的值是(A)。A.D B.68 C.不确定的值 D.C

19、以下用户标识符中,合法的是(B)。A.int B.nit C.123 D.a+b 20、C 语言中,要求运算对象只能为整数的运算符是(A)。A.% B./ C.> D.*

21、若有说明语句:char c='72';则变量c在内存占用的字节数是(A)。A.1 B.2 C.3 D.4

22、字符串“ABC”在内存占用的字节数是(B)。A.3 B.4 C.6 D.8

23、要为字符型变量 a赋初值,下列语句中哪一个是正确的(B)。A.char a=“3”;B.char a=’3’;C.char a=%;D.char a=*;

24、下列不正确的转义字符是(C)。A.B.' C.074 D.

二、填空题:

1、C 语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。

2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0。

3、设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2,-a-5*b<=d+1, b==a=2的值分别为 1、0、1、1。

4、设 float x=2.5,y=4.7;int a=7;,表达式 x+a%3*(int)(x+y)%2/4的值为 2.5。

5、判断变量 a、b 的值均不为 0 的逻辑表达式为a!=0&&b!=0。

6、求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为 4,4,10,6。

7、求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为18,3,3。

8、数学式a/(b*c)的 C 语言表达式 a/b/c。

三、编程题:

1、设长方形的高为 1.5,宽为 2.3,编程求该长方形的周长和面积。

2、编写一个程序,将大写字母 A转换为小写字母 a。1. main(){float x=1.5,y=2.3;printf(“area is %6.2fn”,x*y);} 2.main(){char c=’A’;printf(“%d”,c+32);}

1.单项选择题

(1)int a[4]={5,3,8,9};其中 a[3]的值为()。D A.5 B.3 C.8 D.9(2)以下 4 个字符串函数中,()所在的头文件与其他 3 个不同。A A.gets B.strcpy C.strlen D.strcmp(3)以下 4 个数组定义中,()是错误的。D A.int a[7];B.#define N 5 long b[N];C.char c[5];D.int n,d[n];(4)对字符数组进行初始化,()形式是错误。B A.char c1[ ]={'1', '2', '3'};B.char c2[ ]=123;C.char c3[ ]={ '1', '2', '3', ''};D.char c4[ ]=“123”;(5)在数组中,数组名表示()。A A.数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C.数组所有元素的首地址 D.数组最后 1 个元素的首地址

(6)若有以下数组说明,则数值最小的和最大的元素下标分别是()。B int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12 B.0,11 C.1,11 D.0,12(7)若有以下说明,则数值为 4 的表达式是()。D int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};char c=’a’, d, g;A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c](8)设有定义:char s[12] = “string”;则printf(“%dn”,strlen(s));的输出是()。A A.6 B.7 C.11 D.12(9)设有定义:char s[12] = “string”;则printf(“%dn ”, sizeof(s));的输出是()。D A.6 B.7 C.11 D.12(10)合法的数组定义是()。A A.char a[ ]= “string ”;B.int a[5] ={0,1,2,3,4,5};C.char a= “string ”;D.char a[ ]={0,1,2,3,4,5}(11)合法的数组定义是()。D A.int a[3][ ]={0,1,2,3,4,5};B.int a[ ][3] ={0,1,2,3,4};C.int a[2][3]={0,1,2,3,4,5,6};D.int a[2][3]={0,1,2,3,4,5,};(12)下列语句中,正确的是()。D A.char a[3][ ]={'abc', '1'};B.char a[ ][3] ={'abc', '1'};C.char a[3][ ]={'a', “1”};D.char a[ ][3] ={ “a”, “1”};(13)下列定义的字符数组中,输出 printf(“%sn”, str[2]);的输出是()。C static str[3][20] ={ “basic”, “foxpro”, “windows”};A.basic B.foxpro C.windows D.输出语句出错(14)下列各语句定义了数组,其中哪一个是不正确的()。C A.char a[3][10]={“China”,“American”,“Asia”};B.int x[2][2]={1,2,3,4};C.float x[2][ ]={1,2,4,6,8,10};D.int m[][3]={1,2,3,4,5,6};(15)数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是()。B A.a[3][2] B.a[2][1] C.a[1][2] D.a[2][3](16)下面的程序中哪一行有错误()。D #include main(){ float array[5]={0.0};//第A行 int i;for(i=0;i<5;i++)scanf(“%f”,&array[i]);for(i=1;i<5;i++)array[0]=array[0]+array[i];//第B行 printf(“%fn”,array[0]);//第C行 } A.第A行 B.第B行 C.第C行 D.没有

(17)下面哪一项是不正确的字符串赋值或赋初值的方式()。C A.char *str;str=“string”;B.char str[7]={'s','t','r','i','n','g'};C.char str1[10];str1=“string”;D.char str1[]=“string”,str2[]=“12345678”;(18)若有以下说明和语句,则输出结果是哪一项()。C(strlen(s)为求字符串s的长度的函数)char s[12]=“a book!”;printf(“%d”,strlen(s));A.12 B.8 C.7 D.11(19)若有以下说明和语句,则输出结果是()。B(strlen(s)为求字符串s的长度的函数)char sp[]=“tv0willn”;printf(“%d”,strlen(sp));A.14 B.3 C.9 D.字符串中有非法字符(20)若有以下说明和语句,则输出结果是()。C char str[]=“"c:abc.dat”“;printf(”%s“,str);A.字符串中有非法字符 B.”c:abc.dat“ C.”c:abc.dat“ D.”c:abc.dat“

2.填空题

(1)C 语言中,数组的各元素必须具有相同的,元素的下标下限为,下标必须是正整数、0、或者。但在程序执行过程中,不检查元素下标是否。数据类型,0,符号常量,越界

(2)C 语言中,数组在内存中占一片 的存储区,由 代表它的首地址。数组名是一个 常量,不能对它进行赋值运算。连续,数组名,地址(3)执行 static int b[5], a[ ][3] ={1,2,3,4,5,6};后,b[4] =,a[1][2] =。0,6(4)设有定义语句 static int a[3][4] ={{1},{2},{3}};则 a[1][0]值为,a[1][1] 值为,a[2][1]的值为。2,0,0(5)如定义语句为 char a[ ]= ”windows“,b[ ]= ”95“;,语句 printf(”%s“,strcat(a,b));的输出结果为。Windows95(6)根据以下说明,写出正确的说明语句:men是一个有10个整型元素的数组。

step是一个有4个实型元素的数组,元素值分别为1.9,-2.33, 0, 20.6。

grid是一个二维数组,共有4行,10列整型元素。int mesh[10];float step[4] = {1.9,-2.33, 0, 20.6};int grid[4][10];(7)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,正确的说明语句为:

。该数组下标的取值范围是从___到___(从小到大)。用scanf函数输入数组的第二个元素表示为:。用赋值语句把39存入第一个元素表示为:。把第六个和第四个元素之和存入第一个元素表示为:。

int array[10] = {9,4,7,49,32,-5};0 9 scanf(”%d“,&array[1]);array[0] = 39;array[0]= array[5]+array[3];(8)写出以下初始化数组的长度:①int chn[3];数组chn的长度为___。②float isa[]={1.0,2.0,3.0,4.0,5.0};数组isa的长度为___。③int doom[8];数组doom的长度为___。④float pci[4][2];数组pci的长度为___。

⑤int ast[3][3];数组ast的长度为___。⑥int att[3][4];数组att的长度为___。⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组dell的长度为___。6 20 16 32 18 24 36(9)若有以下整型的a数组,数组元素和它们得值如下所示: 数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 元素的值: 9 4 12 8 2 10 7 5 1 3 ①请写出对该数组的说明,并赋以上初值。

②该数组的最小下标值为___,最大下标值为___。

③写出下面各式的值:a[a[9]]的值为___ ;a[a[4]+a[8]]的值为___。int a[10]={9,4,12,8,2,10,7,5,1,3};0 9 8 8(10)字符串”abn12/“"的长度为___。10

3.判断题

(×)(1)C允许对数组的大小作动态定义,即可用变量定义数组的大小。(×)(2)字符数组不要求它的最后一个字符为‘’,甚至可以不包含‘’。(×)(3)数组定义 int a[10];也可以写成 int a(10)。(√)(4)在对全部数组元素赋初值时,可以不指定数组长度。(×)(5)定义s为5×6(5行6列)的数组可写成 float a[5,6];(√)(6)数组定义 int a[10];表示数组名为a,此数组有10个元素。(×)(7)数组定义 int a[10];表示数组名为a,此数组有10个元素,第10个元素为a[10]。

(√)(8)static char c[]={“a book”};与static char c[]=“a book”;等价。

(×)(9)static char c[]={'a' ,' ','b','o','o','k',''};与 static char c[]={'a' ,' ' ,'b','o','o','k'};等价。(×)(10)设已有说明:static char c1[10],c2[10];下面程序片段是合法的。c1={“book”};c2=c1;

4.程序填空题

(1)输入 20 个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。#include void main(){ float a[20],pjz=0,s,t;int i,k;

for(i=0;i<20;i++)pjz+=a[i];

s=fabs(a[0]-pjz);for(i=1;i<20;i++)if(fabs(a[i]-pjz)

(2)以下程序以每行 10个数据的形式输出 a 数组,请填空。void main(){ int a[50],i;printf(”输入50个整数:“);for(i=0;i<50;i++)scanf(”%d“,);for(i=1;i<=50;i++){ if()printf(”%3dn“ ,);printf(”%3d“,a[i-1]);} } &a[i] i%10==0 a[i-1]

(3)下面程序的功能是输出数组 s 中最大元素的下标,请填空。void main(){ int k, p;int s[ ]={1,-9,7,2,-10,3};for(p=0,k=p;p<6;p++)if(s[p]>s[k]);printf(”%dn“ ,k);} k=p

(4)这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、20个数的和及它们的平均值。请填空。void main(){ char array;int max,min,average,sum;int i;for(i=0;i<;i++){ printf(”请输入第%d个数:“,i+1);scanf(”%d“,);} max=array[0];min=array[0];for(i=0;i<=;i++){ if(maxarray[i])sum=;} average =;printf(”20个数中最大值是%d,“,max);printf(”最小值是%d,“,min);printf(”和是%d,“,sum);printf(”平均值是%d.n“,average);} [20] 20 &array[i] 19 max=array[i];min=array[i];sum+array[i] sum/20

5.阅读程序,分析程序的功能。(1)#include #include void main(){ char s[80];int i;for(i=0;i<80;i++){ s[i]=getchar();if(s[i]=='n')break;} s[i]='';i=0;while(s[i])putchar(s[i++]);putchar(‘n’);} 从键盘输入一个字符串,并逐一输出

(2)#include #include void main(){ char str[10][80], c[80];int i;for(i=0;i<10;i++)gets(str[i]);strcpy(c, str[0]);for(i=1;i<10;i++)if(strlen(c)

(3)#include #include void main(){ char a[10][80], c[80];int i, j, k;for(i=0;i<10;i++)gets(a[i]);for(i=0;i<9;i++){ k=i;for(j=i+1;j<10;j++)if(strcmp(a [j], a[k])<0)k=j;if(k!=i){strcpy(c,a[i]);strcpy(a[i], a[k]);strcpy(a[k],c);} // 字符串交换 } for(i=0;i<10;i++)puts(a[i]);} 从键盘输入若干字符串,并将它们按大到小顺序排好再输出

(4)阅读程序,写出运行结果 #include void main(){ int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;for(i=0;i<6;i++){ for(j=0;j<6;j++)if(a[i]==b[j])break;if(j<6)printf(”%d “,a[i]);} printf(”n“);} 4 25 27 16

(5)阅读程序,写出运行结果。#include void main(){ char a[8],temp;int j,k;for(j=0;j<7;j++)a[j]='a'+j;a[7]='';for(j=0;j<3;j++){ temp=a[6];for(k=6;k>0;k--)a[k]=a[k-1];a[0]=temp;printf(”%sn“,a);} } gabcdef fgabcde efgabcd

(6)阅读下列程序,写出程序运行的输出结果。#include #include void main(){ char str1[ ]=”*******“;for(int i=0;i<4;i++){ printf(”%sn“,str1);str1[i]=' ';str1[strlen(str1)-1]='';} } ******* ***** *** *

(7)该程序的运行结果是: min= ,m= ,n= void main(){ float array[4][3]={ {3.4,-5.6,56.7}, {56.8,999.,-.0123}, {0.45,-5.77,123.5}, {43.4,0,111.2} };int i,j;int min;int m,n;min = array[0][0];m=0;n=0;for(i=0;i<3;i++)

。for(j=0;j<4;j++)if(min > array[i][j]){ min = array[i][j];m=i;n=j;} printf(”min=%d,m=%d,n=%dn“,min,m,n);}-5.77 2 1

(8)写出下面这个程序的输出结果: void main(){ char str[]=”ABCDEFGHIJKL“;printf(”%sn“,str);屏幕上显示 printf(”%sn“,&str[4]);屏幕上显示 str[2]=str[5];printf(”%sn“,str);屏幕上显示 str[9]='';printf(”%sn“,str);屏幕上显示 } ABCDEFGHIJKL EFGHIJKL ABFDEFGHIJKL ABFDEFGHI

(9)读懂下面的程序并填空。void main(){ char str[80];int i=0;gets(str);while(str[i]!=0){ if(str[i]>='a'&&str<='z')str[i]-=32;i++;} puts(str);} 程序运行时如果输入 upcase, 屏幕显示

程序运行时如果输入 Aa1Bb2Cc3, 屏幕显示 UPCASE AA1BB2CC 1.单项选择题

(1)C 语言总是从 函数开始执行。A A.main B.处于最前的 C.处于最后的 D.随机选一个(2)函数在定义时,省略函数类型说明符,则该函数值的类型为。A A.int B.float C.long D.double(2)以下 函数,真正地没有返回值。B A.int a(){int a=2;return(a);} B.void b(){printf(”c“);} C.int a(){int a=2;return a;} D.以上都是(3)在 C 语言中,有关函数的说法,以下正确的是。A A.函数可嵌套定义,也可嵌套调用 B.函数可嵌套定义,但不可嵌套调用

C.函数不可嵌套定义,但可嵌套调用 D.函数不可嵌套定义,也不可嵌套调用

(4)以下函数调用语句中,含有实参的个数为。C fun((2,3),(4,5+6,7));A.1 B.2 C.5 D.6(5)函数调用可以在。D A.函数表达式中 B.函数语句中 C.函数参数中 D.以上都是

(6)被调函数返回给主调函数的值称为。C A.形参 B.实参 C.返回值 D.参数(7),可以不进行函数类型说明。D A.被调函数的返回值是整型或字符型时 B.被调函数的定义在主调函数定义之前时

C.在所有函数定义前,已在函数外预先说明了被调函数类型 D.以上都是(8)被调函数通过 语句,将值返回给主调函数。D A.if B.for C.while D.return(9)被调函数调用结束后,返回到。D A.主调函数中该被调函数调用语句处 B.主函数中该被调函数调用语句处 C.主调函数中该被调函数调用语句的前一语句 D.主调函数中该被调函数调用语句的后一语句

(10)以下对 C语言函数的有关描述中,正确的是。A A.在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.C函数既可以嵌套定义又可递归调用 C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中(11)C 语言中函数的隐含存储类型是。C A.auto B.static C.extern D.无存储类型

(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是。A A.return 这两个数 B.形参用两个元素的数组 C.形参用两个这种数据类型的指针 D.用两个全局变量(13)C语言可执行程序从什么地方开始执行()。C A.程序中第一条可执行语句 B.程序中第一个函数 C.程序中的main函数 D.包含文件中的第一个函数(14)有一个函数原型如下所示,则该函数的返回类型为()。C abc(float x,float y);A.void B.double C.int D.float

2.填空题

(1)变量的作用域主要取决于变量,变量的生存期既取决于变量,又取决于变量。所处的位置,所处的位置,存储类型(2)说明变量时,若省略存储类型符,系统默认其为 存储类别,该存储类别的类型符为:。动态,auto(3)静态型局部变量的作用域是 ,生存期是。它所在的局部,整个程序

(4)函数中的形参和调用时的实参都是数组名时,传递方式为,都是变量时,传递方式为。址传递,值传递

(5)函数的形式参数的作用域为,全局的外部变量和函数体内定义的局部变量重名时,_________变量优先。该函数中,局部

(6)若自定义函数要求返回一个值,则应在该函数体中有一条 语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符。return,void(7)若函数的形式参数是指针类型,则实参可以是 或。指针,数组名

(8)函数的参数为 char *类型时,形参与实参结合的传递方式为。址传递

(9)函数的实参为常量时,形参与实参结合的传递方式为。值传递(10)下面这个函数的功能是求两个整数的积,并通过形参传回结果,请填空。int int int* *result void mul(___x,___y,___result){ ___=x*y;}

3.判断题

(×)(1)函数说明指的是在程序中设定一个函数模块。(√)(2)形参只有在被调用时才分配存储空间。(×)(3)在C的函数中,最好使用全局变量。

(×)(4)在调用函数时,实参传值给形参,调用结束时,形参值传给实参。(√)(5)所有函数定义都是并行的,相互独立的。(×)(6)函数的隐含存储类型是extern。(×)(7)形参可以是常量、变量或表达式。(×)(8)函数调用可以作为一个函数的形参。

(√)(9)C语言规定,实参应与其对应的形参类型一致。(×)(10)定义函数时,形参的类型说明可以放在函数体内。

4.程序填空题

(1)对数组按值从大到小的顺序排序后输出,请填空。#include void main(){ float a[7]={2,6,3,8,3,12,9};int i;void sort(float*,int);;for(i=0;i<7;i++)printf(”%f “,a[i]);printf(”n“);} void sort(){ int i,j,k;float t;for(i=0;i

{ t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;} } } sort(a,7)float* p,int n *(p+k)<*(p+j)if(k!=i)

(2)下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。#include void find(float *p, int max, int min, int n){ int k;*max=*p;for(k=1;k

B卷

5.写出下列程序运行结果(1)main(){ int i=1,p;p=fun(i,i+1);printf(”%dn“,p);} int fun(int a,int b){ int f;if(a>b)f=1;else if(a==b)f=0;else f=-1;return f;}-1

(2)键盘输入 abcdef #include void fun(){ char c;if((c=getchar())!='n')fun();putchar(c);} void main(){ fun();} fedcba(3)#include #define C 5 int x=1,y=C;void main(){ int x;x=y++;printf(”%d %dn“, x,y);if(x>4){ int x;x=++y;printf(”%d %dn“,x,y);} x+=y--;printf(”%d %dn“,x,y);} 5 6 7 7 12 6

(4)#include int c , a=4;func(int a , int b){ c=a*b;a=b-1;b++;return(a+b+1);} void main(){ int b=2 , p=0;c=1;p=func(b , a);printf(”%d,%d,%d,%dn“, a,b,c,p);} 4,2,8,9

(5)unsigned fun6(unsigned num){ unsigned k=1;do { k*=num%10;num/=10;} while(num);return k;} void main(){ unsigned n=26;printf(”%dn“, fun6(n));} 12(6)#include int max(int a,int b);main(){ int x,y,z,t,m;scanf(”%d,%d,%d“,&x,&y,&z);t=max(x,y);m=max(t,z);printf(”%d“,m);} int max(int a,int b){ if(a>b)return(a);else return(b);} 运行时若输入:10,15,9 则输出:___ 15 运行时若输入:300,129,300 则输出:___ 300(7)#include long sum(int a,int b);long factorial(int n);main(){ int n1,n2;long a;scanf(”%d,%d“,&n1,&n2);a=sum(n1,n2);printf(”a=%1d“,a);} long sum(int a,int b){ long c1,c2;c1=factorial(a);c2=factorial(b);return(c1+c2);} long factorial(int n){ long rtn=1;int i;for(i=1;i<=n;i++)rtn*=i;return(rtn);} 运行时若输入:2,3 则输出:___ 8 运行时若输入:0, 5 则输出:___ 121(8)#include int s();int x,y;main(){ int n;x=1;y=2;n=s();printf(”x=%d,y=%d,n=%d“,x,y,n);} int s(){ int z;x=3;y=4;z=x+y;return(z);} 程序运行后输出:___ 3,4,7

(9)以下程序的输出结果是a=___,b=___,c=___。#include int func(int a,int *p);void main(){ int a=1,b=2,c;c=func(a,&b);b=func(c,&a);a=func(b,&c);printf(”a=%d,b=%d,c=%d“,a,b,c);} int func(int a,int *p){ a++;*p=a+2;return(*p+a);} 36 16 19 第十章 指针

A部分(本、专科必做)

一、选择题

1、若有定义:int x,*pb;则以下正确的表达式是(A)A、pb=&x B、pb=x C、*pb=&x D、*pb=*x

2、以下程序的输出结果是(B)

A、因变量无定义输出不定值 B、0 C、-1 D、1 #include void main(){printf(“%dn”,NULL);}

3、以下程序的输出结果是(B)

A、5,2,3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7 #include void sub(int x,int y,int *z){*z=y-x;} void main(){ int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%dn”,a,b,c);}

4、以下程序的输出结果是(C)A、4 B、6 C、8 D、10 #include void main(){ int k=2,m=4,n=6;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(“%dn”,n);}

5、已知指针p的指向(图一)的a[1],则执行语句*p++;后,*p的值是(B)。A、20 B、30 C、21 D、31 a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50(图一)

6、已知指针p的指向(图一)的a[1],则表达式*++p的值是(B)。A、20 B、30 C、21 D、31

7、已知指针p的指向(图一)的a[1],则表达式++*p的值是(C)。A、20 B、30 C、21 D、31

8、以下程序的输出结果是(D)。A、23 B、24 C、25 D、26 #include void prtv(int *x){printf(“%dn”,++*x);} void main(){ int a=25;prtv(&a);}

9、以下程序的输出结果是(B)。A、运行出错 B、100 C、a的地址 D、b的地址 #include void main(){ int **k,*a,b=100;a=&b;k=&a;printf(“%dn”,**k);}

10、以下程序运行后,输出结果是(D)。

A)8 B)7 C)6 D)5 #include ss(char *s){ char *p=s;while(*p)p++;return(p-s);} main(){ char *a=”abded“;int i;i=ss(a);printf(”%dn“,i);}

二、填空题

1、若有定义:char ch;(1)使指针p指向变量ch的定义语句是 char *p=&ch。

(2)若已定义char *p;,使指针p指向变量ch的赋值语句是 p=&ch。

(3)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是 scanf(“%c”,p)。

(4)在(1)的基础上,通过指针p给变量ch赋字符’a’的语句是*p=’a’。

(5)在(1)的基础上,通过指针p用格式输出函数输出ch中字符的语句是printf(“%c”,*p)。

2、以下程序输出的是 C。void main(){ int i=3, j=2;char *a=”DCBA“;printf(”%c%cn“,a[i],a[j]);}

3、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。

void exchange(int *x, int *y){ int t;t=*y;*y= *x;*x= t;}

B部分(本科必做)程序填空:

1、下面程序的输出结果是 A B C D B C D C D D。char b[]=”ABCD“;void main(){ char *chp;for(chp=b;*chp: chp+=2)printf(”%s“,chp);printf(”n“);} 下面是一个字符串连接函数,请补充完整。void mystrcat(char *s1,char *s2){ char *p,*q;for(p=s1;*p;p++);for(q=s2;*q;q++)*p++=*q;*p=’’;}

第十一章 结构体与共用体 A部分(本、专科必做)

一、选择题

1、设有如下定义: struct sk {int a;float b;}data,*p;若有p=&data;,则对data中的a域的正确引用是(B)。A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a

2、根据以下定义,能输出字母M的语句是(D)。

A、printf(“%cn”,class[3].name);B、printf(“%cn”,class[3].name[1]);C、printf(“%cn”,class[2].name[1]);D、printf(“%cn”,class[2].name[0]);struct person{char name[9];int age;};struct person class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,};

3、以下程序的输出结果是(D)。A、0 B、1 C、3 D、6 #include void main(){ struct emplx{int x;int y;}enum[2]={1,3,2,7};printf(“%dn”,enum[0].y/enum[0].x*enum[1].x);}

4、若有以下说明及语句,则值为6的表达式是(D)。A、p++->n B、p->n++ C、(*p).n++ D、++p->n struct st{int n;struct st *next;};struct st a[3],*p;a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next=’’;p=&a[0];

5、已知字符0的ASCII码的十进制的值是48,且数组的第0个元素在低位,以下程序的输出结果是(B)。A、39 B、9 C、38 D、8 void main(){ union{int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf(“%xn”,s->c[0]);}

6、以下程序输出的结果是(C)。A、32 B、16 C、8 D、24 typedef union{long x[2];int y[4];char z[8];}MYTYPE;MYTYPE them;void main(){ printf(“%dn”,sizeof(them));}

7、设有以下语句 typedef struct S { int g;char h;} T;则下面叙述中正确的是(B)。

A)可用S定义结构体变量 B)可以用T定义结构体变量 C)S是struct类型的变量 D)T是struct S类型的变量

8、有以下说明和定义语句 struct student { int age;char num[8];};struct student stu[3]={{20,”200401“},{21,”200402“},{109,”200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是(D)。A)(p++)->num B)p->num C)(*p).num D)stu[3].age

二、填空题

1、为了建立结构体(含有两个成员,data是数据成员,next是指向自身结构体的指针成员),请填空: Struct link { char data;struct link *next;}

2、把类型int另取一个类型名称INT,则以下应填: typedef int INT;

3、以下程序的运行结果是2002Shangxian。# include typedef struct student{ char name[10];long sno;float score;}STU;main(){ STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90}, c={“Anhua”,2003,95},d,*p=&d;d=a;if(strcmp(a.name,b.name)>0)d=b;if(strcmp(c.name,d.name)>0)d=c;printf(“%ld%sn”,d.sno,p->name);}

B部分(本科必做)程序填空:

以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高学生的人数。请填空。

#include #define N 16 typedef struct { char num[10];int s;}STREC;

int fun(STREC *a,STREC *b){ int i,j=0,max=a[0].s;for(i=0;i

void main(){ STREC s[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85}, {“GA001”,91},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA0015”,85}, {“GA0013”,91},{“GA0012”,64},{“GA0014”,91},{“GA0011”,66},{“GA0017”,64}, {“GA0018”,64},{“GA0016”,72},};STREC h[N];int i,n;n=fun(s,h);printf(“The %d highest score:n”, n);for(i=0;i

下载C语言复习题word格式文档
下载C语言复习题.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C 语言程序设计期末复习题

    C++语言程序设计期末复习题 一、单项选择题 1. C++源程序文件的默认扩展名为( )。 A. cpp B. exe C. obj D. lik 2. 由C++源程序文件编译而成的目标文件的默认扩展名为(......

    微机原理与语言复习题及参考答案

    中南大学网络教育课程考试复习题及参考答案 微型机原理与汇编语言 一、单项选择题: 1.设AL=0A8H,CX=2,CF=1,执行RCL AL,CL指令后,AL中的值为 ( ) A.51H B.A3H C.47H D.0C5H 2.下述指......

    微机原理与语言复习题及参考答案[5篇材料]

    微机原理与汇编语言复习题及参考答案 ——CSDN下载频道提供,请尊重原创 一、选择题: 1. 设AL=0A8H,CX=2,CF=1,执行RCL AL,CL指令后,AL中的值为 A. 51H B. A3H C. 47H D. 0C5H 2.......

    复习题

    社区工作法律法规和文件选编 (一)复习题 一、单项选择题(每题的备选项中,只有一个最符合题意 1.社区是指( C ) A.一定社会关系为基础的共同生活的群体 B.居委会组织 C.聚居......

    复习题

    一、单项选择题 1、在.NET中,以下关于命名空间的描述,正确的是( D ) A. 命名空间不可以进行嵌套 B. 在一个.cs文件中,只能存在一个命名空间 C. 使用private修饰的命名空间,其内部......

    复习题

    第三届环保形象大使复习题 一:选择题(总计:84小题) 1、 绿色食品指什么食品?(C) A,蔬菜,水果 B、绿颜色的食品 C安全无污染食品 D有丰富营养价值的食品 2,下列哪一项是可以分类回收,循......

    复习题

    1.为什么说鸦片战争是中国近代史的起点? 答:随着外国资本主义的入侵,中国的社会性质和革命性质开始发生质的变化。中国社会逐步沦为半殖民地半封建社会。中国人民逐渐开始了反......

    复习题

    复习题 一、填空题(每空1分,共40分) 1、《国务院关于进一步加强企业安全生产工作的通知》的具体内容包含 九 个方面,共 32 条,文件于 2010年 7 月 19 日正式出台。 2、《国务院关......