C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(19页珍藏版)》请在冰豆网上搜索。
C语言复习题
一、单项选择题:
(10分,每题2分,评分标准:
正确得2分,错误扣2分)
1.下列对字符串的定义中,错误的是:
。
A)charstr[7]="FORTRAN";
B)charstr[]="FORTRAN";
C)char*str="FORTRAN";
D)charstr[]={'F','O','R','T','R','A','N',0};
2.针对下面程序段,下面哪些说法是正确的?
#include
voidSwap(int*x,int*y);
main()
{
inta,b;
a=5;
b=9;
Swap(&a,&b);
printf("a=%d,b=%d",a,b);
}
voidSwap(int*x,int*y)
{
int*pTemp;
*pTemp=*x;
*x=*y;
*y=*pTemp;
}
A)程序运行结果为乱码;
B)程序运行后将导致程序崩溃;
C)程序编译时出错导致程序无法运行;
D)程序执行了危险的操作;
3.要使下面程序的输出1,2,34,则从键盘输入的数据格式应为。
#include
main()
{
chara,b;
intc;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
A)1234B)1,2,34
C)’1’,’2’,34D)1234或1234
4.判断字符串s1与字符串s2相等,应当使用:
。
A)if(s1=s2)
B)if(strcmp(s1,s2))
C)if(!
strcmp(s1,s2))
D)if(strcmp(s1,s2)=0)
5.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A.j*n+iB.i*n+jC.i*n+j-1D.i*n+j+1
6、
#include
#include
main()
{
printf("%d\n",strlen("IBM\n012\t\"\\\0"));
}
则程序运行后的输出结果是。
A)10B)11C)16D)12
7.以下程序的正确输出结果为:
_______。
main()
{
inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
A)a=%2,b=%5B)a=2,b=5
C)a=%%d,b=%%dD)a=%d,b=%d
8.以下程序的正确输出结果为:
_______。
main()
{
inta=2,c=5;
printf("a=%%%d,b=%%%d\n",a,c);
}
A)a=%2,b=%5B)a=2,b=5
C)a=%%d,b=%%dD)a=%d,b=%d
9.以下程序的正确输出结果为:
_______。
main()
{
inta=2,c=5;
printf("a=%d%%,b=%d%%\n",a,c);
}
A)a=2%,b=5%B)a=2,b=5
C)a=d%%,b=d%%D)a=%d,b=%d
10.有如下程序片段:
inti=0;
while(i++<=2);
printf("%d",i);
则正确的执行结果是:
A)2B)3C)4D)程序陷入死循环
11.下面哪个定义是合法的。
A)chara[8]="language";
B)inta[5]={0,1,2,3,4,5};
C)char*a="string";
D)inta[2][]={0,1,2,3,4,5,6};
12.以下不能对二维数组a进行正确初始化的语句是
A)inta[2][3]={0};
B)inta[][3]={{1,2},{0}};
C)inta[2][3]={{1,2},{3,4},{5,6}};
D)inta[][3]={1,2,3,4,5,6};
13.有以下程序片断
floatfun(intx,inty)
{
return(x+y);
}
main(){
inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序运行后的输出结果是:
A)编译出错√B)9
C)21D)9.0
14.若有以下调用语句,则不正确的fun函数的函数原型是
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
A)voidfun(intm,intx[]);
B)voidfun(ints,inth[41]);
C)voidfun(intp,int*s);
D)voidfun(intn,inta);
15下列程序执行后的输出结果是
#include
main()
{
inta[3][3],*p,i;
p=&a[0][0];
for(i=1;i<9;i++)
{
p[i]=i+1;
}
printf("%d\n",a[1][2]);
}
A)3
B)6
C)9
D)随机数
16对于一个正常运行和正常退出的C程序,以下叙述正确的是。
A)程序从main函数第一条可执行语句开始执行,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在最后一个函数中结束
D)从程序的第一个函数开始,在程序的最后一个函数中结束
17对于以下程序片段,描述正确的是。
intx=-1;
do
{
x=x*x;
}while(!
x);
A)是死循环
B)循环执行两次
C)循环执行一次
D)有语法错误
二、写出下列程序的运行结果。
1.
main()
{
inti,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<3;j++)
{
if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序运行结果是:
2.
#include
main()
{
chara[]="Hello";
char*p=NULL;
for(p=a;p{
printf("%s\n",p);
}
}
程序运行结果是:
3.
#include
intfun(intx,inty)
{
returnx>y?
x:
y;
}
main()
{
inta=2,b=5,c=8;
printf("%d\n",fun(fun(a+c,b),a-c));
}
程序运行结果是:
4.
#include
voidFunc(void);
main()
{
inti;
for(i=0;i<5;i++)
{
Func();
}
}
voidFunc(void)
{
staticinta=1;
intb=2,c;
c=a+b;
a++;
b++;
printf("%d\n",c);
}
程序运行结果是:
5.
#include
main()
{
intk=4,n=0;
for(;n{
n++;
if(n%2==0)continue;
k--;
}
printf("k=%d,n=%d\n",k,n);
}
程序运行结果是:
6.
#include
main()
{
inta=5,b=4,x,y;
x=2*a++;
printf("a=%d,x=%d\n",a,x);
y=--b*2 ;
printf("b=%d,y=%d\n",b,y);
}
则程序运行结果是:
7.
#include
voidfun1(intx)
{
x=20;
}
voidfun2(intb[4])
{
intj;
for(j=0;j<4;j++)
{
b[j]=j;
}
}
main()
{
intx=10;
inta[4]={1,2,3,4},k;
fun1(x);
printf("x=%d\n",x);
fun2(a);
for(k=0;k<4;k++)
{
printf("%d\n",a[k]);
}
}
运行结果是:
8.
#include
voidFun(int*y)
{
printf("*y=%d\n",*y);
*y+=20;
printf("*y=%d\n",*y);
}
main()
{
intx=10;
printf("x=%d\n",x);
Fun(&x);
printf("x=%d\n",x);
}
程序运行结果是:
9.
#include
inta=13,b=8;
intmax(inta,intb)
{
intc;
c=a>b?
a:
b;
return(c);
}
main()
{
inta=5;
printf("Max=%d\n",max(a,b));
}
程序运行结果是:
10.
main()
{
inti,j,x=0;
for(i=0;i<2;i++)
{
X++;
for(j=0;j<3;j++)
{
if(j%2)continue;
X++;
}
X++;
}
printf("x=%d\n",x);
}
程序运行结果是:
11.
#include
main()
{
chars[100];
charc,i;
scanf("%c",&c);
scanf("%d",&i);
scanf("%s",s);
printf("%d,%c,%s\n",c,i,s);
}
已知字符’a’的ASCII码值为97,那么当程序输入:
a<空格>97<空格>123<回车>,程序运行结果是:
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
1.从键盘任意输入一个年号,判断它是否是闰年。
若是闰年,输出“Yes”,否则输出“No”。
已知符合下列条件之一者是闰年:
■能被4整除,但不能被100整除。
■能被400整除。
#include
main()
{
intyear,flag;
printf("Enteryear:
");
scanf("%d",&year);
if()
{
flag=1;
}
else
{
flag=0;
}
if()
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
2.编程判断m是否为素数。
#include
#include
intIsPrime(intm);
main()
{
intn,flag;
printf("Inputn:
");
scanf("%d",&n);
flag=IsPrime(n);
if()
{
printf("它是素数\n");
}
else
{
printf("它不是素数\n");
}
}
intIsPrime(intm)
{
inti,k;
if(m<=1)
{
return0;
}
for(i=2;;i++)
{
k=m%i;
if()
{
return0;
}
}
return;
}
3.输入一行字符,统计其中的英文字符、数字字符、空格及其它字符的个数。
#include
#include
#defineARR_SIZE80
main()
{
charstr[ARR_SIZE];
intlen,i,letter=0,digit=0,space=0,others=0;
gets(str);
for(i=0;str[i]!
='\0';i++)
{
if()
letter++;
elseif()
digit++;
elseif(')
space++;
else
others++;
}
printf("Englishcharacter:
%d\n",letter);
printf("digitcharacter:
%d\n",digit);
printf("space:
%d\n",space);
printf("othercharacter:
%d\n",others);
}
四、编程
评分原则:
若程序没有实现指定功能,不给分,若实现指定功能,每出现一处简单语法错误扣1分
1.规定一个工人工作时间每个月160小时,每小时工资为5元,如果加班的话,每小时增加4元,请编程计算并打印此工人一个月的工资,要求由键盘输入工作时间(14分)。
2.编程计算1!
+2!
+3!
+……+10!
的值。
(12分)
3.编程先输入某班30个学生某门课的成绩,对全班30个学生成绩进行由高到低排序,并打印输出排序结果,要求用函数编程实现排序功能。
(18分)
4.从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。
(18分)
5.编写程序输出3到10000内的可逆素数。
可逆素数是指:
一个素数将其各位数字的顺序倒过来构成的反序数也是素数。
如157和751均为素数,它们是可逆素数。
要求:
使用子函数实现,至少两个子函数。
其它自便。
(21分)
6.不用函数strcat(),编程实现字符串连接函数MyStrcat(char*dstStr,char*srcStr)将字符串srcStr连接到字符串dstStr的尾部,并编写主函数调用MyStrcat将用户输入的两个字符串相连接。
(14分)
7.从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和(忽略整数前的正负号)。
例如,输入x为1234,则由1234分离出其千位1、百位2、十位8、个位4,然后计算1+2+3+4=10,并输出10。
8.利用公式
=
×…前100项之积计算并打印值。
9.编程计算
的值,要求n由用户从键盘输入。
(14分)
10编程打印如下形式的杨辉三角形,打印的杨辉三角形的行数n(不超过10行)要求由用户从键盘输入。
要求按照如下函数原型进行编程,不能使用全局变量。
(14分)