C语言试题详细分析与解答Word格式文档下载.docx
《C语言试题详细分析与解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言试题详细分析与解答Word格式文档下载.docx(88页珍藏版)》请在冰豆网上搜索。
c);
给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是
A)10<
回车>
22<
33<
B)10.0,22.0,33.0<
C)10.0<
22.033.0<
D)10
22<
(20)有如下程序:
main()
{
intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
b++;
}
printf("
a=%d,b=%d\n"
a,b);
}
该程序的输出结果是
A)a=2,b=1
B)a=1,b=1
C)a=1,b=0
D)a=2,b=2
(21)有以下程序
{inti=1,j=1,k=2;
if((j++||k++)&
&
i++)
%d,%d,%d\n"
i,j,k);
执行后输出结果是
A)1,1,2
B)2,2,1
C)2,2,2
D)2,2,3
(22)有如下程序
{floatx=2.0,y;
if(x<
0.0)y=0.0;
elseif(x<
10.0)y=1.0/x;
elsey=1.0;
%f\n"
y);
A)0.000000
B)0.250000
C)0.500000
D)1.000000
(23)有如下程序:
{intn=9;
while(n>
6){n--;
%d"
n);
A)987
B)876
C)8765
D)9876
(24)在下列选项中,没有构成死循环的是
A)inti=100;
while
(1)
{i=i%100+1;
if(i>
100)break;
B)for(;
;
);
C)intk=10000;
do{k++;
}while(k>
10000);
D)ints=36;
while(s)--s;
(25)设intx=1,y=1;
表达式(!
x||y--)的值是
A)0
B)1
C)2
D)-1
(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是
A)函数调用可以作为独立的语句存在
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参
(27)有以下程序
floatfun(intx,inty)
{return(x+y);
{inta=2,b=5,c=8;
%3.0f\n"
fun((int)fun(a+c,b),a-c));
程序运行后的输出结果是
A)编译出错
B)9
C)21
D)9.0
(28)若有以下调用语句,则不正确的fun函数的首部是
{…
inta[50],n;
…
fun(n,&
a[9]);
A)voidfun(intm,intx[])
B)voidfun(ints,inth[41])
C)voidfun(intp,int*s)
D)voidfun(intn,inta)
(29)fseek函数的正确调用形式是
A)fseek(文件指针,起始点,位移量)
B)fseek(文件指针,位移量,起始点)
C)fseek(位移量,起始点,文件指针)
D)fseek(起始点,位移量,文件指针)
(30)若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是
A)EOF
B)-1
C)1
D)NULL
(31)若有说明语句:
charc='
\72'
;
则变量c
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法,c的值不确定
(32)若有说明inta[3][4];
则a数组元素的非法引用是
A)a[0][2*1]
B)a[1][3]
C)a[4-2][0]
D)a[0][4]
(33)设有以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是
A)struct是结构体类型的关键字
B)structstu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名
D)a和b都是结构体成员名
(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是
A)整型常量
B)整型表达式
C)整型常量或整型表达式
D)任何类型的表达式
(35)若运行时给变量x输入12,则以下程序的运行结果是
{intx,y;
scanf("
&
x);
y=x>
12?
x+10:
x-12;
%d\n"
B)22
C)12
D)10
(36)以下说法正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
(37)表达式0x13^0x17的值是
A)0x04
B)0x13
C)0xE8
D)0x17
(38)有以下程序
#defineF(X,Y)(X)*(Y)
{inta=3,b=4;
F(a++,b++));
}
程序运行后的输出结果是
A)12
B)15
C)16
D)20
(39)下列程序执行后的输出结果是
voidfunc(int*a,intb[])
{b[0]=*a+6;
{inta,b[5];
a=0;
b[0]=3;
func(&
a,b);
b[0]);
A)6
B)7
C)8
D)9
(40)若有下面的程序段:
chars[]="
china"
char*p;
p=s;
则下列叙述正确的是
A)s和p完全相同
B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等
D)*p与s[0]相等
(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;
i<
n-1;
for(j=i+1;
j<
n;
j++)
if(a[i]<
a[j]){t=a[i];
a[i]=a[j];
a[j]=t;
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&
aa[3],5);
10;
i++)printf("
%d,"
aa[i]);
\n"
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
(42)以下程序的运行结果是
#include"
stdio.h"
{structdate
{intyear,month,day;
}today;
sizeof(structdate));
B)8
C)10
D)12
(43)若有语句int*point,a=4;
和point=&
a;
下面均代表地址的一组选项是
A)a,point,*&
a
B)&
*a,&
a,*point
C)*&
point,*point,&
D)&
*point,point
(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是
A)地址传递
B)单向值传递
C)由实参传形参,再由形参传实参
D)传递方式由用户指定
(45)已定义以下函数
fun(char*p2,char*p1)
while((*p2=*p1)!
='
\0'
){p1++;
p2++;
函数的功能是
A)将p1所指字符串复制到p2所指内存空间
B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较
D)检查p1和p2两个指针所指字符串中是否有'
(46)若执行下述程序时,若从键盘输入6和8时,结果为
{inta,b,s;
%d%d"
b);
s=a
if(a<
b)
s=b;
s*=s;
s);
}
A)36
B)64
C)48
D)以上都不对
(47)fscanf函数的正确调用形式是
A)fscanf(fp,格式字符串,输出表列);
B)fscanf(格式字符串,输出表列,fp);
C)fscanf(格式字符串,文件指针,输出表列);
D)fscanf(文件指针,格式字符串,输入表列);
(48)下列关于C语言数据文件的叙述中正确的是
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(49)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-'
a'
+'
A'
s++;
main()
{charstr1[100]="
abcddfefdbd"
c='
d'
ss(str1,c);
%s\n"
str1);
程序运行后的输出结果是
A)ABCDDEFEDBD
B)abcDDfefDbD
CabcAAfefAbA
D)Abcddfefdbd
(50)若以下定义:
structlink
{intdata;
structlink*next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
指针p指向变量a,q指向变量c。
则能够把c插入到a和b之间并形成新的链表的语句组是:
A)a.next=c;
c.next=b;
B)p.next=q;
q.next=p.next;
C)p->
next=&
c;
q->
next=p->
next;
D)(*p).next=q;
(*q).next=&
b;
二、填空题
(6)设y是int型,请写出y为奇数的关系表达式【6】。
答案(y%2)==1
(7)设inta=5,b=6,表达式(++a==b--)?
++a:
--b的值是【7】
。
解析:
此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。
请注意前缀++,--和后缀++,--的区别。
(8)下列程序的输出结果是【8】。
maim
()
{charb[]="
Helloyou"
b[5]=0;
printf("
b);
}
语句b[5]=0;
相当于语句b[5]=′\0′,且′\0′为字符串结束标志,输出时遇到′\0′就停止输出。
(9)当调用函数时,实参是一个数组名,则向函数传递的是【9】。
在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现。
(10)以下程序的输出结果是【10】。
inta=1234;
%2d\n"
,a);
在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。
(11)用高级语言编写的程序称为【11】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有两种方式:
一种是通过解释程序,对源程序逐句解释执行;
另一种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程序),然后执行目标程序。
(12)以下程序的输出结果是【12】。
main()
{inta=0;
a+=(a=8);
printf("
a);
赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:
a+=(a=8)此时,a的值由于赋值为8,而不是0
a+=8
a=a+8
a=16
(13)函数voidfun(float*sn,intn)的功能是:
根据以下公式计算S,计算结果通过形参指针sn传回;
n通过形参传入,n的值大于等于0。
请填空。
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;
i<
=n;
i++)
{f=【13】*f;
w=f/(2*i+1);
s+=w;
【14】=s;
C语言中实参变量和形参变量的数据传递是单向的“值传递”方式。
指针变量作函数也要遵循这一规则。
调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
(14)函数fun的功能是:
根据以下公式求p的值,结果由函数值返回。
m与n为两个正数且要求m>
n。
例如:
m=12,n=8时,运行结果应该是495.000000。
请在题目的空白处填写适当的程序语句,将该程序补充完整。
#include<
conio.h>
stdio.h>
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;
=m;
【15】;
【16】;
=m-n;
i++)p=p/i;
returnp;
main()
{clrscr();
p=%f\n"
fun(12,8));
本题中,欲求p的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。
(15)该程序运行的结果是【17】。
#include<
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;
{intaa[M],n,k;
clrscr();
fun(10,aa,&
n);
for(k=0;
k<
k++)
if((k+1)%20==0)printf("
elseprintf("
%4d"
aa[k]);
解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“||”运算符,若要找能同时被7和11整除的所有整数则在if()中应用“&
”运算符。
当然,如果m的值输入50,即表达式fun(10,aa,&
为fun(50,aa,&
时输入结果为:
7
11
14
21
22
28
33
35
42
44
49。
(16)下列程序的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#defineM81
intfun(char*ss,charc)
{inti=0;
for(;
【18】;
ss++)
if(*ss==c)i++;
returni;
{chara[M],ch;
\nPleaseenterastring:
"
gets(a);
\nPleaseenterachar:
ch=getchar();
\nThenumberofthecharis:
%d\n"
fun(a,ch));
从字符串ss中找出子字