《C语言程序设计》练习题Word下载.docx
《《C语言程序设计》练习题Word下载.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》练习题Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
A)C=5/9(F-32)B)C=5*(F-32)/9
C)C=5/9*(F-32)D)三个表达式都正确
11.逗号表达式"
(a=3*5,a*4),a+15"
的值是_C___。
A)15B)60C)30D)不确定
12.如果inta=1,b=2,c=3,d=4;
则条件表达式"
a<
b?
a:
c<
d?
c:
d"
的值是__A_。
书103页
A)1B)2C)3D)4
13.已知inti=10;
表达式"
20-0<
=i<
=9"
的值是__B__。
A)0B)1C)19D)20
14.使用语句scanf("
x=%f,y=%f"
&
x,&
y);
输入变量x、y的值(□代表空格),正确的输入是_C___。
(scanf函数是取地址的,所以一定要加上字母。
不是int函数)
A)1.25,2.4□2.4C□
15.已知intx=(1,2,3,4);
变量x的值是__D__。
(其实,逗号表达式无非是把若干个表达式“串联”起来,分解开就是:
x=1;
x=2;
x=3;
x=4;
最终结果是x=4)
16.已知inti=1,j=0;
执行下面语句后j的值是_D___。
while(i)
switch(i)
{case1:
i+=1;
j++;
break;
case2:
i+=2;
case3:
i+=3;
default:
i--;
}A)1B)2C)3D)死循环
17.求取满足式12+22+32+……+n2≤1000的n,正确的语句是A____。
A)for(i=1,s=0;
(s=s+i*i)<
=1000;
n=i++);
B)for(i=1,s=0;
n=++i);
C)for(i=1,s=0;
(s=s+i*++i)<
n=i);
D)for(i=1,s=0;
(s=s+i*i++)<
18.下面的for语句_C___。
for(x=0,y=10;
(y>
0)&
&
(x<
4);
x++,y--);
A)是无限循环B)循环次数不定C)循环执行4次D)循环执行3次
19.已知chara[][20]={"
Beijing"
"
shanghai"
tianjin"
chongqing"
};
语句printf("
%c"
a[30]);
的输出是_C___。
A)<
空格>
B)nC)不定D)数组定义有误
20.对二维数组的正确说明是___C_。
前面的括号内的数字可以省略,但后面的不可以
A)inta[][]={1,2,3,4,5,6};
B)inta[2][]={1,2,3,4,5,6};
C)inta[][3]={1,2,3,4,5,6};
D)inta[2,3]={1,2,3,4,5,6};
21.对字符数组str赋初值,str不能作为字符串使用的一个是_D___。
A)charstr[]="
;
B)charstr[]={"
C)charstr[9]={'
s'
'
h'
a'
n'
g'
i'
D)charstr[8]={'
22.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为_A___。
A)静态变量(全局变量)B)动态变量(局部变量)C)外部变量D)内部变量
23.在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是__D__。
A)externB)registerC)auto(自动变量)D)static(静态变量)
24.定义一个函数实现交换x和y的值,并将结果正确返回。
能够实现此功能的是_C___。
A)swapa(intx,inty)B)swapb(int*x,int*y)
{inttemp;
{inttemp;
temp=x;
x=y;
y=temp;
temp=x;
}}
C)swapc(int*x,int*y)D)swapd(int*x,int*y)
{int*temp;
temp=*x;
*x=*y;
*y=temp;
25.在下列结论中,只有一个是错误的,它是__C__。
A)C语言允许函数的递归调用
B)C语言中的continue语句,可以通过改变程序的结构而省略
C)有些递归程序是不能用非递归算法实现的
D)C语言中不允许在函数中再定义函数
26.说明语句"
int(*p)();
的含义是__C__。
A)p是一个指向一维数组的指针变量
B)p是指针变量,指向一个整型数据
C)p是一个指向函数的指针,该函数的返回值是一个整型(一个变量的指针即为其地址)
D)以上都不对
27.设有说明int(*p)[4];
其中的标识符p是_C___。
A)4个指向整型变量的指针变量
B)指向4个整型变量的函数指针
C)一个指向具有4个整型元素的一维数组的指针
D)具有4个指向整型变量的指针元素的一维指针数组
28.已知:
chars[10],*p=s,则在下列语句中,错误的语句是__B__。
S是变量,不能赋予确切的值
A)p=s+5;
B)s=p+s;
C)s[2]=p[4];
D)*p=s[0];
29.已知:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是_C___。
A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2])
30.已知:
inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;
则值为3的表达式是AC____。
A)p+=2,*(p++)B)p+=2,*++pC)p+=2,*p++D)p+=2,++*p
32.函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。
能正确执行此功能的函数是D____。
A)funa(int*x,int*y)B)funb(intx,inty)
{int*p;
{intt;
p=x;
*y=*p;
t=x;
y=t;
C)func(int*x,int*y)D)func(int*x,int*y)
{*x=*y;
*y=*x;
{*x=*x+*y;
*y=*x-*y;
*x=*x-*y;
33.有定义如下:
structsk
{inta;
floatb;
}data,*p;
如果p=&
data;
则对于结构变量data的成员a的正确引用是_B___。
A)(*).data.aB)(*p).aC)p->
data.a
34.已知:
structst
{intn;
structst*next;
staticstructsta[3]={1,&
a[1],3,&
a[2],5,&
a[0]},*p;
如果下述语句的显示是2,则对p的赋值是__C__。
printf("
++(p->
next->
n));
A)p=&
a[0];
B)p=&
a[1];
C)p=&
a[2];
D)p=&
a[3];
35.fscanf函数的正确调用形式是____D。
A)fscanf(文件指针,格式字符串,输出列表);
B)fscanf(格式字符串,输出列表,文件指针);
C)fscanf(格式字符串,文件指针,输出列表);
D)fscanf(文件指针,格式字符串,输入列表);
36.使用fgetc函数,则打开文件的方式必须是___C_。
A)只写B)追加C)读或读/写D)参考答案B和C都正确
37.已知宏定义
#defineN3
#defineY(n)((N+1)*n)
执行语句z=2*(N+Y(5+1));
后,变量z的值是_B___。
A)42B)48C)52D)出错
38.已知宏定义#defineSQ(x)x*x,执行语句printf("
10/SQ(3));
后的输出结果是C___。
A)1B)3C)9D)10
二、阅读程序题
阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路,就所谓见多识广。
通过阅读理解程序,从给出的四个备选参考答案中,选择程序的正确输出。
如果选择有误,就要认真分析原因,是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。
程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案,增强动手能力。
1.下面程序的输出结果是___B_。
#include<
stdio.h>
main()
{intx=10;
{intx=20;
printf("
%d,"
x);
}
%d\n"
}A)10,20B)20,10C)10,10D)20,20
2.以下程序的输出结果是___D_。
{intx=10,y=10;
printf("
%d%d\n"
x――,――y);
}A)1010B)99C)910D)109
3.下面程序可能的输出结果是_AC___。
main()
{inta,b;
scanf("
%2d%3d"
a,&
b);
a=%db=%d\n"
a,b);
}A)a=12b=34B)a=123b=45C)a=12b=345D)语句右错误
4.以下程序段的输出结果是___B_。
inta=10,b=50,c=30;
if(a>
b)
a=b;
b=c;
c=a;
a=%db=%dc=%d\n"
a,b,c);
A)a=10b=50c=10B)a=10b=30c=10
C)a=50b=30c=10D)a=50b=30c=50
5.以下程序的输出结果是_C__。
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elseif(!
if(!
c)d=15;
elsed=25;
d=%d\n"
d);
}A)d=10B)d=15C)d=20D)d=25
6.下面程序的输出结果为___B_。
{inta=1,b=0;
switch(a)
switch(b)
{case0:
**0**"
);
break;
case1:
**1**"
**2**"
}A)**0**B)**0****2**C)**0****1****2**D)有语法错误
7.以下程序的输出结果是__D__。
{char*s="
12134211"
intv1=0,v2=0,v3=0,v4=0,k;
for(k=0;
s[k];
k++)
switch(s[k])
{case'
1'
:
v1++;
case'
3'
v3++;
2'
v2++;
v4++;
v1=%d,v2=%d,v3=%d,v4=%d\n"
v1,v2,v3,v4);
}A)v1=4,v2=2,v3=1,v4=1B)v1=4,v2=9,v3=3,v4=1
C)v1=5,v2=8,v3=6,v4=1D)v1=4,v2=7,v3=5,v4=8
8.下面程序的输出是____B。
{intnum=0;
while(num<
=2)
{num++;
num);
}A)1B)1C)1D)1
222
33
4
9.从键盘上输入"
446755"
时,下面程序的输出是C____。
{intc;
while((c=getchar())!
='
\n'
)
switch(c-'
putchar(c+4);
putchar(c+3);
putchar(c+2);
\n"
}A)888988B)668966C)88898787D)66898787
10.下面程序的输出结果是__A__。
{inti,j,x=0;
for(i=0;
i<
2;
i++)
{x++;
for(j=0;
j<
-3;
j++)
{if(j%2)
continue;
x++;
x=%d\n"
x);
}A)x=4B)x=8C)x=6D)x=12
11.下面程序的输出结果是_C___。
{intn[3][3],i,j;
3;
i++)
j++)
n[i][j]=i+j;
n[i+1][j+1]+=n[i][j];
n[i][j]);
}A)14B)0C)6D)不确定
12.下面程序的输出结果是_B___。
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
a[%d][%d]=%d\n"
i,j,a[i][j]);
}A)6B)-3C)2D)不确定
13.下面程序的输出结果是__D__。
{chars1[50]={"
somestring*"
},s2[]={"
test"
%s\n"
strcat(s1,s2));
}A)somestring*B)test
C)somestritestD)somestring*test
14.下面程序的输出结果是____B。
f(char*s)
{char*p=s;
while(*p!
\0'
p++;
return(p-s);
{printf("
f("
ABCDEF"
));
}A)3B)6C)8D)0
15.下面程序的输出结果是____D。
string.h>
{charstr[100]="
Howdoyoudo"
strcpy(str+strlen(str)/2,"
esshe"
str);
}A)HowdoyoudoB)esshe
C)HowareyouD)Howdoesshe
16.下面程序的输出结果是___C_。
func(inta,intb)
c=a+b;
return(c);
{intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
r);
}A)11B)20C)21D)31
17.下面程序的输出结果是_A___。
{inta[]={1,2,3,4,5,6};
int*p;
p=a;
%d"
*p);
*(++p));
*++p);
*(p--));
p+=3;
%d%d"
*p,*(a+3));
}A)123354B)123456C)122345D)123445
18.下面程序的输出结果是___A_。
main()
{inta[]={1,2,3,4,5};
intx,y,*p;
p=&
x=*(p+2);
y=*(p+4);
%d,%d,%d\n"
*p,x,y);
}A)1,3,5B)1,2,3C)1,2,4D)1,4,5
19.下面程序的输出结果是__D__。
#include"
string.h"
fun(char*w,intn)
{chart,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<
s2)
{t=*s1++;
*s1=*s2--;
*s2=t;
{staticchar*p="
1234567"
fun(p,strlen(p));
%s"
p);
}A)7654321B)1717171C)7171717D)1711717
20.下面程序的输出结果是__D__。
char*p="
abcdefghijklmnopq"
;
{inti=0;
while(*p++!
e'
);
%c\n"
*p);
}A)cB)dC)eD)f
21.下面程序的输出结果是B__C__。
stdio.h"
structstr1
{charc[5];
char*s;
{structstr1s1[2]={{"
ABCD"
EFGH"
},{"
IJK"
,"
LMN"
}};
structstr2
{structstr1sr;
intd;
}s2={"
OPQ"
RST"
,32767};
structstr1*p[2];
p[0]=&
s1[0];
p[1]=&
s1[1];
,++p[1]->
s);
/*①*/
,s2.sr.c[2]);
/*②*/
}①A)LMNB)MNC)ND)IJK
②A)OB)PC)QD)R
22.以下程序的输出结果是D____。
{intx,*y;
}*p;
ints[]={10,20,30,40};
structsta[]={1,&
s[0],2,&
s[1],3,&
s[2],4,&
s[3]};
{p=a;
++(*(++p)->
y));
}A)10B)11C)20D)21
三、程序填空题
在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。
这类习题的设计就是要引导读者逐步掌握编程的方法。
本节习题的难度适中,可能有些典型的程序在