c语言试题2文档格式.docx
《c语言试题2文档格式.docx》由会员分享,可在线阅读,更多相关《c语言试题2文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
A)4B)7C)102D)103
(29)若有以下说明与语句,请选出哪个就是对c数组元素的正确引用
intc[4][5],(*cp)[5];
cp=c;
A)cp+1B)*(cp+3)C)*(cp+1)+3D)*(*cp+2)
(30)标准函数fgets(s,n,f)的功能就是
A)从文件f中读取长度为n的字符串存入指针s所指的内存
B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C)从文件f中读取n个字符串存入指针s所指的内存
D)从文件f中读取长度为n-1的字符串存入指针s所指的内存
(31)设有如下一段程序:
int*var,ab;
ab=100
var=&
ab;
ab=*var+10;
执行上面的程序后,ab的值为
A)120B)110C)100D)90
(32)以下程序段给数组所有的元素输入数据,请选择正确答案填入。
#include<
stdio、h>
main()
{inta[10],i=0;
while(i<
10)scanf("
%d"
________);
┇
A)a+(i++)B)&
a[i+1]C)a+iD)&
a[++i]
(33)设有如下的程序段:
charstr[]="
Hello"
;
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为
A)'
o'
B)'
\0'
C)不确定的值D)'
的地址
(34)在宏定义#definePI3、14159中,用宏名PI代替一个
A)单精度数B)双精度数C)常量D)字符串
(35)字符(char)型数据在微机内存中的存储形式就是
A)反码B)补码C)EBCDIC码D)ASCII码
(36)执行下面的程序段
intx=35;
charz='
A'
intb;
B=((x&
15)&
&
(z<
'
a'
后,B的值为
A)0B)1C)2D)3
(37)C语言规定,程序中各函数之间
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
(38)假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式
的表达式就是
A)1/a*b*cB)1/(a*b*c)C)1/a/b/(float)cD)1、0/a/b/c
(39)若x就是整型变量,pb就是基类型为整型的指针变量,则正确的赋值表达式就是
A)pb=&
xB)pb=x;
C)*pb=&
x;
D)*pb=*x
(40)设有
staticcharstr[]="
Beijing"
则执行
strlen(strcpy(str,"
China"
)));
后的输出结果为
A)5B)7C)12D)14
(41)设有如下程序:
{int**k,*j,i=100;
j=&
i;
k=&
j;
**k);
上面程序的输出结果就是
A)运行错误B)100C)i的地址D)j的地址
(42)设a=5,b=6,c=7,d=8,m=2,n=2,执行
(m=a>
b)&
(n=c>
d)
后n的值为
A)1B)2C)3D)4
(43)下面函数的功能就是
sss(s,t)
char*s,*t;
{while((*s)&
(*t)&
(*t++==*s++));
return(*s-*t);
A)求字符串的长度B)比较两个字符串的大小
C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中
(44)请选出以下程序的输出结果
sub(x,y,z)
intx,y,*z;
{*z=y-x;
}
{inta,b,c;
sub(10,5,&
a);
sub(7,a,&
b);
sub(a,b,&
c);
%d,%d,%d\n"
a,b,c);
A)5,2,3B)-5,-12,-7C)-5,-12,-17D)5,-2,-7
(45)下面程序的输出结果就是
{inti=2,p;
p=f(i,i+1);
p);
intf(a,b)
inta,b;
{intc;
if(a>
b)c=1;
else
if(a==b)c=0;
elsec=-1;
return(c);
A)-1B)0C)1D)2
(46)请选出以下程序段的输出结果
#defineMIN(x,y)(x)<
(y)?
(x):
(y)
{inti,j,k;
i=10;
j=15;
k=10*MIN(i,j);
k);
A)15B)100C)10D)150
(47)请选出以下程序段的输出结果
{charsl[10],s2[10],s3[10],s4[10];
scanf("
%s%s"
s1,s2);
gets(s3);
gets(s4);
puts(s1);
puts(s2);
puts(s3);
puts(s4);
输入数据如下:
(此处<
CR>
代表回车符)
aaaabbbb<
ccccdddd<
A)aaaaB)aaaaC)aaaaD)aaaabbbb
bbbbbbbbbbbbcccc
ccccccccdddddddd
ccccddddddddeeee
(48)请选出以下程序的输出结果
fun(s,n1,n2)
int*s,n1,n2;
{inti,j,t;
i=n1;
j=n2;
j)
{t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
i++;
j--;
{inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;
fun(p,0,3);
fun(p,4,9);
fun(p,0,9);
for(i=0;
i<
10;
i++)printf("
*(a+i));
\n"
);
A)0987654321B)4321098765
C)5678901234D)0987651234
(49)请选出以下程序的输出结果
{inta[]={1,2,3,4},i;
intx=0;
4;
i++)
{sub(a,x);
printf("
x);
sub(s,y)
int*s,y;
{staticintt=3;
y=s[t];
t--;
A)1234B)4321C)0000D)4444
(50)下面程序的输出结果为
structst
{intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&
dt[0],60,&
dt[1],
70,&
dt[2],80,&
dt[3]};
{p=aa;
++p->
x);
(++p)->
++(*p->
y));
A)10B)50C)51D)60
20606070
20212131
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。
(1)十进制数123用八位二进制表示为【1】。
(6)设有如下程序段:
inti=0,sum=1;
{sum+=i++;
6);
sum);
上述程序段的输出结果就是【6】。
(7)阅读下列程序:
{inti,j,row,column,m;
staticintarray[3][3]={{100,200,300},
{28,72,-30},
{-850,2,6}
};
m=array[0][0];
for(i=0;
3;
for(j=0;
j<
if(array[i][j]<
m)
{m=array[i][j];
row=i;
column=j;
m,row,column);
上述程序的输出结果就是【7】。
(8)设a、b、c为整型数,且a=2、b=3、c=4,则执行完以下语句:
a*=16+(b++)-(++c);
后,a的值就是【8】。
(9)下面程序的输出结果就是【9】。
#include<
main()
{inta=3,b=2,c=1;
c-=++b;
b*=a+c;
{intb=5,c=12;
c/=b*2;
a-=c;
printf('
%d,%d,%d,"
a,b,c);
a+=--c;
(10)设有如下程序:
main(argc,argv)
intargc;
char*argv[];
{while(--argc>
0)printf("
%s"
argv[argc]);
假定上述程序经编译与连接后生成可执行文件PROG、EXE,如果在DOS提示符下键入PROGABCDEFGHIJKL<
则输出结果为【10】。
(11)阅读下列程序:
#defineMAX_COUNT4
voidfun();
main()
{intcount;
for(count=1;
count<
=MAX_COUNT;
count++)fun();
voidfun()
{staticinti;
i+=2;
i);
上述程序的输出结果就是【11】。
(12)设有下列程序:
strint、h>
{inti;
charstr[10],temp[10];
gets(temp);
{gets(str);
if(strcmp(temp,str)<
0)strcpy(temp,str);
%s\n"
temp);
上述程序运行后,如果从键盘上输入(在此<
代表回车符):
C++<
BASIC<
QuickC<
Ada<
Pascal<
则程序的输出结果就是【12】。
(13)设有如下程序:
#include<
main(argc,argv)
intargc;
{FILE*fp;
voidfc();
inti=1;
while(--argc>
0)
if((fp=fopen(argv[i++],"
r"
))==NULL)
{printf("
Cannotopenfile!
\n"
exit
(1);
else
{fc(fp);
fclose(fp);
voidfc(ifp)
FILE*ifp;
{charc;
while((c=getc(ifp))!
='
#'
)putchar(c-32);
上述程序经编译、连接后生成可执行文件名为cpy、exe。
假定磁盘上有三个
文本文件,其文件名与内容分别为:
文件名内容
aaaaa#
bbbbb#
ccccc#
如果在DOS下键入
cpyabc<
则程序输出【13】。
(14)若输入3个整数3,2,1,则下面程序的输出结果就是【14】。
voidsub(n,uu)
intn,uu[];
{intt;
t=uu[n--];
t+=3*uu[n];
n=n++;
if(t>
=10)
{uu[n++]=t/10;
uu[n]=t%10;
elseuu[n]=t;
main()
{inti,n,aa[10]={0,0,0,0,0,0}
scanf("
%d%d%d"
&
n,&
aa[0],&
aa[1]);
for(i=1;
n;
i++)sub(i,aa);
for(i=0;
=n;
aa[i]);
(15)若有以下定义:
doublew[10];
则w数组元素下标的上限为【15】,下限为【16】。
(16)以下程序统计从终端输入的字符中每个大写字母的个数。
用#号作为输入结束标志,请填空。
ctype、h>
{intnum[26],i;
charc;
26;
i++)num[i]=0;
while(【17】!
)/*统计从终端输入的大写字母个数*/
if(isupper(c))num[c-65]+=1;
i++)/*输出大写字母与该字母的个数*/
if(num[i])printf("
%c:
%d\n,i【18】,num[i]);
(17)下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据。
请填空。
#include<
getone(s)
int**s;
{*s=(int*)malloc(sizeof(int));
assone(a)
int*a;
{scanf("
【19】);
outone(b)
int*b;
【20】);
main()
{int*p;
getone(&
p);
assone(p);
outone(p);
『完』
C试卷参考答案
一`选择题(
(1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)C
(2)D
(3)B
(4)A
(5)D
(6)D
(7)B
(8)C
(9)C
(10)A
(11)B
(12)C
(13)A
(14)C
(15)C
(16)C
(17)D
(18)C
(19)A
(20)D
(21)B
(22)D
(23)C
(24)B
(25)B
(26)A
(27)C
(28)C
(29)D
(30)B
(31)B
(32)A
(33)B
(34)D
(35)D
(36)B
(37)A
(38)D
(39)A
(40)A
(41)B
(42)B
(43)B
(44)B
(45)A
(46)A
(47)A
(48)C
(49)C
(50)C
二`填空题(每空2分,共40分)
(1)01111011
(2)32
(3)内存或存储器或存储
(4)IBMDOS、COM允许用小写字母
(5)字段或字段名
(6)16
(7)-850,2,0若遗漏逗号扣1分
(8)28
(9)2,5,1,2,3,-2若遗漏逗号扣1分
(10)IJKLEFGHABCD若在字符间嵌入空格扣1分若在字符间嵌入空格扣1分
(12)QuickC若大写字母写成小写字母,或小写字母写成大写字母扣1分
(13)AAAABBBBCCCC若在字符间嵌入空格扣1分若用小写字母扣1分
(14)2721或2721
(15)9
(16)0
(17)(c=getchar())注意,外层括号不得遗漏
(18)+65或+'
(19)a或&
*a
(20)*b