C语言程序设计期末考试复习提纲.docx
《C语言程序设计期末考试复习提纲.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试复习提纲.docx(15页珍藏版)》请在冰豆网上搜索。
![C语言程序设计期末考试复习提纲.docx](https://file1.bdocx.com/fileroot1/2023-1/8/e94e6819-46f7-4294-8971-734a692231dd/e94e6819-46f7-4294-8971-734a692231dd1.gif)
C语言程序设计期末考试复习提纲
2010-2011年度第二学期
“C语言程序设计”期末考试复习提纲
一、题型及知识点分配
选择题15
填空题5
程序填空2
程序阅读4
编程3
知识点小计
2分/题
2分/题
1.5分/空
4分/题
数据类型
4
1
1
1(10)
24
结构程序
4
2
2
1(10)
30
数组
2
1
4
1
1(12)
28
函数
1
1
4
指针
2
4
结构体
1
4
8
文件
1
2
题型小计
30
10
12
16
32
二、题例:
(一)选择题:
1.下列四组选项中,均是不合法的用户标识符的选项是( )。
A)GS_4intB)double2a0_V
C)!
A3a#bdoD)b-aabcSwep
2.下列四组选项中,属于合法的用户标识符的选项是( )。
A)forB)-XYZC)5iD)For
3.不合法的C语言整型常量是( )。
A)0xe2LB)2e3C)18LD)0xe3
4.不合法的C语言实型常量是( )。
A)-123E-3.0B)-.123C)-1.23E-1D)-0.123
5.设chara;intb;floatc;doubled;则表达式d/b+c*a值的数据类型为( )。
A)charB)intC)doubleD)float
6.设有说明:
chara;intb;floatc;doubled;则表达式(int)(d)/b+c*a值的数据类型为( )。
A)charB)intC)floatD)double
7.定义三个变量x、y、z,并分别赋初值为0,能实现该功能的语句是( )。
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’。
能实现该功能的语句是( )。
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的表达式是( )。
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循环的循环次数是( )。
inti=0,j;
for(j=3;i=j=7;i++,j++)printf(”hello”);
A)1次 B)5次C)10次 D)无限次
11.下列for循环的循环次数是( )。
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的值是( )。
A)0B)1C)2D)3
13.下列for循环的循环次数是( )。
inti,j;
for(i=j=0;!
i||j<=5;j++)i++;
A)1次 B)5次C)6次 D)无限次
14.下列while循环的循环次数是( )。
inta=1,b=2;
while(a++
A)0次 B)1次C)5次 D)无限次
15.下面程序段的运行结果是( )。
intn=0;
while(n++<=2);
printf("%d",n);
A)3 B)4C)012 D)123
16.下面程序段的运行结果是( )。
intn=0;
while(n++<=2)printf("%d",n);
A)3B)4C)012D)123
17.若inta=5;则执行下列语句后打印的结果为( )。
do
{printf(“%2d\n”,++a);}while(a);
A)6 B)5
C)不打印任何结果 D)陷入死循环
18.若inta=5;则执行下列语句后打印的结果为( )。
while(!
a)
{printf(“%2d\n”,++a);}
A)5 B)9 C)不打印任何结果 D)陷入死循环
19.已知:
inti=5;计算表达式–i++的值是( )。
A.-3 B.-2 C.-5 D.非法
20.以下程序的输出结果是()
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);则该函数的返回值类型为( )。
A)void B)doubleC)floatD)int
22. 有以下程序:
#include
main()
{char c;
while((c=getchar())!
='?
') putchar(c++);
}
程序运行时,如果从键盘输入:
Y?
N?
<回车>,则输出结果为()。
A)YB)ZC)XD)YN
23.有以下程序:
#include
main()
{char c;
while((c=getchar())!
='\n') putchar(--c);
} 程序运行时,如果从键盘输入:
BC<回车>,则输出结果为( )。
A)BCB)ABC)BD)C
24.有两个字符数组x、y,则以下正确的输入语句是( )。
A)scanf("%s%s",&x,&y);B)scanf("%s%s",x,y);
C)gets(x,y);D)gets(&x),gets(&y);
25.有个字符数组a,则以下正确的输入语句是( ).
A)gets(a);B)scanf("%s","a");C)scanf("%s",&a);D)gets("a");
26.以下函数调用语句中实参的个数是( )。
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的表达式是__________。
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的表达式是( )。
A.*p+6 B.*(p+6) C.p+5 D.*p+=5
29.以下程序的输出结果是( )
main()
{intx[5]={10,20,30,40,50},*p;
p=x;
*p++;
printf(“%d”,*p);
}
A.10 B.11 C.20 D.21
30.定义一个结构体型变量时,分配给它的内存字节数是( )。
A.结构体型变量的成员中,占用字节数最多的成员占用的字节数
B.结构体型变量的成员中,占用字节数最少的成员占用的字节数
C.结构体型变量的成员中,所有成员占用的字节数总和
D.结构体型变量的成员中,所有成员占用的字节数总和加1
31.根据以下定义,能输出字符‘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’的语句是( )。
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.下面程序的运行结果是( )。
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.下面程序的运行结果是( )。
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”文件打开用于追加信息,则以下格式正确的是( )。
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函数打开一个新的只写的二进制文件,文件的打开方式应是( )。
A)“w”B)“wb”C)“w+“D)“wb+”
37.下列关于C语言中对文件的操作的传述中,正确的是( )。
A.对文件进行操作必须先打开文件 B.对文件进行操作必须先闭文件
C.对文件进行操作时没有顺序的要求D.对文件操作前须先测试文件是否存在
38.要使用fopen函数打开一个新的可读可写的文本文件,文件的打开方式应是( )。
A)“a+”B)“r+”C)“w+“D)“wb+”
39.若要将“text.txt”文件打开用于追加信息,则以下格式正确的是( )。
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的文本文件进行读、写操作,下面符合此要求的函数调用是( )。
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+”)的含义是()。
A.以读的方式打开一个文件B.以写的方式打开一个文件
C.创立一个既可读又可写的文件D.创立一个只可写的文件
42.要使用fopen函数打开一个新的只写的二进制文件,文件的打开方式应是()。
A)“w”B)“wb”C)“w+“D)“wb+”
(二)填空题:
(1)
将算术表达式写成C表达式为:
_______。
(2)表达式(1/2)*3.0的值为:
________。
(3)
2x+1
x2+4y
将算术表达式写成C表达式为:
_____。
(4)若有intx=10,y=20;则运行
printf(“%d,%d”,++x,y++);结果为:
_____________。
(5)若有定义inta[4][5]={{1,0,1,0},{2,1,2,1,0},{5}},则初始化后,a[1][3]的值是____,a[3][1]的值是_____。
(6)表达式(1/2)*1.5的值为:
____________。
(7)将表达式a≤b≤c写成C表达式为:
__________。
(8)以下程序的功能是判断一个大于1的整数是否为素数,是则输出‘Y’,否则输出‘N’,请填空。
main()
{inti,n;
scanf(“%d”,&n);
for(i=2;iif(_)break;
if(____)printf(“Y”);
_____printf(“N”);}
(9)以下程序的运行结果是_________。
main()
{inta[]={1,2,3,4,5};
charc=’a’;
printf(“%d”,a[‘c’-c]);}
(10)以下程序的功能是输入一个字符串,输出字符串的长度,请填空。
#include
main()
{charstr[20];
gets(___);
printf(“%d”,________);
getch();}
(11)以下函数的功能是判断一个大于1的整数是否为素数,是则返回‘Y’,否则返回‘N’,请填空。
___sushu(intx)
{inti;
for(i=2;iif(__)return‘N’;
return‘Y’;}
(12)若有定义:
inta[]={2,4,6,8,10,12},*p=&a[1];
则*(++p)的值是_____。
(三)程序阅读题:
(写出程序运行结果)
1.下面程序的输出结果是。
#include
main()
{intx;
x=(x=4*5,x+5,x+25);
printf(“x=%d\n”,x) ;}
2.下面程序的输出结果是。
#include
main()
{floaty;intx;
x=1.2;
y=(x+3.8)/2;
printf(“x=%d,y=%.2f\n”,x,y) ;}
3.下面程序输出结果是。
main()
{intx=10,y=20,z=30;
if(xif(y<0)z=0;
elsez+=1;
printf(“%d\n”,z);}
4.下面程序运行结果是。
#include
main()
{intx=5;
if(x++>5)printf(“x=%d\n”,x);
elseprintf(“x=%d\n”,++x);}
5.下面程序的输出结果是。
#include
main()
{int x=10203,z=0,y;
while(x)
{y=x%10;
if(y==0)z++;
x=x/10;}
printf("%d",z);}
6.下面程序的运行结果是。
#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.下面程序的运行结果是。
#include
main()
{inty;
for(y=10;y>0;y--)
if(y%3==0)printf("%d",--y);}
8.下面程序的运行结果是
#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,
运行结果是
#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、下面程序运行结果是
#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,阅读程序写出输出结果为:
#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时,写出输出结果
#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.阅读程序写出执行结果为:
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);
for(i=0;;i++);
}
main()
{chars[50];
puts(“Enterastring:
”);
fun(s);
puts(“Thechangedstring:
”);
}
2、以下程序的功能是:
输入两个数,调用函数使其值互换。
voidswap()
{
t=*px;*px=*py;*py=t;}
main()
{inta,b;
scanf(“%d,%d”,&a,&b);
swap();
printf("a=%d,b=%d\n",a,b);}
3、在歌手大奖赛中,假设有10个评委,每个评委百分制评分,最后要去掉一个最高分求平均得出每个选手的最后得分,请编写程序按此规则求出1名选手的最后得分。
#
main()
{ints[N],i,score=0,max;
printf("PleaseInput%dscores:
\n",);
for(i=0;iscanf("%d",&s[i]);
;
for(;i{score+=s[i];
if()
max=s[i];
}
printf("TheScore:
%.2f\n",);}
4、以下程序的功能是:
找到person所指结构体数组中年龄最大的人。
#include
#
main()
{structperson
{charname[10];
charsex;
intage;
}ss[N]={{"ZhangSan",'F',22},{"LiSi",'M',20},{"WangWu",'F',18}};
inti,;
for(i=1;iif()m=i;
printf("%sistheoldest,andis%dyearsofage.",,);}
(五)编程题:
1、输入底面半径r和高度h,计算并输出圆柱体的体积v。
v=πr2h(π取3.14,v计算结果保留到小数点后两位)
2、编程:
输入华氏温度F,输出摄氏温度C和绝对温度K。
(计算结果保留到小数点后两位.转换公式:
C=5/9*(F-32);K=C+273.15)
3、编程:
使之能正确地计算SUM。
计算公式如下:
SUM=1+1/2+1/3+1/4+……+1/n
4、编程:
如果05、求和:
从1加到100
6、从键盘输入一扇形的半径和角度,求扇形的面积和周长。
7、输入一个字符串,将其中的大写字符转换成小写,其它的不做转换,然后输出得到的字符串。
8、输入9个整数,按每行3个数输出这些整数,最后输出这9个整数的平均值。
9、从键盘输入10个整数,存入数组a,从数组a的第二个元素起,分别将后项减前项之差存入数组b,按每行3个元素