C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(16页珍藏版)》请在冰豆网上搜索。
C语言复习题
一、填空共17题(共计60分)
第1题(2.0分)
运行以下程序时,输出结果是【1】
longfit(intn)
{if(n>2)return(fit(n-1)+fit(n-2));
elsereturn(3);}
main()
{printf("%ld\n",fit(4));}
第2题(2.0分)
以下程序运行后的输出结果是【1】.
#include
voidmain()
{charch[]="abc",x[3][4];inti;
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}
第3题(2.0分)
下列程序的输出结果是【1】
#include
main()
{charb[30];
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",b);
}
第4题(2.0分)
运行以下程序时,输出结果是【1】
#include
intb;
intfun(inta)
{staticintc=2;
return((++a)+(++b)+(++c));
}
voidmain()
{inti,a=1;
for(i=0;i<2;i++)
printf("%5d",fun(a));
}
第5题(2.0分)
在函数内部声明局部变量时缺省了存储类型,则该变量存储类型是【1】.
第6题(2.0分)
有以下定义和语句
structdate
{intday;
intmonth;
intyear;
union
{intshare1;
floatshare2;
}share;
}a;
则sizeof(a)的值是【1】.
第7题(2.0分)
以下程序的运行结果是【1】
main()
{inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
inti;
int(*p)[4]=a;
printf("a[2][3]=%d\n",i,j,*(*(p+i)+j));
}
第8题(2.0分)
以下程序的运行结果是【1】
voidswap(int**r,int**s)
{int*t;
t=*r;
*r=*s;
*s=t;
}
main()
{inta=1,b=2,*p,*q;
p=&a;
q=&b;
swap(&p,&q);
printf("%d,%d\n",*p,*q);
}
第9题(4.0分)
以下程序运行时,输出结果的第一行是【1】,第二行是【2】.
#include
voidf(int*x,inty)
{*x=y+1;y=*x+2;}
main()
{inta=2,b=2;
f(&a,b);
printf("%d\n%d",a,b);
}
第10题(4.0分)
设有以下main函数
main(intargc,char*argv[])
{while(argc>1)
{++argv;
printf("%s\n",*argv);
--argc;
}
}
经过编译、连接后得到可执行文件名为c1.exe,
若在系统的命令状态下输入命令行:
c1nanjingxiaozhuangcollege<回车>,
则在第一行输出【1】,第三行输出【2】.
第11题(4.0分)
请填空以使程序完整。
有一个m*n的矩阵,以下程序的功能是求出其中值最大的元素的值,以及相应得行号和列号。
#defineM4
#defineN3
main()
{
inti,j,row=0,colum=0,max;
inta[M][N]={{1,23,3},{4,8,6},{17,6,1},{0,11,17}};
【1】;
for(i=0;i<=3;i++)
for(j=0;j<=2;j++)
if(【2】)
{
max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row%d,colum=%d\n",max,row,colum);
}
第12题(4.0分)
以下程序的功能是:
将无符号八进制数字构成的字符串转换为十进制整数.例如,输入的字
符串为:
556,则输出十进制整数366.请填空.
#include
main()
{chars[6];
intn,i=0;
gets(s);
n=【1】-'0';
while(【2】!
='\0')n=n*8+s[i]-'0';
printf("%d\n",n);
}
第13题(6.0分)
该程序功能是:
将有10个元素的整型数组a中下标值为偶数的元素从大到小排列,其他元素不变。
请填空以使程序完整。
#definek10
main()
{
inta[k]={1,2,5,7,9,3,4,6,8,10},t;
inti,j;
for(i=0;iprintf("%5d",a[i]);
for(i=0;i<=【1】;i=i+2)
for(j=i+2;jif(【2】)
{t=a[i];【3】;a[j]=t;}
for(i=0;iprintf("%5d",a[i]);
printf("\n");
}
第14题(6.0分)
请填空以使程序完整。
该程序的功能是把从键盘输入的十进制(long型)以16进制数的形式输出。
#include
main()
{
charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
intc[64],d,i=0;
longn;
printf("Enteranumber:
\n");scanf("%ld",&n);
do
{
c[i]=【1】;
i++;
n=【2】;
}while(n!
=0);
printf("Transmitemewbase:
\n");
for(--i;i>=0;--i)
{
【3】;
printf("%c",b[d]);
}
}
第15题(6.0分)
阅读以下程序
main()
{char*str[3]={"Fortrain","Prolog","Pascal"};
char**p;
inti;
p=str;
for(i=0;i<3;i++,p++)
printf("%c\n",(*(*p+3)+1));
}
该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】.
第16题(6.0分)
以下程序使用递归方法求数组中的最大值及其下标值,请填空:
#defineM10
voidfindmax(int*a,intn,inti,int*pk)
{if(i{if(a[i]>a[*pk])【1】;
findmax(a,n,i+1,【2】);
}
}
main()
{inta[M],i,n=0;
printf("\nEnter%ddata:
\n",M);
for(i=0;iscanf("%d",【3】);
findmax(a,M,0,&n);
printf("Themaximumis:
%d\n",a[n]);
printf("it'sindexis:
%d\n",n);
}
第17题(4.0分)
阅读以下程序
main()
{char*str[3]={"Basic","VisualC++","Pascal"};
char**p;
inti;
p=str;
for(i=0;i<3;i++,p++)
printf("%c\n",(*(*p+3)+1));
}
该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】.
二、单项选择共20题(共计40分)
第1题(2.0分)
以下合法的赋值语句是().
A:
x=y=100
B:
d--;
C:
x+y
D:
c=int(a+b);
第2题(2.0分)
已知字符A的ASCII码为65,则执行下列函数调用语句时,不能输出字符B的是().
A:
putchar('B');
B:
putchar("B");
C:
putchar(66);
D:
putchar('\x42');
第3题(2.0分)
若以下选项中的变量已正确定义,则正确的赋值语句是().
A:
x1=86.8%3
B:
1+9=x2
C:
x3=0x1f
D:
x4=1+6=7
第4题(2.0分)
若有声明"intx=2,y=1,z=0;",则下列关系表达式中有语法错误的是________.
A:
x>y=2
B:
z>y>x
C:
x>y==1
D:
x==(x=0,y=1,z=2)
第5题(2.0分)
有声明intx=2;,以下表达式中值不等于8的是________.
A:
x+=2,x*2
B:
x+=x*=x
C:
(x+7)/2*((x+1)%2+1)
D:
x*7.2/x+1
第6题(2.0分)
若有数组A和B的声明"staticcharA[]="ABCDEF",B[]={'A','B','C','D','E','F'};"
则数组A和数组B的长度分别是________.
A:
7,6
B:
6,7
C:
6,6
D:
7,7
第7题(2.0分)
以下程序运行后的输出结果是________.
main()
{chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
}
A:
22
B:
72
C:
75
D:
62
第8题(2.0分)
以下不正确的说法为()
A:
在函数内的复合语句中定义的变量在本函数范围内有效
B:
在不同函数中可以使用相同名字的变量
C:
在函数内定义的变量只在本函数范围内有效
D:
形式参数是局部变量
第9题(2.0分)
以下程序运行结果()
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;}
main()
{printf("%d\n",fun(3));
}
A:
2
B:
1
C:
0
D:
10
第10题(2.0分)
下面程序运行后的输出结果是______.
main()
{chararr[2][4];
strcpy(arr[0],"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr[0]);
}
A:
you&me
B:
you
C:
me
D:
err
第11题(2.0分)
以下叙述正确的是().
A:
一个用C语言编写的程序在运行时总是从main函数开始逐条执行
B:
main函数是系统库函数
C:
main函数中每行只能出现一条语句
D:
main函数必须出现在所用其它函数之前
第12题(2.0分)
语句printf("%d",(a=2)&&(b=-2));的输出结果是()
A:
无输出
B:
结果不确定
C:
-1
D:
1
第13题(2.0分)
若有函数fun的定义为
voidfun(…)
{staticinta=1;
……
}
则下列叙述中不正确的是().
A:
在每次调用fun函数时,变量a的值是上次调用结束时a的值
B:
在fun函数之外,可以用变量名a直接引用a的值
C:
在其它函数中,可以出现声明doublea=2.5;
D:
fun函数的形式参数不能取名为a
第14题(2.0分)
以下程序输出结果是()
#include
voidmain()
{
inti,a[10];
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d%d%d",a[2],a[4],a[8]);
}
A:
852
B:
741
C:
862
D:
369
第15题(2.0分)
以下程序的输出结果是().
main()
{
inti;
for(i='A';i<=T;i++)printf("%c",i+32);
printf("\n");
}
A:
编译不通过,无输出
B:
ABCDEFGH
C:
abcdefghi
D:
abcdefgh
第16题(2.0分)
以下关于if语句,描述错误的是().
A:
条件表达式可以是任意的表达式
B:
条件表达式只能是关系表达式或逻辑表达式
C:
条件表达式的括号不可以省略
D:
与else配对的if语句是其之前最近的未配对的if语句
第17题(2.0分)
以下程序段循环执行的次数是().
intk=0;
while(k=1)k++;
while
A:
无限次
B:
有语法错,不能执行
C:
一次也不执行
D:
执行1次
第18题(2.0分)
以下正确的叙述是()
A:
在C程序中,语句之间必须要用分号";"分隔
B:
若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型
C:
在C程序中,无论是整数还是实数,都能准确无误地表示
D:
在C程序中,%是只能用于整数运算的运算符
第19题(2.0分)
若有以下定义,则对a数组元素的正确引用是()
inta[5],*p=a;
A:
p+5
B:
*(a+2)
C:
a+2
D:
&a+1
第20题(2.0分)
以下程序执行后的输出结果是().
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf("%d\n",s);
}
A:
自然数1~9的累加和
B:
自然数1~10的累加和
C:
自然数1~9中的奇数之和
D:
自然数1~10中的偶数之和