浙工大C语言复习题与参考答案.docx
《浙工大C语言复习题与参考答案.docx》由会员分享,可在线阅读,更多相关《浙工大C语言复习题与参考答案.docx(39页珍藏版)》请在冰豆网上搜索。
浙工大C语言复习题与参考答案
C程序设计复习题集
-、C语言程序设计复习题
1.单项选择题41
2•填空题45
3.写输出结果题46
4.程序填空题53
5•编程题61
三、C语言程序设计复习题答案
1单项选择题62
2•填空题63
3写输出结果题63
4程序填空题64
5.编程题(参考)65
C语言程序设计复习题
1单项选择题
在每小题的四个备选答案中选出一个正确的,并将正确答案号码填在题后括号内。
1.用C语言编写的源文件经过编译,若没有产生编译错误,则系统将()。
A、生成可执行目标文件B、生成目标文件
C、输出运行结果D、自动保存源文件
2.在C集成环境执行菜单命令“运行”,若运行结束且没有系统提示信息,说明()。
A、源程序有语法错误B、源程序正确无误
C、源程序有运行错误D、源程序无编译、运行错误,但仅此无法确定其正确性
3.程序运行输出了错误的结果,可以排除下列哪一个因素()。
A、算法错误B、运行时输入数据错误C、未通过编译D、系统资源配置不当
4.下列各个错误中,属于编译错误的是()。
A、数组下标超界B、“==”误写为“!
=”C、死循环D、括号不配对
5.若int类型数据字长为4,其最大值为()。
A、231B、231-1C、232-1D、232
6.
常数的书写格式决定了常数的类型和值,03322是()。
13.逻辑运算符中,运算优先级按从高到低依次为()。
A、&&,!
B、||,&&!
C、&&||,!
D、!
,&&||
14.对C程序在作逻辑运算时判断操作数真、假的表述,下列哪一个是正确的()。
A、0为假非0为真B、只有1为真C、-1为假1为真D、0为真非0为假
15.表达式x==0&&y!
=0||x!
=0&&y=0等效于()。
A、x*y==O&&x+y!
=OB、x*y==O&&(x+y==O)C、x==O||y==OD、x*y=O||x+y=O
16.
表达式!
x||a==b
等效于()。
A
、!
((x||a)==b)
B、!
(x||y)==b
C、!
(x||(a==b))
D、(!
x)||(a==b)
17.
下列格式符中,
哪一个可以用于以
8进制形式输出整数(
)。
A
、%dB
,、%8d
C
、%oD、
%ld
18.
下列格式符中,
哪一个可以用于以
16进制形式输出整数(
)。
A
、%16d
B、%8x
C
、%d16D、
%d
19.a是int类型变量,c是字符变量。
下列输入语句中哪一个是错误的()。
A、scanf("%d,%c",&a,&c);B、seanf("%d%c",a,c);
C、scanf("%d%c",&a,&c);D、scanf("d=%d,c=%c",&a,&c);
20.字符变量ch='A',int类型变量K=25,语句printf("%3d,%d3\n",ch,k);输出()。
A、65,253B、65253C、65,25D、A25
21.下列各语句序列中,能够且仅输出整型变量a、b中最大值的是()。
A、if(a>b)printf("%d\n",a);printf("%d\n",b);
B、printf("%d\n",b);if(a>b)printf("%d\n",a);
C、if(a>b)printf("%d\n",a);elseprintf("%d\n",b);
D、if(a
22.
下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是()。
C、printf("%d",if(a>b)aelseb);D
24.
下列语句应将小写字母转换为大写字母,其中正确的是(
A、if(ch>='a'&ch<='z')ch=ch-32;B
C、ch=(ch>='a'&&ch<='z')?
ch-32:
”;D
25.求整数1至10的和并存入变量s,下列语句中错误的是()。
A、s=0;for(i=1;i<=10;i++)s+=i;B、s=0;i=1;for(;i<=10;i++)s=s+i;
C、for(i=1,s=0;i<=10;s+=i,i=i+1);D、for(i=1;s=0;i<=10;i++)s=s+i;
26.若sizeof(int)为2,计算1至10的乘积,下列语句序列中正确的是()。
A、intjc=1;for(inti=2;i<=10;i++)jc*=i;
B、for(floatjc=1,inti=2;i<=10;i++,jc*=i);
C、floatjc=1;for(inti=2;i<=10;jc*=i,i=i+1);
D、for(floatjc=1;i=2;i<=10;i++)jc*=i;
27.下列语句中,哪一个可以输出26个大写英文字母()。
A、for(a='A';a<='Z';printf("%c",++a));B、for(a='A';a<'Z';a++)printf("%c",a);
C、for(a='A';a<='Z';printf("%c",a++));D、for(a='A';a<'Z';printf("%c",++a));
28.与语句while(i>=0&&i<=10){if(i++==5)continue;printf("%f\n",1.0/(i-5));}
功能相同的是()。
A、for(;i>=0&&i<=10;i++)if(i!
=5)printf("%f\n",1.0/(i-5));
B、for(;i>=0&&i<=10;i++)if(i==5)printf("%f\n",1.0/(i-5));
C、for(;i>=0&&i<=10;i++)if(i!
=5)printf("%f\in",1.0/(i-5));elsebreak;
A、x+5/y-5B、x+5/y-5;C、(x+5)/(y-5)D、(x+5)/(y-5);
36.定义带参数的宏"#definejh(a,b,t)t=a;a=b;b=t”,使两个参数a、b的值交换,下
列表述中哪个是正确的()。
A、不定义参数a和b将导致编译错误B、不定义参数a、b、t将导致编译错误
B、不定义参数t将导致运行错误D、不必定义参数a、b、t类型
37.下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的()。
A、floatd,*p=d;B、floatd,*p=&d;C、float*p=&d,d;D、floatd,p=d;
38.对语句“inta[10],*p=a;”,下列表述中哪一个是正确的()。
A、*p被赋初值为a数组的首地址B、*p被赋初值为数组元素a[0]的地址
C、p被赋初值为数组元素a[1]的地址D、p被赋初值为数组元素a[0]的地址
39.p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的()。
A
、p2=*&p1;B、p2=**p1;C
、p2=&p1;
D、p2=*p1;
40.
假如指针p已经指向变量x,则&*p相当于()。
A
、xB、*pC
、&x
D
、**p
41.
假如指针p已经指向某个整型变量x,
则(*p)++相当于
F(
)。
A
、p++B、x++C
、*(p++)
D
、&x++
42.
数组定义为“inta[4][5];”,引用“
a+3表示()
。
A
、a数组第4列的首地址B
、a数组第
1行第4列兀素的值
C、a数组第4行的首地址D、a数组第1列第4行元素的值
43.数组定义为“inta[4][5];”,引用“a[1]+3”表示()。
A、a数组第2行第4列元素的地址B、a数组第2行第4列元素的值
C、a数组第4行的首地址D、a数组第1行第4列的首地址
2填空题
1.设floatx=2.5,y=4.7;inta=7;,表达式x+a%3*(int)(x+y)%2/4的值为。
2.设intx=17,y=5;执行语句x+=--x%--y后x的值为。
3.设intx=17,y=5;执行语句x%=x++/--y后x的值为。
4.设inta=7,b=6,c=5;,表达式(a+b)>(c*c)&&b==c||c>b的值为。
5.设inta=3,b=5,c=7;,表达式a>c||c>b!
=0&&c==b+a的值为。
6.已知三角形边长a、b、c和s=(a+b+c)/2,计算其面积的算术表达式为。
7.方程ax2+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式
为。
8.p为本金,r为1年期存款年利率,计算存款p元5年到期时本金、利息总和(计复利)
的算术表达式为。
9.将数学式(x+1)e2x写作算术表达式为。
10.ch是字符变量,判断ch为大写英文字母的逻辑表达式为。
11.判断int类型变量n是否为两位整数的逻辑表达式为。
12.判断变量a、b的值均不为0的逻辑表达式为。
13.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为。
14.判断变量a、b中必有且只有一个为0的逻辑表达式为。
15.m是值为两位数的整型变量,判断其个位是奇数而十位数是偶数的逻辑表达式为。
16.求解赋值表达式a=5+(c=6)后表达式值、a、c的值依次为。
17.求解赋值表达式a=(b=10)%(c=6),表达式值、a、b、c的值依次为。
18.求解逗号表达式x=a=3,6*a后,表达式值、x、a的值依次为。
19.求解逗号表达式(a=15,a*4),a+5,表达式值、a的值依次为。
20.求变量a、b中最大值的条件表达式为。
21.若a=13、b=25、c=-17,条件表达式((y=(a
a:
b)y:
c的值为。
22.若s='d',执行语句s=(s>='a'&&s<='z')?
s-32:
s;字符变量s的值为。
23.整型变量x的值为25,语句"printf("%o",x);"的输出结果为。
24.整型变量m的值为27,语句printf("m=%x",m);的输出结果为。
25.语句printf("s%s","mall");的输出结果为。
26.若intk=10,循环语句while(k=0)k=k-1;执行次。
27.若intk=2,循环语句while(k!
=0){printf("%d",k);k--;}执行次。
28.若inti=10,s=0;,执行语句while(s+=i--,--i);后s、i值分别为。
29.语句for(ints,i=1;i<=100;s+=i,i++);能否计算1〜100的和?
原因是。
30.若int类型变量字长为2,程序段intjc=1;for(inti=2;i<10;i++)jc*=i;能否计
算10的阶乘?
原因是。
31.定义a为共有10个元素的静态存储int类型数组的语句为。
32.定义a为长度为10的字符串、同时为字符串赋初值"continue"的语句为。
33.定义a为共有5个元素的一维整型数组、同时定义p为指向a数组首地址的指针变量的
语句为。
34.定义a为4行5列的整型数组、同时定义p为指向a数组首地址的指针变量的语句为_。
35.如定义语句为"chara[]="windows",b[]="95";”,
语句"printf("%s",strcat(a,b));"
的输出结果为
。
36.
定义语句为chara[15],b[]="windows95";,则语句printf("%s",strcpy(a,b));
的输出结果为
。
37.
定义chara[]="Box",b[]="Boss";
,语句printf("%d",strcmp(a,b));输出
38.
定义chara[10]="student";,语句
"printf("%d",strlen(a));'
"输出结果为
39.
定义chara[]="WINDOWS";,语句printf("%s",strlwr(a));
输出
40.
定义chara[]="hangzhou",*p=a;,
执行for(inti=O;*p!
='\O';p++,i++);
后i的值为
。
41.
宏疋义#definef(x,y)printf(x,y)
的引用f("%d\n",m);
置换展开后为
42.
宏疋义#definef(x,y)fopen(x,y)
的引用f("a.txt","rw");
置换展开后为
43.
宏定义#definef(c)c>='A'&&c<-'Z'
的引用f(x[i])
置换展开后为
44.
表达式3&5、3|5、3||5的值分别为
、、
。
45.
设intx-707,表达式xAx、x|x、
~xAx的值分别为
、、。
O
O
O
O
O
O
O
46.设intx=0707
47.
48.
49.
50.
函数的参数为
函数的参数为
函数的参数为
,表达式~x&&x、!
x&&x、x>>3&~0的值分别为int类型时,虚参与实参结合的传递为
类型时,虚参与实参结合的传递为
类型时,虚参与实参结合的传递为
虚参与实参结合的传递为
f(3)的返回值是
floatchar*
函数的实参为常量时,
51.对下列递归函数,函数调用
intf(intn){return((n==0)?
1:
f(n_1)+2);}
52.函数f定义如下,调用f("1475")的返回值为。
intf(char*s){intk=0;while(*s)k+=*s++-'O:
returnk;}
53.函数change定义如下,a=10、b=5,执行change(a,b)后a、b的值分别为
voidchange(inta,intb){intt=0;t=a;a=b;b=t;}
54.开辟一个存储n个int数据的内存区、并将内存区首地址送入p(指向int类型的指针
变量)的语句为。
55.释放由p所指向的内存区的语句为_
56.fp为文件位置指针,将fp移到离当前位置25个字节处的语句为。
3写输出结果题
1.#include
voidmain()
{charch;intk=0;
for(ch='A';ch<'H';ch++,k++)if(k%2==0)printf("%c",ch);
printf("\n");
}输出结果:
2.#include
voidmain()
{intk=0;
charc='A';
do{
switch(c++){
case'A':
k++;break;
case'B':
k--;
caseC:
k+=2;break;
case'D':
k=k%2;break;
case'E':
k=k*10;break;
default:
k=k/3;
}
k++;
}while(cv'G');
printf("k=%d\n",k);
}输出结果:
3.#include
voidmain()
{inta[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;
for(i=0;i<6;i++){
for(j=0;j<6;j++)if(a[i]==b[j])break;
if(j<6)printf("%d”,a[i]);
}
printf("\n");
}输出结果:
4.#include
voidmain()
{inta[8]={1,0,1,0,1,0,1,0},i;
for(i=2;i<8;i++)a[i]+=a[i-1]+a[i-2];for(i=0;i<8;i++)printf("%d",a[i]);
printf("\n");
}输出结果:
5.#include
voidmain()
{ints=1,t=1,a,n;
scanf("%d%d",&a,&n);for(inti=1;i}
s*=a;printf("SUM=%d\n",s);
}
6.#include
#definePR(x,y)printf("%s=\t%d\n",x,y)voidmain()
{intx=3,y=2,z=1;
PR("x|y&z",x|y&z);PR("xAy&~z",xAy&~z);
PR("x&y&z",x&y&z);x=1;y=-1;
PR("!
x|x",!
x|x);PR("~x|x",~x|x);
}
输入数据:
2,4
输出结果:
输出结果:
7.#include
voidmain()
{inta[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9};for(inti=0;i<5;i++)for(intj=0;j<6;j++)if(*(a+i)==*(b+j))printf("%d",*(a+i));
printf("\n”);
}
输出结果:
8.#inelude
#inelude
voidmain()
{charstr1[]="*******";
for(inti=0;i<4;i++){
printf("%s\n",str1);
str1[i]='';str1[strlen(str1)-1]='\O';
}
}
9.#include
voidmain()
{chara[5][8];
for(inti=0;i<5;i++)for(intj=0;j<8;j++)if(i==0||i==4)a[i][j]='-';elsea[i][j]='';
for(i=1;i<4;i++){a[i][0]='|';a[i][5]='|';}for(i=0;i<5;i++)a[i][6]='\0';for(i=0;i<5;i++)printf("%s\n",a[i]);
}
输出结果:
10.#include
voidmain()
{chara[8],temp;inti,j;
for(i=0;i<7;i++)a[i]='a'+i;
for(i=0;i<3;i++){
temp=a[0];for(j=1;j<7;j++)a[j-1]=a[j];a[6]=temp;a[7]='\0:
printf("%s\n”,a);
}
}
11.#include
voidmain()
{inti,j,n;
for(i=0;i<4;i++){
for(j=1;j<=i;j++)printf("");
n=7-2*i;
for(j=1;j<=n;j++)printf("%1d",n);
printf("\n");
}
}
12.#include
voidmain()
{chara[8],temp;intj,k;
for(j=0;j<7;j++)a[j]='a'+j;
a[7]='\0';
for(j=0;j<3;j++){
temp=a[6];for(k=6;k>0;k--)a[k]=a[k-1];
a[0]=temp;printf("%s\n",a);
}
}
13.#include
voidprint(int,char,int);
voidmain()
{print(3,'*',1);print(2,'*',3);
print(1,'*',5);print(2,'#',3);
print(2,'#',3);
}
voidprint(intbegin,charpzf,intn)
{chara[50];
for(inti=0;ifor(i=0;i输出结果:
输出结果:
输出结果:
输出结果:
运行时输入:
5-73
输出结果:
输出结果:
H
a[begin+i]='\O:
printf("%s\n",a);
}
14.#include
voidmain()
{inta,b,c,find(int,int,int);
scanf("%d%d%d",&a,&b,&c);
printf("%d\n%d,%d,%d\n",find(a,b,c),a,b,c);
}
intfind(inta,intb,intc)
{intu,s,t;
u=((u=(a>b)?
a:
b)>c)?
u:
c;
t=((t=(a
a:
b)t:
c;
s=a+b+c-u-t;a=u;
b=s;c=t;returns;
}
15.#include
voidfun1(intn,inta[][3])
{for(inti=0;ifor(intj=O;j}
voidmain()
{inta[3][3]={{6,4,2},{8,6,4