c语言题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序设计综合复习题
一、单项选择题
1.可以作为自定义标识符的是( )
A.2x B.break
C.m-n D.m_n
2.C语言的保留字(关键字)是( )
A. define B. enum
C. main D. include
3.错误的实型(浮点型)常数是( )
A. .0 B. 0.E0
C. 0.0 D.0E+0.0
4.无条件转移语句的一般形式是:goto语句标号;,其中的语句标号可以是( )
A.整型数 B.标识符
C.保留字 D.实型数
5.正确的变量定义是( )
A.unsigned long d=1000; B.float m1=m2=10.0;
C.char c1=’A’,c2=A; D.double x=0.618,x=3.14;
6.表达式的值为0的是( )
A.5/5%5 B.5>2
C.!4 D.0x7&7
7.设int a;,则表达式a=2,4,a+1的值是( )
A.1 B.2
C.3 D.4
8.设int i; float f; double d; long int e;,则表达式10+′a′+i*f-d/e结果的类型是( )
A. double B.long
C. int D. float
9.设int a;,则语句for(a=0;a= =0;a++);和语句for(a=0;a=0;a++);执行循环的次数分别是( )
A.0,0 B.0,1
C.1,0 D.1,1
10.if(表达式)和while(表达式)中的“表达式”( )
A.只能是逻辑的 B.只能是关系的
C.只能是算术的 D.以上三种都可以
11.设int a=0,b=0,m=0,n=0;,则执行(m=a= =b)‖(n=b= =a)后m和n的值分别是( )
A.0,0 B.0,1
C.1,0 D.1,1
12.设int a,b;为使变量a和b分别获得数据10和20,则下列正确的是( )
A.scanf(″%d,%d″,&a,&b);输入数据:10,20<回车>
B.scanf(″%d,%d″,&a,&b);输入数据:10 20<回车>
C.scanf(″%d,%d″,&a,&b);输入数据:a=10,b=20<回车>
D.scanf(″%d,%d″,a,b);输入数据:10,20<回车>
13.对于函数,正确的说法是( )
A.可以嵌套定义 B.定义时有些函数名前可以带星号
C.必须有返回语句 D.必须有形式参数
14.设int a[3][4]; ,则与元素a[0][0]不等价的表达形式是( )
A.*a B.* *a
C.*a[0] D.*(*(a+0)+0)
15.设char s1[]={′a′,′b′,′c′},s2[]=″abc″; ,则数组s1和s2的长度分别是( )
A.2,3 B.3,3
C.3,4 D.4,4
16.设int a=1,b=2;,则执行a=b+2,a++,a+b;后a和b的值分别是( )
A.1和2 B.3和2
C.4和7 D.5和2
17.设int a=2,b=3,c=4;,则表达式a>b&&bA.-1 B.0
C.1 D.2
18.设int a=2,b=3,x,y;,则能正确执行的语句是( )
A.scanf(〞%d,%d〞,x-y,x+y); B.printf(〞%d\n〞,a%b);
C.printf(〞%f\n〞,a+b); D.scanf(〞%d,%d〞,x,y);
19.设char s[10]= “abcde”,t[ ]= “12345”; ,则s和t在内存中分配的字节数分别是( )
A.6和5 B.6和6
C.10和5 D.10和6
20.设int a=10,*p=&a; ,则执行printf(〝%d\n〞,*p+a);的结果是( )
A.10 B.20
C.30 D.40
21.自定义函数中形式参数

