C语言复习基础专题.docx
《C语言复习基础专题.docx》由会员分享,可在线阅读,更多相关《C语言复习基础专题.docx(18页珍藏版)》请在冰豆网上搜索。
C语言复习基础专题
“C语言程序设计”期末考试复习
(一)选择题:
1.下列四组选项中,均是不合法的用户标识符的选项是( C )。
A)GS_4intB)double2a0_V
C)!
A3a#bdoD)b-aabcSwep
2.下列四组选项中,属于合法的用户标识符的选项是( D)。
A)forB)-XYZC)5iD)For
3.不合法的C语言整型常量是(B)。
A)0xe2LB)2e3C)18LD)0xe3
4.不合法的C语言实型常量是( A)。
A)-123E-3.0B)-.123C)-1.23E-1D)-0.123
5.设chara;intb;floatc;doubled;则表达式d/b+c*a值的数据类型为(C)。
A)charB)intC)doubleD)float
6.设有说明:
chara;intb;floatc;doubled;则表达式(int)(d)/b+c*a值的数据类型为( D)。
A)charB)intC)floatD)double
7.定义三个变量x、y、z,并分别赋初值为0,能实现该功能的语句是( B )。
A)intx=0;y=0;z=0;B)intx=0,y=0,z=0;C)intx,y,z=0;D)intx=y=z=0;
8.定义三个变量a,b,c,并都初始化为‘a’。
能实现该功能的语句是( B )。
A)chara=‘a’;b=‘a’;c=‘a’;B)chara=‘a’,b=‘a’,c=‘a’;
C)chara,b,c=‘a’;D)chara=b=c=‘a’;
9.设以下变量均为int类型,则值不等于8的表达式是( D )。
A)(y=7,y+1,x=y,x+1)B)(x=7,x+1,y=x++,y+1)
C)(x=y=7,++x,y+1)D)(x=y=7,++x,x+1)
10.下列for循环的循环次数是( D )。
inti=0,j;
for(j=3;i=j=7;i++,j++)printf(”hello”);
A)1次 B)5次C)10次 D)无限次
11.下列for循环的循环次数是( A )。
inti=0,j;
for(j=3;i=j=0;i++,j++)printf(”hello”);
A)0次 B)5次C)1次 D)无限次
12.表达式2<5&&6<9的值是( B )。
A)0B)1C)2D)3
13.下列for循环的循环次数是( C)。
inti,j;
for(i=j=0;!
i||j<=5;j++)i++;
A)1次 B)5次C)6次 D)无限次
14.下列while循环的循环次数是( D )。
inta=1,b=2;
while(a++
A)0次 B)1次C)5次 D)无限次
15.下面程序段的运行结果是( B )。
intn=0;
while(n++<=2);
printf("%d",n);
A)3 B)4C)012 D)123
16.下面程序段的运行结果是( D )。
intn=0;
while(n++<=2)printf("%d",n);
A)3B)4C)012D)123
17.若inta=5;则执行下列语句后打印的结果为( D )。
do{printf(“%2d\n”,++a);}while(a);
A)6 B)5
C)不打印任何结果 D)陷入死循环
18.若inta=5;则执行下列语句后打印的结果为( C )。
while(!
a)
{printf(“%2d\n”,++a);}
A)5 B)9 C)不打印任何结果 D)陷入死循环
19.已知:
inti=5;计算表达式–i++的值是( C )。
A.-3 B.-2 C.-5 D.非法
20.以下程序的输出结果是(C)
main()
{ int a=2,b=1,c=3,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A)2 B)1 C)3 D)不确定
21.有一个函数原型为:
test(floatx,inty);则该函数的返回值类型为( D )。
A)void B)doubleC)floatD)int
22. 有以下程序:
#include
main()
{char c;
while((c=getchar())!
='?
') putchar(c++);
}
程序运行时,如果从键盘输入:
Y?
N?
<回车>,则输出结果为(A)。
A)YB)ZC)XD)YN
23.有以下程序:
#include
main()
{char c;
while((c=getchar())!
='\n') putchar(--c);
} 程序运行时,如果从键盘输入:
BC<回车>,则输出结果为( B )。
A)BCB)ABC)BD)C
24.有两个字符数组x、y,则以下正确的输入语句是( B )。
A)scanf("%s%s",&x,&y);B)scanf("%s%s",x,y);
C)gets(x,y);D)gets(&x),gets(&y);
25.有个字符数组a,则以下正确的输入语句是( A ).
A)gets(a);B)scanf("%s","a");C)scanf("%s",&a);D)gets("a");
26.以下函数调用语句中实参的个数是( A )。
fun((v1,v2),(v3,v4,v5),v6);
A)3B)4C)5D)6
27.若有以下定义
inta[]={1,2,3,4,5,6,7};
charc1=’b’,c2=’2’;
则数值为4的表达式是___D___。
A)c2+2B)a[2]+2C)‘F’-c1D)a[‘5’-c2]
28.说明语句如下:
inta[10]={1,2,3,4,5,6,7,8,9},*p=a;则数值为6的表达式是( D )。
A.*p+6 B.*(p+6) C.p+5 D.*p+=5
29.以下程序的输出结果是( C )
main()
{intx[5]={10,20,30,40,50},*p;
p=x;
*p++;
printf(“%d”,*p);
}
A.10 B.11 C.20 D.21
30.定义一个结构体型变量时,分配给它的内存字节数是( C )。
A.结构体型变量的成员中,占用字节数最多的成员占用的字节数
B.结构体型变量的成员中,占用字节数最少的成员占用的字节数
C.结构体型变量的成员中,所有成员占用的字节数总和
D.结构体型变量的成员中,所有成员占用的字节数总和加1
31.根据以下定义,能输出字符‘A’的语句是( A )。
structperson
{charname[9];
intage;
}class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16};
A)printf(“%c”,class[3].name[0]);B)printf(“%c”,class[2].name[4]);
C)printf(“%c”,class[3].name[3]);D)printf(“%c”,class[3].name[1]);
32.根据以下定义,输出字符不为‘a’的语句是( C )。
structperson
{charname[9];
intage;
}class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16};
A)printf(“%c”,class[1].name[1]);B)printf(“%c”,class[2].name[1]);
C)printf(“%c”,class[3].name[0]);D)printf(“%c”,class[3].name[2]);
33.下面程序的运行结果是( D )。
main()
{structcmplx
{intx;
inty;
}cnum[2]={1,2,3,4};
printf("%d\n",cnum[1].y/cnum[0].x*cnum[0].y);}
A)1B)4C)6D)8
34.下面程序的运行结果是( D)。
main()
{structcmplx
{inta ;
intb ;
}cnum[3]={1,2,3,4,5,6};
printf("%d\n",cnum[1].a/cnum[0].b*cnum[0].a);
}
A)4B)3C)2D)1
35.若要将“program.txt”文件打开用于追加信息,则以下格式正确的是( B )。
A)fp=fopen(“program.txt”,“r”);B)fp=fopen(“program.txt”,“a+”);
C)fp=fopen(“program.txt”,“r+”);D)fp=fopen(“program.txt”,“w”);
36.要使用fopen函数打开一个新的只写的二进制文件,文件的打开方式应是( B )。
A)“w”B)“wb”C)“w+“D)“wb+”
37.下列关于C语言中对文件的操作的传述中,正确的是( A )。
A.对文件进行操作必须先打开文件 B.对文件进行操作必须先闭文件
C.对文件进行操作时没有顺序的要求D.对文件操作前须先测试文件是否存在
38.要使用fopen函数打开一个新的可读可写的文本文件,文件的打开方式应是( C )。
A)“a+”B)“r+”C)“w+“D)“wb+”
39.若要将“text.txt”文件打开用于追加信息,则以下格式正确的是( B )。
A.fp=fopen(“text.txt”,“r”);B.fp=fopen(“text.txt”,“a+”);
C.fp=fopen(“text.txt”,“r+”);D.fp=fopen(“text.txt”,“w”);
40.若要打开a盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( B)。
A.fopen(“a:
\user\abc.txt”,“r”)B.fopen(“a:
\user\abc.txt”,“r+”)
C.fopen(“a:
\user\abc.txt”,“rb”)D.fopen(“a:
\user\abc.txt”,“w”)
41.执行函数fopen(“abc.txt”,“w+”)的含义是(C)。
A.以读的方式打开一个文件B.以写的方式打开一个文件
C.创立一个既可读又可写的文件D.创立一个只可写的文件
42.要使用fopen函数打开一个新的只写的二进制文件,文件的打开方式应是(B)。
A)“w”B)“wb”C)“w+“D)“wb+”
(二)填空题:
(1)
将算术表达式写成C表达式为:
_(3*x-2*y)/(x*x-y)______。
(2)表达式(1/2)*3.0的值为:
____0.0____。
(3)
2x+1
x2+4y
将算术表达式写成C表达式为:
___(x*x+4*y)/(2*x+1)__。
(4)若有intx=10,y=20;则运行
printf(“%d,%d”,++x,y++);结果为:
______11,20_______。
(5)若有定义inta[4][5]={{1,0,1,0},{2,1,2,1,0},{5}},则初始化后,a[1][3]的值是__1__,a[3][1+]的值是__0___。
(6)表达式(1/2)*1.5的值为:
____0.0________。
(7)将表达式a≤b≤c写成C表达式为:
_____a<=b&&b<=c_____。
(8)以下程序的功能是判断一个大于1的整数是否为素数,是则输出‘Y’,否则输出‘N’,请填空。
main()
{inti,n;
scanf(“%d”,&n);
for(i=2;iif(n%i==0_)break;
if(__i>=n__)printf(“Y”);
_else____printf(“N”);}
(9)以下程序的运行结果是___3______。
main()
{inta[]={1,2,3,4,5};
charc=’a’;
printf(“%d”,a[‘c’-c]);}
(10)以下程序的功能是输入一个字符串,输出字符串的长度,请填空。
#include
main()
{charstr[20];
gets(__str_);
printf(“%d”,___strlen(str)_____);
getch();}
(11)以下函数的功能是判断一个大于1的整数是否为素数,是则返回‘Y’,否则返回‘N’,请填空。
__char_sushu(intx)
{inti;
for(i=2;iif(_x%i=0_)return‘N’;
return‘Y’;}
(12)若有定义:
inta[]={2,4,6,8,10,12},*p=&a[1];
则*(++p)的值是__6___。
(三)程序阅读题:
(写出程序运行结果)
1.下面程序的输出结果是45。
#include
main()
{intx;
x=(x=4*5,x+5,x+25);
printf(“x=%d\n”,x) ;}
2.下面程序的输出结果是1,2.40。
#include
main()
{floaty;intx;
x=1.2;
y=(x+3.8)/2;
printf(“x=%d,y=%.2f\n”,x,y) ;}
3.下面程序输出结果是31。
main()
{intx=10,y=20,z=30;
if(xif(y<0)z=0;
elsez+=1;
printf(“%d\n”,z);}
4.下面程序运行结果是x=7。
#include
main()
{intx=5;
if(x++>5)printf(“x=%d\n”,x);
elseprintf(“x=%d\n”,++x);}
5.下面程序的输出结果是2。
#include
main()
{int x=10203,z=0,y;
while(x)
{y=x%10;
if(y==0)z++;
x=x/10;}
printf("%d",z);}
6.下面程序的运行结果是27。
#include
main()
{inti,sum;
sum=0;
for(i=1;i<=9;i++)
{if(i%3==0)continue;
sum=sum+i;}
printf("sum=%d",sum);}
7.下面程序的运行结果是852。
#include
main()
{inty;
for(y=10;y>0;y--)
if(y%3==0)printf("%d",--y);}
8.下面程序的运行结果是7,3
#include
main()
{inta[10]={0,2,-13,21,11,67,-78,8,90,-53};
inti,count1=0,count2=0;
for(i=0;i<10;i++)
if(a[i]>=0)count1++;
elsecount2++;
printf(“%d,%d\n”,count1,count2);}
9.下面程序输入123456789,
运行结果是Thesumis15
#include
main()
{inta[3][3],sum=0;
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf(“%d”,&a[i][j]);
for(i=0;i<3;i++)
sum+=a[i][i];
printf(“Thesumis%d\n”,sum);}
10、下面程序运行结果是2610
#include
main()
{inta[3][3]={1,2,3,4,5,6,7,8,9},b[3]={0},i,j;
for(i=0;i<3;i++)
b[i]=a[i][0]+a[0][i];
for(i=0;i<3;i++)
printf(“%5d”,b[i]);}
11.下面程序运行时,输入AbCdEf,阅读程序写出输出结果为:
abcdef
#include
#include
#defineN100
main()
{chars[N];inti;
printf(“enteraarray:
”);
gets(s);
for(i=0;iif(s[i]>=’A’&&s[i]<=’Z’)s[i]+=32;
puts(s);}
12.阅读下面程序,当输入12345时,写出输出结果K=55
#include
main()
{longn,k=0;
printf("Pleaseenteranumber:
");
scanf("%ld",&n);
for(;n!
=0;)
{k+=(n%10)*(n%10);
n/=10;}
printf("k=%d",k);}
13.阅读程序写出执行结果为:
x=20,y=10
a=10,b=20
voidswap(intx,inty)
{intz;
z=x;x=y;y=z;
printf("x=%d,y=%d\n",x,y);
}
main()
{inta=10,b=20;
swap(a,b);
printf("a=%d,b=%d\n",a,b);}
(四)程序填空题:
1、补写下面程序:
使其实现将输出的字符串,向前移一位存放,最后一个元素存放原来的第一个元素。
如输入:
abcd123,后移一位的结果是bcd123a。
#include
#include
voidfun(char*str)
{chartemp;intn,i;
n=strlen(str);
temp=str[0]]
for(i=0;istr[n-1]=temp}
main()
{chars[50];
puts(“Enterastring:
”);
gets(s);
fun(s);
puts(“Thechangedstring:
”);
puts(s);}
2、以下程序的功能是:
输入两个数,调用函数使其值互换。
voidswap(int*Px,int*Py)
{intt ;
t=*px;*px=*py;*py=t;}
main()
{inta,b;
scanf(“%d,%d”,&a,&b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);}
3、在歌手大奖赛中,假设有10个评委,每个评委百分制评分,最后要去掉一个最高分求平均得出每个选手的最后得分,请编写程序按此规则求出1名选手的最后得分。
#defineN10
main()
{ints[N],i,score=0,max;
printf("PleaseInput%dscores:
\n",N);
for(i=0;iscanf("%d",&s[i]);
max=s[0];
for(i=0;i{score+=s[i];
if(max
max=s[i];
}
printf("TheScore:
%.2f\n",(float)(scores–max)/(N-1));}
4、以下程序的功能是:
找到person所指结构体数组中年龄最大的人。
#include
#defineN3
main()
{structperson
{charname[10];
charsex;
intage;
}ss[N]={{"ZhangSan",'F',22},{"LiSi",'M',20},{"WangWu",'F',18}};
inti,m=0;
for(i=1;iif(ss[].age>ss[].age)m=i;
printf("%sistheoldest,andis%dyearsofage.",ss[m].name,ss[m].age);}
(五)编程题:
1、输入底面半径r和高度h,计算并输出圆柱体的体积v。
v=πr2h(π取3.14,v计算结果保留到小数点后两位)
main()
{
floatr,h,v;
scanf("%f%f",&r,&h);
v=3.14*r*r*h;
printf("v=%.2f",v);
getch();
}
2、编程:
输入华氏温度F,输出摄氏温度C和绝对温度K。
(计算结果保留到小数点后两位.转换公式:
C=5