C语言练习题1Word文档格式.docx
《C语言练习题1Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言练习题1Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

intx=168;
,则表达式x=x%100/10的值为()
A)6B)6.8C)1D)8
18、下述程序段输出结果是()
intx=6;
doubley=3.141593;
printf("
%d%5.3f"
x,y);
A)63.141B)63.141C)6,3.141D)63.1410
19、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是()
A)k%2 B)k%2==1 C)(k%2)!
=0 D)!
k%2==1
20、若有定义语句:
doublex,y,*px,*py,执行了px=&
x,py=&
y;
之后,正确的输入语句是()
A)scanf("
%f%f"
x,y);
B)scanf("
&
x,&
y);
C)scanf("
%lf%le"
px,py);
D)scanf("
%lf%lf"
21、以下运算符优先级最高的是()
A)<
=B)!
=C)&
&
D)?
:
22、以下运算符优先级最高的是()
A)+B)|C)||D)+=
23、以下是if语句的基本形式:
if(表达式)语句
其中“表达式”()
A)必须是关系表达式B)必须是逻辑表达式
C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式
24、以下程序的运行结果是()
#include<
stdio.h>
main()
{inti,j,m=55;
for(i=1;
i<
=3;
i++)
for(j=3;
j<
=i;
j++)
m=m%j;
%d\n"
m);
}
A)0B)1C)2D)3
25、若i、j已定义为int类型,则以下程序段中内循环体执行printf语句的总执行次数是()
for(i=5;
i>
0;
i--)
for(j=0;
4;
OK.\n"
);
A)20B)24C)25D)30
26、以下错误的定义语句是()
A)intx[][3]={{0},{1},{1,2,3}};
B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)intx[][3]={1,2,3,4};
27、以下不能对二维数组a进行正确初始化的语句是()
A)inta[2][3]={0};
B)inta[][3]={{1,2},{3}};
C)inta[][3]={1,2,3,4,5,6};
D)inta[2][3]={{1,2},{3,4},{5,6}};
28、以下叙述中正确的是()
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
29、以下叙述中错误的是()
A)在程序中凡是以“#”开始的语句行都是预处理命令行
B)预处理命令行的最后不能以分号表示结束
C)#defineMAX是合法的宏定义命令行
D)C程序对预处理命令行的处理是在程序执行的过程中进行的
30、以下关于宏的叙述中正确的是()
A)宏名必须用大写字母表示
B)宏定义必须位于源程序中所有语句之前
C)宏替换没有数据类型限制
D)宏调用比函数调用耗费时间
31、在文件包含预处理语句(#include)的使用形式中,当之后的文件名用“”(双引号)括起时,寻找被包含文件的方式是()
A)直接按系统设定的标准方式搜索目录
B)先在源程序所在目录搜索,再按系统设定的标准方式搜索
C)仅仅搜索源程序所在目录
D)仅仅搜索当前目录
32、已定义a为int型变量,则对指针变量p的正确定义和初始化的是()
A)int*p=a;
B)int*p=*a;
C)intp=&
a;
D)int*p=&
33、设有定义doublea[10],*s=a;
以下能够代表数组元素a[3]的是()
A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3
34、有如下程序段:
int*p,a=10,b=1;
p=&
a=*p+b;
执行该程序段后,a的值是()
A)12B)11C)10D)编译出错
35、若有定义语句:
int c[3][5],*p,*q[3];
且0<
=i<
3,则错误的赋值是()
A)p=c;
B)q[i]=c[i];
C)p=c[i];
D)p=&
c[1];
36、若有以下定义:
intx[10],*pt=x;
则对x数组元素的正确应用是()
A)*&
x[10]B)*(x+3)C)*(pt+10)D)pt+3
37、若有定义语句:
doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;
则错误引用x数组元素的是()
A)*pB)x[5]C)*(p+1)D)*x
38、有以下程序
有以下程序
{
inta[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;
p<
a+10;
p++)
%d,"
*p);
程序运行后的输出结果是()
A)1,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,,1,
39、设有以下函数:
void fun(int n,char *s){……}
则下面对函数指针的定义和赋值均正确的是()
A)void(*pf)();
pf=fun;
B)void*pf();
C)void*pf();
*pf=fun;
D)void(*pf)(int,char);
pf=&
fun;
40、下列函数的功能是()
fun(char *a,char *b)
{while((*b=*a)!
='
\0'
){a++;
b++;
} }
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有'
41、有以下程序
main()
{ intm=1,n=2,*p=&
m,*q=&
n,*r;
r=p;
p=q;
q=r;
printf("
%d,%d,%d,%d\n"
m,n,*p,*q);
}程序运行后的输出结果是()
A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2
42、设有定义语句int(*f)(int);
则以下叙述正确的是()
A)f是基类型为int的指针变量
B)f是指向函数的指针变量,该函数具有一个int类型的形参
C)f是指向int类型一维数组的指针变量
D)f是函数名,该函数的返回值是基类型为int类型的地址
43、在说明一个结构体变量时,系统分配给它的存储空间是()
A)该结构体中第一个成员所需的存储空间
B)该结构体中最后一个成员所需的存储空间
C)该结构体中占用最大存储空间的成员所需的存储空间
D)该结构体中所有成员所需存储空间的总和
44、如有以下定义:
structdate{
intyear;
intmonth;
intday;
};
structworklist{
charname[20];
charsex;
structdatebirthday;
}person;
对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是()
A)year=1985;
B)birthday.year=1985;
C)person.year=1985;
D)person.birthday.year=1985;
45、若有以下说明和定义
uniondt
{inta;
charb;
doublec;
}data;
以下叙述中错误的是()
A)data的每个成员起始地址都相同
B)变量data所占内存字节数与成员c所占字节数相等
C)程序段:
data.a=5;
%f"
data.c);
输出结果为5.000000
D)data可以作为函数的实参
46、设有如下说明
typedefstructST
{longa;
intb;
charc[2];
}NEW;
则下面叙述中正确的是()
A)以上的说明形式非法 B)ST是一个结构体类型
C)NEW是一个结构体类型 D)NEW是一个结构体变量
47、下列关于结构型、共用型、枚举型的定义语句中,正确的是()
A)structss{intx}B)unionuu{intx;
}xx=5;
C)enumee{intx;
};
D)struct{intx;
48、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是()
A)x||yB)x|y
C)x&
yD)x
y
49、设inta=2;
表达式(a<
<
2)/(a>
>
1)的值是()
A)0B)2C)4D)8
50、以下叙述中错误的是()
A)gets函数用于从终端读入字符串
B)getchar函数用于从磁盘文件读入字符
C)fputs函数用于把字符串输出到文件
D)fwrite函数用于以二进制形式输出数据到文件
51、以下叙述中错误的是()
A)C语言中对二进制文件的访问速度比文本文件快
B)C语言中,随机文件以二进制代码形式存储数据
C)语句FILEfp;
定义了一个名为fp的文件指针
D)C语言中的文本文件以ASCII码形式存储数据
51、有以下程序
#include"
stdio.h"
voidWriteStr(char*fn,char*str)
{FILE*fp;
fp=fopen(fn,"
W"
fputs(str,fp);
fclose(fp);
{WriteStr("
t1.dat"
"
start"
WriteStr("
end"
}程序运行后,文件t1.dat中的内容是()
A)start B)end C)startend D)endrt
52、若要打开名为abc.txt的文本文件进行追加操作,符合此要求的函数调用是()
A)fopen("
abc.txt"
r"
B)fopen("
w"
C)fopen("
a"
D)fopen("
rb"
53、在C程序中,可把整型数以二进制形式存放到文件中的函数是()
A)fprintf函数 B)fread函数
C)fwrite函数 D)fputc函数
二、程序(段)填空题
1、下列是评分统计程序,一共有8个评委打分,统计最后得分时,去掉一个最高分和一个最低分,其余6个分数的平均分即为最后得分,请填空。
main()
{floatave,max,min,x[8]={9.2,9.5,9.8,7.4,8.5,9.1,9.3,8.8};
inti;
max=min=①__x[0]____________;
for(i=1;
8;
{if(max<
x[i])
max=x[i];
if(②__min>
x[i]__________)
min=x[i];
}
for(i=0;
ave+=x[i];
ave=③_(ave-min-max)/6_____________;
printf("
average=%f\n"
ave);
2、以下程序实现:
从键盘输入一个字符,若输入为小写字母,则将小写字母变为大写字母并输出,其它字符不予处理。
请填空。
#include<
voidmain()
charc;
inputaword\n"
scanf("
%c"
①____&
c_____);
if(②__c>
a'
c<
z'
____________)//判断是否是小写字母
%c\n"
③__c-32______);
//若是小写字母,则转化为大写字母输出
3、以下程序用来判断指定文件是否能正常打开,请填空。
Main()
if(((fp=fopen("
test.txt"
"
))==①NULL))
未能打开文件!
\n"
);
else
文件打开成功!
4、下列程序的功能是:
求1+1/2+1/3+⋯⋯+1/n的值,不要改变与输入输出有关的语句。
{inti,n;
floatsum;
scanf("
%d"
&
n);
①sum=0;
for(②i=1;
③i<
=n;
sum=④sum+1.0/i;
%.3f\n"
sum);
三、阅读程序并写出运行结果。
1、有以下程序
{
inta=1,b=2,c=3,d=0;
if(a==1&
b++==2)
if(b!
=2||c--!
=3)
%d,%d,%d\n"
a,b,c);
else
程序运行后的输出结果是。
2、有一下程序
{chargrade;
grade);
switch(grade)
{case'
A'
:
=85"
case'
B'
C'
=60"
break;
D'
60"
default:
error"
}
若输入A,该程序的输出结果为。
3、有以下程序
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
case1:
b++;
case2:
case3:
printf(“a=%d,b=%d\n”,a,b);
}程序运行后的输出结果是。
4、有一下程序
longf,f1=1,f2=1;
%ld\t%ld\t"
f1,f2);
3;
{f=f1+f2;
%ld\t"
f);
f1=f2;
f2=f;
5、有一下程序
{intk;
for(k=0;
k<
5;
++k)
{if(k==3)
k);
}
6、有一下程序
inti,j,x=0;
2;
{x++;
for(j=0;
{if(j%2)
continue;
x++;
printf(“x=%d\n”,x);
7、有一下程序
{chara[]={'
h'
'
e'
l'
o'
%s"
a);
该程序的输出结果为。
8、有一下程序
inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;
i++)
t[2-i][i]);
9、有一下程序
intfun(int,int);
{inta=10,b=9,c;
c=fun(a,b);
c);
intfun(intx,inty)
{intz;
z=x>
y?
x:
return(z);
10、有一下程序
intswap(int,int);
{intx=7,y=11;
swap(x,y);
x=%d,y=%d\n"
intswap(inta,intb)
inttemp;
temp=a;
a=b;
b=temp;
}程序运行后的输出结果是。
11、有一下程序
voidf(int*p,int*q);
{intm=1,n=2,*r=&
m;
f(r,&
%d,%d"
m,n);
voidf(int*p,int*q)
{p=p+1;
*q=*q+1;
12、有一下程序
{inta[3][3],*p,i;
a[0][0];
9;
p[i]=i+1;
a[1][2]);
}该程序执行后的输出结果为是。
四、判断题(对的填√,错的填×
)
1、C程序中的注释只能出现在程序的开始位置和语句的后面。
()
2、在标准C语言中,语句必须以“;
”结束。
3、关系运算符的优先级高于逻辑运算符。
4、在标准C语言中,数组的下标必须是常量,不允许是表达式。
5、函数的定义和调用都是可以嵌套的。
()
6、对于定义int*p;
则*p是指针变量名。
()
7、C语言中必须用main作为主函数名,程序将从此开始执行,在此结束。
()
8、使用putchar函数时,必须在之前包含头文件stdio.h。
9、在if_else语句中,配对规则是else总是与最近的未配对的if配对。
10、在标准C语言中,二维数组在内存中的存放次序是以行序为主序。
11、C语言中函数声明要以“;
12、内存单元的地址与内存单元中的内容是两个相同的内容。
13、若要处理含有不同类型的相关数据,应自定义结构体类型。
14、共用体变量中的各成员的首地址是不一样的。
15、文件由结构序列组成,可以构成二进制文件或文本文件。
16、文件使用方式“wb+”的含义是为读写打开一个二进制文件。
17、C程序是由函数构成的。
18、在标准C语言中,语句必须以“;
19、关系运算符的优先级低于逻辑运算符。
20、在标准C语言中,数组的下标必须是常量,不允许是表达式。
21、