的作用域是( )
A.本文件 B.本函数
C.main 函数 D.整个程序
22.设int b[ ][5]={1,2,3,4,5,6,7};,则元素b[1][2]的值是( )
A.0 B.2
C.6 D.7
23.对函数而言,叙述正确的是( )
A.函数中只能有一个return 语句
B.当函数的形参是数组时形实结合为值传递方式
C.程序中只能有一个main函数
D.无参函数的函数体内不能出现return语句
24.执行下列程序段后输出的结果是( )
int x,y,z=1;
for(x=1,y=-1;xprintf(〞%d\n〞,z);
A.1 B.2
C.5 D.6
25.设static int a[3]={1,2,3};int*p[ ]={&a[0],&a[1],&a[2]};
则与数组元素a[1]等价的是( )
A.*p[1] B.p[1]
C.*p+1 D.p+1
26.设struct
{char name[10];
int age;
}stu[2]={{ 〞Tom〞,25},{〞Mary〞,26}},*p=stu;
则执行语句printf(〞%s%d\n〞,p->name,stu[1].age);后输出结果是( )
A.Tom25 B.Tom26
C.Mary25 D.Mary26
27.设typedef double DB;,则与DB u[5];的等价形式是( )
A. double db[5]; B.double DB[5];
C.double u; D.double u[5];
28.设char ch,str[4],*strp;,则正确的赋值语句是( )
A. ch=″MBA″; B. str=″MBA″;
C. strp=″MBA″; D. *strp=″MBA″;
29.设typedef char *POINT;
POINT p,q[3],*r;,则p、q和r分别是字符型的( )
A.变量、一维数组和指针变量
B.变量、二维数组和指针变量
C.指针变量、一维数组指针和二级指针变量
D.指针变量、一维指针数组和二级指针变量
30.若变量定义时未初始化,则其值不确定的是( )
A.静态全局变量 B.局部变量
C.静态局部变量 D.全局变量
31.设struct{int a; char b;}Q,*p=&Q; ,则错误的表达式是( )
A. *p.b B. (*p).b
C. Q.a D. p->a
32.在某文件中,若全局变量与局部变量同名,则( )
A.视为同一个变量 B.变量作用域不确定
C.不允许 D.允许
33.设宏定义#define P(x) x/x
则执行语句printf(″%d\n″,P(4+6));后的输出结果是( )
A.1 B.8.5
C.11 D.11.5
34.属于C语言基本数据类型的是( )
A.指针型 B.无符号整型
C.数组型 D.结构型
35.C语言的长整型数值在计算机中占用的字节个数是( )
A.1 B.2
C.3 D.4
36.C语言中,″\x3d″在内存中占用的字节数是( )
A.1 B.2
C.4 D.5
37.设int x;则执行printf(″%x\n″,~x^x);的结果是( )
A.0 B.1
C.ff D.ffff
38.对于while语句,错误的说法是( )
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循环体有可能一次也不执行
D.循环体中可以包含若干条语句
39.设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是(

)
A.9,19 B.9,20
C.10,19 D.10,20
40.执行下列语句
int a=8,b=7,c=6;
if(ac){a=c;c=b;}
printf(″%d,%d,%d\n″,a,b,c);
后输出的结果是( )
A.6,7,7 B.6,7,8
C.8,7,6 D.8,7,8
41.设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( )
A.x数组的长度等于y数组的长度
B.x数组的长度大于y数组的长度
C.x数组的长度少于y数组的长度
D.x数组与y数组的存储区域相同
42.设int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句
for(i=0;i<3;i++)
printf(″%d″,x[i][2-i]);
的输出结果是( )
A.147 B.159
C.357 D.369
43.设int b[ ]={1,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为( )
A.1 B.2
C.3 D.4
44.设int a,*p;则语句p=&a;中的运算符“&”的含义是( )
A.位与运算 B.逻辑与运算
C.取指针内容 D.取变量地址
45.若函数能被其它编译单位引用,那么函数定义时的存储类型应选用( )
A.auto B.static
C.extern D.register
46.下面函数定义有错误的是( )
A.f1(x1,x2) B.f1(x1,x2)
int x1,x2; int x1;int x2;
{函数体} {函数体}
C.f1(int x1,x2) D.f1(int x1,int x2)
{函数体} {函数体}
47.C语言中计算a3正确的表达是( )
A.a^3 B.pow(a,3)
C.a**3 D.power(a,3)
48.下列定义正确的是( )
A.anum t={a,b}x; B.enum t{1,2}x;
C.anum {′+′,′-′}x; D.enum t{a,b}x;
49.设有定义:union u{int a[4];float b[3]};
char c[16];}aa;
则printf(″%d\n″,sizeof(aa));的输出是( )
A.32 B.16
C.12 D.8
50.在下列有关宏替换的叙述中,正确的说法是( )
A.宏替换占用运行时间
B.宏名有类型
C.带参数的宏替换和函数等价
D.宏替换只是字符替换
51.下列程序的运行结果是( )
# define A 5
# define B A+1
main( )
{int a;
a=B;
printf(″%d\n″a--);
}
A.6 B.5
C.4 D.出错
二、填空题
1.一个字符型变量所占内存的字节数是____________________。
2.写出公式 对应的C语言表达式_________________。
3.执行语句printf(〞%s\n, 〞〞 World\0Wide\0Web〞);后的输出结果是_______________。
4.设int a,b=5;,则执行表达式a=b-2==3后a的值是_________________。
5.设char s[20]= 〞My〞;,则执行strcat(s, 〞Sun! 〞)后s的内容是___________________。
6.设float x=23.65;, 则执行语句printf (〞%d\n〞,(int)(x+0.5));后输出结是_______________。
7.若定义

函数char*fun( ){…},则该函数的返回值类型是__________________。
8.设int x=-9,y;,则执行y=x>=0?x:-x;后y的值是_________________。
9.若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是__________________。
10.设int a=10;,则执行语句a+=a-=a+a;后a 的值是_________________。
11.在C语言中,预处理功能主要包括:________、文件包含和条件编译。
12.表达式4&5-3&&5的值是________。
13.设int j=5;,则执行语句j+=j-=j*j;后j的值是_______。
14.设int a,b=2,c=3;执行表达式a=(b>c)?(b+1):(c+2),3
后a的值是_______。
15.设int a[3][2]={2,4,6,8,10};则*(a[1]+1)的值是_______。
16.在C语言中,++运算符的结合性是_______。
17.在C语言中,若函数的形参是整型变量,而对应的实参是整型数,则形实结合的方式是_______传递。
18.在C语言中,数组名除名字的功能之外还代表数组的_______。
19.设enum en{a, b=3,c=4};,则a的序值是_______。
20.continue语句可以出现在for、while和_______语句中。
21.设int y;执行表达式(y=4)||(y=5)||(y=6)后,y的值是______。
22.设char ch=′A′;则printf(″%c″,(ch>=′A′ && ch<=′Z′)?ch+32:ch);的值是_____。
23.结构化程序设计的三种基本结构是:选择结构、循环结构和______。
24.下列程序
int x=3;
do{printf(″%d″,--x);}while(!x);
循环执行的次数是______。
25.在C语言中,一个二维数组可以看成若干个______数组。
26.设int a[3][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______。
27.若函数定义为
int data( )
{ float x=9.9;
return(x);
}
则函数返回的值是______。
28.设struct student
{int no;char name[12];
float score[3];
}s1,*p=&s1;.
用指针变量p给s1的成员no赋值1234的方法是______。

三、程序分析题, 写出程序输出结果。
1.
void main()
{int a=1,b=2,c=3;
if(a<=c)
if(b==c)printf(〞a=%d\n〞,a);
else printf(〞b=%d\n〞,b);
printf(〞c=%d\n〞,c);
}

2.
int f(int n)
{static int m=5;
return ++m+n;
}
void main()
{int i;
for(i=0;i<3;i++)printf(〞%5d〞,f(i));
printf(〞\n〞);
}

3.
#define SIZE 4
void main()
{int n[SIZE]={8,3,4,1};
int i, j;
for (i=0;i{printf("%d",n[i]);
for(j=1;j<=n[i];j++)printf("*");
printf("\n");
}
}

4.
int fm(int a,int b)
{if(b==1)return a;
else return a+fm(a,b-1);
}
void main()
{
printf(〞%d\n〞,fm(4,3));
}

5.
void main( )
{ int a=10,b=20,c=30;
if(a>b) if(a>c) printf(″a=%d\n″,a);
else printf(″b=%d\n″,b);
printf(″c=%d\n″,c);
}

6.
SUM(int n)
{ if (n==1) return 1;
else return n * n+SUM (n-1);
}
void main( )
{ printf (″SUM=%d\n″,SUM(5));
}

7.
int fuc(int j)
{ static int k;
return (++k+j);
}
void main( )

{ int j;
for (j=1;j<=3;j++) printf (″%5d″,fuc(10));
printf (″\n″);
}

8.
struct
{ int a,b;
union {int M,N;char ch[10];}in;
} Q,*p=&Q;
main( )
{Q.a=3;Q.b=6;
Q.in.M=(*p).a+(*p).b;Q.in.N=p->a*p->b;
printf(″%d,%d,%d\n″,sizeof(Q.in),Q.in.M,Q.in.N);
}

9.
int fun(int x)
{
int y=0;
static int z=3;
z++;++y;
return(x+y+z);
}
void main( )
{
int i,x=2;
for(i=0;i<2;i++)
printf(″%5d″,fun(x++));
}

10.
void main( )
{
int s=0,i;
for(i=1;;i++)
{
if(s>50)break;
if(i%2==0) s+=i;
}
printf(″i=%d,s=%d\n″,i,s);
}

11.
int gcd(int m,int n)
{ if(m==n)return m;
else if(m>n) return gcd(m-n,n);
else return gcd(m,n-m);
}
void main( )
{
printf(″Gcd=%d\n″,gcd(24,36));
}

12.
# include
void main( )
{ int i=0;
char c,s[]=″SABC″;
while(c=s[i])
{
switch(c)
{
case ′A′:i++;break;
case ′B′:++i;
default:putchar(c);i++;
}
putchar(′*′);
}
}

13.
int a1=300,a2=400;
void main( )
{int a3=100,a4=200;
sub1(a3,a4);
sub1(a1,a2);
printf(″%d,%d,%d,%d\n″,a1,a2,a3,a4);
}
sub1(int x,int y)
{ a1=x;
x=y;
y=a1;
}

四、程序填充题, 将程序横线处缺少的部分补上,使其能正确运行。
1.函数fun 用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。
void fun(int num,int a[ ])
{int i;
for (i=0;i<___________;i++)a[i]=a[i]*a[i]; /*第一空*/
}
void main()
{
int i,b[5]={1,2,3,4,5};
fun(5,_______); /*第二空*/
for (i=0;i<5;i++)printf(〞%5d〞,________); /*第三空*/
printf(〞\n〞);
}
2.从键盘输入x的值,根据以下公式计算并输出x和y 的值。

#include
#include
void main()
{float x,y;
scanf(〞%f〞,______); /*第一空*/
if(x<0)printf(〞input error!\n〞);
else
{switch ((int)(x/2))
{case 0:y=x;_______; /*第二空*/
case 1:
case 2:y=x*x+1;break;
case 3:
case 4:y=_____________;break; /*第三空*/
default :y=1/(x*x+1);
}
printf(〞x=%7.2f,y=%10.6f\n〞,x,y);
}
}
3.输入一个英文字符串(换行符作为结束),分别统计并输出其中元音字母(大小写不加区别)各自出现的次数。
元音字母:(a,A),(e,E),(i,I),(o,O),(u,U)
#include
main( )
{
int_________; /* 第一空 */
char c;
while(________!=′\n′)/* 第二空 */
switch(_______)/* 第三空 */
{
case′a′:
case′A′:a++; break;
case′e′:
case′E′:e++;break;
case′i′:
case′I′:i++;break;
case′o′:
case′O′:o++;break;
case′u′:
case′U′:u++;
}
printf(″(a,A)=%d,(e,E)=%d,(i,I)=%d,(o,O)=%d,(u,U)=%d\n″,a,e,i,o,u);
}
4.使用二

维数组形成一个五行的杨辉三角形并输出。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
#define N 5
void main( )
{ int m,n,a[N][N];
for(m=0;n< N; m++)
{
a[m][0]=a[m][m]=_________;/* 第一空 */
for(n=1;na[m][n]=a[m-1][n-1]+_______;/* 第二空 */
}
for(m=0;m{
for(n=0;n<=m;n++)printf(″%4d″,a[m][n]);
;/*第三空*/
}
}
5.将键盘输入的字符串(换行符为结束标志)写到名为abc.dat的文件中。(不做)
#include ″stdio.h″
main( )
{ _____________; /*第一空*/
char ch;
fp=fopen(″abc.dat″,″w″);
ch=getchar( );
while(_____________) / *第二空 */
{ fputc(ch,fp);
ch=getchar( );
}
_________________; / *第三空* /
}
6.将十个整数输入数组,求出其平均值并输出。
void main( )
{int i,a[10],sum=0,*p=______; /*第一空*/
for(i=0;i<10;i++)
{ scanf(″%d″,p);sum+=______; /*第二空*/
printf(″%8.2f\n″,______); /*第三空*/
}
7.输入一个无符号整数后求出它的各位数之和并输出。
例如若输入123,则将各位之和6(即1+2+3)输出。
______f(num) /*第一空*/
unsigned int num;
{ unsigned int k=0;
do
{ k+=______; /*第二空*/
num/=10;
} while(num);
______; /*第三空*/
}
void main( )
{unsigned int n;
scanf(″%d″,&n);
printf(″%u\n″,f(n));
}
8.为数组输入数据,逆序置换后输出。(逆序置换是指:数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,………)
# define N 8
void main( )
{ int i,j,t,a[N];
for(i=0;ii=0;j=N-1;
while(i{ t=*(a+i);________; /*第一空*/
______=t; /*第二空*/
i++;______; /*第三空*/
}
for(i=0;i}
五、编程题
分支结构
1. 当a≥0时,请将以下语句改写成switch语句。






2. 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日期(年:y1、月:m1、日:d1);输出该生的实足年龄。
3. 编写程序,输入一个整数,打印出它是奇数还是偶数。
4. 编写程序,输入a、b、c三个数,打印出最大者。
5. 有一个函数:
编写一程序,要求输入x的值,输出y的值。
分别用(1)不嵌套的if语句 (2)嵌套的if语句 (3)switch语句

循环结构
1. 输入一行字符,用Enter键结束,每个数字字符的前后都有空格。将这一行中的数字字符转换成一个整数。例如输入: 2 4 8 3 (代表Enter键)
则输出整数:2483
2. 编写程序统计输入的

行数,输入时用Enter键结束输入。
3. 编写程序统计输入的一行字符中有多少个小写字母。

数组、函数、指针
1. 利用函数判断一字符串是否是回文。若是回文,函数返回值为1;否则返回值为0。回文是指顺读和倒读都是相同的序列。
2. 利用函数删除字符串中指定位置上的字符。删除成功返回被删除的字符;否则返回空字符’\0’。
3. 输入一行数字字符,用数组作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,…。
4. 用函数对字符数组中所存放的若干个字母按从小到大的顺序进行排序。
5. 在函数中调用随机函数产生0到19之间的随机整数,在数组中存入15个互不相同的整数。要求在主函数中输出结果。调用随机函数的方法如下:
#include
……
x=rand( )%20; //产生0到19的随机整数
6. 调用随机函数为5*4的矩阵置100以内的两位正整数,输出该矩阵,求出每行元素之和,并把和值最大的那一行与第一行上的元素对调,再输出该矩阵。


相关文档
最新文档