C培训课复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考试题型及分值
一、选择题2*25=50分
二、程序填空2*10=20分
三、程序改错题2*8=16分
四、编程题2*7=14分
一、选择题
1.Char型数据在内存中以()形式存放。
A. ASCII码形式
B. 字符形式
C. 字符串形式
D. BCD码形式
2.属于C语言基本数据类型的是( )
A.指针型
B.无符号整型
C.数组型
D.结构型
3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为( )。
A.0 ~255
B.0~32767
C.0~65535
D. 0~2147483647
4.数据int a[7]中包括()元素。
A. 6
B. 7
C. 4
D. 5
5.以下选项中,与k=n++完全等价的表达式是()。
A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1
6. C语句“x*=y+2;”还可以写作( )
A. x=x*y+2;
B. x=2+y*x;
C. x=x*(y+2);
D. x=y+2*x;
7.以下不正确的C语言标识符是()。
A) ABC B) abc C) a_bc D)ab.c
8.以下非法的赋值语句是____。
A.n=(i=2,++i);B.j++;C.(a+b)++;D.x=j>0;
9.下列保留字中用于构成循环结构的是()
A. if
B. while
C. switch
D. default
10.定义一个具有8个元素的整型数组,应使用语句。
A)int a[8];B)int a[2,4];
C)int a[];D)int *a[8];
11.当调用函数时,实参是一个数组名,则向函数传送的是( )。
A.数组的长度
B.数组的首地址
C.数组每一个元素的地址
D.数组每个元素中的值
12.假设i的初值为2,赋值语句j=i++执行后,j,i的值分别是()。
A. 3 , 3
B. 2 , 3
C. 3 , 2
D. 2 , 2
13.C语言的数组名是()。
A. 数组的一个元素
B. 数组的起始地址
C. 一个变量
D. 数组元素的集合
14.C语言中,while与do-while循环的主要区别是()。
A. do-while的循环体至少无条件执行一次
B. while的循环控制条件比do-while的循环控制条件严格
C. do-while允许从外部转到循环体内
D. do-while的循环体不能是复合语句
15.当说明一个结构体变量时,系统分配给它的内存是()。
A. 各成员所需内存量的总和
B. 结构中第一个成员所需内存量
C. 成员中占内存最大者所需的容量
D. 结构中最后一个成员所需的内存量
16. 为了使用putchar()函数,需在程序中包含____。
A. <math.h>
B.<string.h>
C. <stdio.h>
D.<ctype.h>
17.下列运算符中优先级别最高的是()。
A.<
B.+
C.&&
D.!=
18.若二维数组a有m列,则在a[i][j]前的元素个数为__.
A)j*m+j B)i*m-j C)i*m+j D)i*m+j+1
19.putchar ( ) 函数可以向终端输出一个( )
A. 整型变量或表达式的值
B. 实型变量的值
C. 字符串
D. 字符或字符型变量值
20.表达式40%7的值是____。
A. 3
B. 2
C. 5
D. 6
21. 在函数内,定义变量时存储类型符可省略的是()
A. auto
B. static
C. extern
D. register
22. 定义函数时,缺省函数的类型声明,则函数类型取缺省类型( )
A. void
B. char
C. float
D. int
23. 设char x =′a′;则printf(″x = ﹪c, y = ﹪c \ n″,x,97);的输出是()
A. x = a,y = 97
B. x = 97,y = a
C. x = 97,y = 97
D. x = a,y = a
24表达式7/3的值是____。
A. 2.33
B. 2.333
C. 2.3333
D. 2
25.以下叙述中正确的是____。
A .构成C程序的基本单位是函数
B.所有被调用的函数一定要在调用之前进行定义
C.main()函数必须放在其它函数之前
D.可以在一个函数中定义另一个函数
26.下面程序段的运行结果是().
char c[5]={'a','b','\0','c','\0'};
printf("%s",c);}
A.’a’’b’
B. ab
C. ab c
D. ab0
27.以下叙述不正确的一项是()。
A 一个C语言源程序可由一个或多个函数组成
B 一个C语言源程序必须包含一个main函数
C C语言源程序的基本组成单位是函数
D 在C程序中,main函数必须位于程序的最前面
28.下列标识符中,不能作为合法的C用户定义标识符的是()。
A a3_b3
B void
C _123
D IF
29.数组名作为实参传递给形参时,数组名被处理为()。
A 该数组的长度
B 该数组的元素个数
C 该数组的首地址
D 该数组中各元素的值
30.两个指针变量不可以( )。
A 相加
B 比较
C 相减
D 指向同一地址
31.以下数组定义正确的是()
A int a [0xCF];
B char 8th[10];
C char ch [N];
D float f (10);
32.关于return语句,下列正确的说法是()。
A 可以在同一函数中出现多次
B 在主函数中不能出现
C 必须在每个函数中出现
D 只能在除主函数之外的函数中出现一次
33.下列说法不正确的是()。
A 主函数main中定义的变量在整个文件或程序中有效
B 不同函数中,可以使用相同名字的变量
C 形式参数是局部变量
D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
34.以下合法的赋值语句是( )。
A 5++;
B t=t+1;
C (a+b)++;
D x+y=0;
35.下列保留字中用于构成循环结构的是()
A if
B while
C switch
D default
36.下列运算符中优先级别最低的是()。
A <
B +
C ||
D !=
37.以下非法的赋值语句是()。
A.i=i+1;B.(i+j)++;C.x=a>0;D.a++;
38. 假设i的初值为2,赋值语句j=i++执行后,j,i的值分别是()。
A. 3 , 3
B. 2 , 3
C. 3 , 2
D. 2 , 2
39.以下选项中,与k= ++n 完全等价的表达式是()。
A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1
40.若有以下类型说明语句:
char w;int x;float y,z;
则表达式w*x+z-y的结果为()类型。
A.float
B.char
C.int
D.double
41.在c语言中,函数中变量的隐含存储类别是()。
A.auto
B.static
C.extern
D.无存储类别
42.设char x =′a′;则printf(″x = ﹪c, y = ﹪c \ n″,x,97);的输出是()
A. x = a,y = 97
B. x = 97,y = a
C. x = 97,y = 97
D. x = a,y = a
43.设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是()
A. 2
B. 3
C. 4
D. 无确定值
44. C语句“x/=y+2;”还可以写作( )
A. x=x/y+2;
B. x=2+y/x;
C. x=x/(y+2);
D. x=y+2/x;
45.执行语句“for(i=0;i<10;++i,++a)scanf(″%d″,a);”试图为int类型数组a[10]输入数据,是错
误的。
错误的原因是( )
A.指针变量不能做自增运算
B.数组首地址不可改变
C.++i应写作i++
D.++a应写作a++
46.若有说明:int a[10];则对a 数组元素的正确引用是()。
A. a[10]
B. a[3, 5]
C. a(5)
D. a[10-2]
47.设有以下声明语句
struct ex
{int x;
float y;
char z;}example;
则下面的叙述中不正确的是( )。
A.struct 是结构体类型的关键字
B.example 是结构体类型名
C.x,y,z 都是结构体成员名
D.struct ex 是结构体类型
48. 设 x,y 均为 int 型变量,且 x=10,y=3,则 print("%d,%d\n",x- -,- -y);语句的输出结果是( )。
A.10,3
B.9,3
C.9,2
D.10,2
49.对于如下:if(a>b)if(c>d) x = 1;else x = 2;结构的语句,以下说法正确的是().A.else与第一个if配对B.else与第二个if配对
C.else不和任何if匹配D.此结构有误,不合C语法规则
50.下列各语句定义了数组,其中一个不正确的是( )
A. static int a[5],b[2][3];
B. char no[30],rec[30,6];
C. int x[]={2,4,6,8,10};
D. int x[10]={1,2,3,4,5};
51. 以下程序的输出结果是()。
void main()
{int x=1,a=0,b=0;
switch(x)
{ case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf(”a=%d,b。
%d\n”,a,b);
}
A.a=2,b=1
B.a=l,b=1
C.a=l,b=O
D.a=2,b=2
52.有如下程序
void main()
{int i,sum;
for(i=l;i<=3;sum++)
sum+=i;
printf(”%d\n",sum);
}
该程序的执行结果是()。
A.6
B.3
C.死循环
D.O
53. 有以下程序
float fun(int x,int y)
{return(x+y);}
void main()
{int a=2,b=5,c=8;
printf("\n%3.1f\n",fun( (int)fun(a+c , b),a-c) );
}
程序运行后的输出结果是()。
A.10.00
B.-6.0
C.9.0
D.9
54. 设从键盘上输入B,执行下列程序后输出的结果是()。
# include ″stdio.h″
void main()
{char c;
c = getchar();
if (c> =′A′&&c< =′Z′) c = c+3;
printf(″﹪c \ n″,c);
}
A.B
B.E
C.e
D.69
55.以下程序的输出结果为()。
void main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case ‘a’:printf("%c,",c);break;
case ‘b’:case ‘e’:printf("ok,");
default: printf("end");
}
}
}
A a,ok,end
B a,ok,endend
C a,ok,end,end
D a,ok,ok 56.以下程序的输出结果为()。
main( )
{ int i=15,j=15;
printf("%d,%d\n",++i, j--);
}
A 16,14
B 15,15
C 16,15
D 15,14
57.下列格式符中,可以用于以8进制形式输出整数的是( )
A %d
B %8d
C %1d
D %o
58. main()
{float x=456.789;
printf("%5.1f\n",x);
}
以上程序输出的结果是( )。
A 456.7
B 456.8
C 456.78
D 456.79
59.下列程序的输出结果是( )。
void main()
{int a=0,b=0,c=0;
if(++a>0||++b>0) ++c;
printf("\na=%d,b=%d,c=%d",a,b,c);
}
A a=0,b=0,c=0
B a=l,b=l,c=1
C a=l,b=O, c=1
D a=0, b=1.c=1
60.下列程序的输出结果是( )。
void main()
{ int i;
for(i=1;i+1;i++)
{ if(i>4){printf("%d ",i++);break;}
}
printf("%d",i++);
}
A 5 5
B 5 6
C 程序错误,没有输出
D 循环条件永远为真,死循环
61.下列程序的输出结果是( )。
void main()
{int i=3;
switch(i)
{ case 1:
case 2:printf("%d",i);
case 3:
case 4:break;
default:printf("OK");
}
}
A 0
B 3
C OK
D 没有任何输出
63. 若运行时给变量x 输入10,则以下程序的运行结果是:
main()
{int x,y;
scanf("%d",&x);
y=x>=0?1:-1;
printf("%d\n",y);
}
A)0 B)1 C)-1 0)10
64.i,j为int型的变量,则下面程序中的循环体的执行次数为()。
i=1;j=0;
while(i+j<=10)
{ if (i>j) j=j+2;
else i=i+2;
}
A) 7 B) 6 C) 5 D) 4
65.有如下程序
void main()
{ int i,sum;
for(i=l;i<=3;sum++)
sum+=i;
printf(”%d\n",sum);
}
该程序的执行结果是()。
A.6
B.3
C.死循环
D.O
二、程序填空
1. 下面程序用于计算n!的值。
main()
{ int i,p,n;
【】;
scanf(“%d”,&n);
for (i=1;i<=n;i++)
【】;
printf(“p=%d”,p);
2.以下程序可计算1门课程中10名学生成绩的平均分,请填空。
#include<stdio.h>
float average(float arrary[10])
{ int i;float aver,sum=array[0];
for(i=1;i<10;i++)sum+=【】;
aver=sum/10;
return(aver);
}
int main()
{ float score[10],aver;int i;
printf(“\ninput 10 scores:”);
for(i=0;i<10;i++)scanf(“%f”,&score[i]);
aver=【】;
printf(“\naverage score is %5.2f\n”,aver);
return 0;
}
3.以下程序的功能是判断输入的年份是否是闰年(判断闰年的条件:①、普通年能被4整除且不能被100整除的为闰年;②、世纪年能被400整除的是闰年)。
请在【】内填入正确内容。
#include”stdio.h”
void main()
{ int y,f;
scanf(“%d”,&y);
if(y%400==0)f=1;
else if(【】)f=1;
else 【】;
if(f==1)printf(“%d is”,y);
else printf(“%d is not”,y);
printf(“a leap year\n”);
}
4.调用函数,求a,b两个数中的最大值。
#include <stdio.h>
void main(void )
{
int a,b,c;
【】;
scanf ( “%d,%d” , &a, &b) ;
c=【】;
printf (“%d” ,c) ;
}
int max(int x ,int y)
{ int z ;
z=【】;
return ( z) ;
}
5.已知两整型数组
a1,a2,…,a10
b1,b2,…,b10
试计算a1*b1+a2*b2+…+a10*b10
void main( )
{
int a[10],b[10],i,s;
for (i=0;i<10;i++)
scanf(“%d%d”, 【】 );
s=0;
for(【】 )
s=s+【】;
printf(“%d\n”, s);
}
6.有5个人坐在一起,问第5个人多少岁?他说比第4个人大3岁。
问第4个人岁数,他说比第3个人大3岁,问第3个人,又说比第2个人大3岁。
问第2个人,说比第1个人大3岁。
最后问第1个人,他说是15岁。
请问第5个人多大?(用递归实现)
age(int n) /*求年龄的递归函数*/
{ int c;/* c用作存放函数的返回值的变*/
if(n==1)【】;
else 【】;
return(c);
}
void main()
{ printf("%d",age(5));}
7.用数组处理求费波那西(Fibonacci)数列的前20个数,并按每行5个数的形式输出。
费波那西数列的特点是:第1、2两个数为1、1。
从第3个数开始,该数是其前面两个数之和。
#include <stdio.h>
int main()
{ int i; int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=【】;
for(i=0;i<20;i++)
{ if(【】) printf(“\n”);
printf(“%12d”,f[i]);
}
printf("\n");
return 0;
}
8.下面程序以每行4个数据的形式输出a数组,请填空。
void main()
{int a[20],i;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if (【】) 【】
printf("%3d",a[i]);
}
printf("\n");
}
9.#include <stdio.h>
int main()
{int a=1,b=2;
printf("%d %d\n",a--,++b);
return 0;
}
程序的运行结果为【】
10.
#include <stdio.h>
int main()
{ char grade;
scanf("%c",&grade);
switch(grade)
{ case 'A': printf("85~100\n");
case 'B': printf("70~84\n");
case 'C': printf("60~69\n");
case 'D': printf("<60\n");
default: printf("enter data error!\n");
}
return 0;
}
程序运行时输入B ,则输出的结果为: 【 】
11.下列程序执行后的输出结果是【 】。
main()
{int m[][3]={1,4,7,2,5,8,3,6,9};
int i ,k=2:
for(i=0;i<3;i++)
{printf("%d,",m[k][i]);}
}
三、程序改错题
以下每个程序各有两个错误,请改正,使其能得到正确的运行结果,可以直接在错误的语句边修改。
注意:不得删除或增加语句
1、 有人用温度计测量出用华氏法表示的温度(如 F ),今要求把它转换为以摄氏法表示的温度(如
C ) 转换公式如下:
)32(9
5-=
f c #include <stdio.h>
int main ( )
{
float f,c; scanf("%d",&f); //此行有错
c=5/9*(f-32); //此行有错
printf("f=%f\nc=%f\n",f,c);
return 0;
}
2、输入圆的半径,求圆的面积。
#include <stdio.h>
int main ( )
{
float r;s; //此行有错
scanf("%d",r); //此行有错
s=3.14*r*2;
printf("r=%f\ns=%f\n",r,s);
return 0;
}
3、以下程序功能是将a 串的内容赋给b 串,并将b 串输出。
#include <stdio.h>
#include <math.h> //此行有错
int main()
{
char a[20]=”hello ”,b[20];
b=a; //此行有错
puts(b);
return 0;
}
4、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。
#include<stdio.h>
int main()
{ char ch;
scanf(“%s”, &ch); //此行有错
if (ch>=’A’ && ch<=’Z’) ch=ch+32;
else if(ch>=’a’ && ch<=’z’) ch=ch-32;
getchar(ch); //此行有错
return 0;
}
5、输入两个字符串,找出其中最大值。
#include <stdio.h>
#include <math.h> //此行有错
int main()
{
char str1[20],str2[20];
gets(str1);
gets(str2);
if (str1>str2) //此行有错
puts(str1);
else
puts(str2);
return 0;
}
6、从键盘输入一对数,按由小到大的顺序输出。
当输入一对相等数时结束循环。
#include <stdio.h>
int main()
{
int a,b,t;
scanf("%d,%d",&a,&b);
while(a==b) //此行有错
{
if (a>b)
{a=t; //此行有错
a=b;
b=t;}
printf("%d,%d\n",a,b);
scanf("%d,%d",&a,&b);
}
return 0;
}
7、从键盘输入一行字符,分别统计其中的字母、数字、空格和其它字符的个数,用回车表示输入结束。
#include <stdio.h>
int main()
{ int c;
int letter=0,digit=0,space=0,other=0;
printf("Please input a string:\n");
while ((c=getchar())!='\0') //此行有错
if (c>=a&&c<=z||c>=A&&c<=Z) //此行有错
letter++;
else if (c>='0'&&c<='9')
digit++;
else if (c==' ')
space++;
else
other++;
printf("letter=%d, ",letter);
printf("digit=%d, ",digit);
printf("space=%d, ",space);
printf("other=%d\n",other);
}
四编程题
1.编写程序打印0-100之间的能被7整除的数,要求每行打印5个数,并输出这些数的和。
2.求分段函数 |x| x<0
y= 2x+1 0<=x<100
103 x x>=100
输入x 的值,输出y 的结果(输出y 保留两位小数)。
3.输入一百分制成绩,要求输出成绩等级:A,B,C,D,E 。
90分以上为A ,80~89为B ,70~79为 C ,60~69为D ,69分以下为E 。
4.编写程序求100-999之间所有的水仙花数。
水仙花数是指一个3位数,其各位数字立方和等于该数本身,如153=13+53+33。
5.编写程序,用循环的方式输出以下图形。
6. 一个班有30人,用a 数组存放一门课的成绩,编程输入该班学生的成绩,计算平均分,并输出所有大于平均值的数组元素。
* *** ***** *******。