c语言试题1 4Word下载.docx
《c语言试题1 4Word下载.docx》由会员分享,可在线阅读,更多相关《c语言试题1 4Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
则++(*p)的值是【1】.
6
二、单项选择共15题(共计30分)
第1题(2.0分)题号:
201
当定义一个结构体变量时,系统分配给它的内存是()。
A:
各成员所需内存量的总和
B:
结构中第一个成员所需内存量
C:
结构中最后一个成员所需内存量
D:
成员中占内存量最大者所需的容量
A
第2题(2.0分)题号:
133
若有以下定义:
chars='
\092'
;
则该语句()。
使s的值包含1个字符
定义不合法,s的值不确定
使s的值包含4个字符
使s的值包含3个字符
B
第3题(2.0分)题号:
712
若有说明:
intn=2,*p=&
n,*q=p;
,则以下非法的赋值语句是()。
p=q;
*p=*q;
n=*q;
p=n;
D
第4题(2.0分)题号:
489
下列标识符中,不合法的C语言用户自定义标识符是()。
printf
enum
_
sin
第5题(2.0分)题号:
579
在C语言中,char型数据在内存中的存储形式是()。
补码
反码
原码
ASCII码
第6题(2.0分)题号:
138
以下程序的输出结果是()。
main()
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;
j=a++;
k=b;
i=%d,j=%d,k=%d\n"
i,j,k);
i=2,j=1,k=3
i=1,j=1,k=2
i=4,j=2,k=4
i=1,j=1,k=3
第7题(2.0分)题号:
674
以下错误的描述是:
函数调用可以()。
出现在执行语句中
出现在一个表达式中
做为一个函数的实参
做为一个函数的形参
第8题(2.0分)题号:
659
凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
自动(auto)
静态(static)
外部(extern)
寄存器(register)
第9题(2.0分)题号:
538
位字段数据的单位是()位。
十六进制
八进制
二进制
十进制
C
第10题(2.0分)题号:
498
下列运算符中是C语言关系运算符的是()。
~
!
=
第11题(2.0分)题号:
515
inti,j,a[2][3];
按照数组a的元素在内存的排列次序,不能将数
1,2,3,4,5,6存入a数组的是()。
for(i=0;
i<
2;
i++)for(j=0;
j<
3;
j++)a[i][j]=i*3+j+1;
j++)a[j][i]=j*3+i+1;
6;
i++)a[i/3][i%3]=i+1;
for(i=1;
=6;
i++)a[i][i]=i;
第12题(2.0分)题号:
717
fscanf函数的正确调用形式是()。
fscanf(fp,格式字符串,输出表列);
fscanf(格式字符串,输出表列,fp);
fscanf(格式字符串,文件指针,输出表列);
fscanf(文件指针,格式字符串,输入表列);
第13题(2.0分)题号:
511
求平方根函数的函数名为()。
cos
abs
pow
sqrt
第14题(2.0分)题号:
730
若以"
a+"
方式打开一个已存在的文件,则以下叙述正确的是()。
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
文件打开时,原有文件内容被删除,只可作写操作
以上各种说法皆不正确
第15题(2.0分)题号:
638
设有数组定义:
chararray[]="
China"
则数组array所占的
空间为()。
4个字节
5个字节
6个字节
7个字节
三、程序填空共5题(共计30分)
第1题(6.0分)题号:
479
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二
个小孩2块,第三个小孩8块,第四个小孩22块,第五个
小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩
6块,第九个小孩14块,第十个小孩20块。
然后所有的小孩
同时将自己手中的糖分一半给左边的小孩;
糖块数为奇数的人
可向老师要一块。
问经过这样几次调整后大家手中的糖的块数
都一样?
每人各有多少块糖?
-------------------------------------------------------*/
#include<
stdio.h>
{
inti,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20};
/***********SPACE***********/
while(【?
】)
{
for(i=1;
i<
=10;
i++)
a[i-1]=a[i-1]/2+a[i]/2;
a[10]=a[10]/2+a[0];
if(【?
】)a[i]++;
10;
if(a[i]!
=a[i+1])【?
】;
if(i==10)
break;
else
{
a[0]=0;
count++;
}
printf("
count=%dnumber=%d\n"
count,a[1]);
=======(答案2)=======
a[i]%2==1
=======(答案3)=======
break
第2题(6.0分)题号:
488
功能:
有一组基数值(正整数),输入一个正整数(小于100),
问:
如果该数由基数值相加构成(每个基数可以重复使用)
,那么最少可能利用的基数是多少个。
-------------------------------------------------------*/
stdlib.h>
#defineMAXSiZE100
/*#definemin(a,b)((a)<
=(b)?
(a):
(b))*/
voidmain(void)
{
intnum[MAXSiZE+1];
intbase[]={1,3,4};
intk=sizeof(base)/sizeof(int);
intn;
inti,j,MIN;
charline[100];
\n============================"
);
\n\nBaseValues:
"
for(i=0;
i<
k;
%d"
base[i]);
\n\nYourinputplease-->
gets(line);
n=atoi(line);
num[0]=0;
num[1]=1;
for(i=2;
=n;
i++)
【?
for(j=0;
j<
j++)
if(i>
=base[j])
MIN=min(num[i-base[j]]+1,MIN);
}
\n\nMinimum=%d"
【?
】);
MIN=n
num[i]=MIN
num[n]
第3题(6.0分)题号:
以下程序是用选择法对10个整数按升序排序。
/***********SPACE***********/
【?
】
inti,j,k,t,a[N];
for(i=0;
=N-1;
i++)
scanf("
%d"
&
a[i]);
N-1;
for(j=i+1;
j++)
if(a[j]<
a[k])k=j;
】)
t=a[i];
a[i]=a[k];
a[k]=t;
outputthesortedarray:
\n"
%5d"
a[i]);
#defineN10
k=i
N
=========或=========
N>
j
=N-1
N-1>
=j
=======(答案4)=======
k!
=i
第4题(6.0分)题号:
472
现有两组有序数组(增序),x[i]、y[j]代表数组x、y的
任一元素,问满足x[i]>
y[i]的元素对有多少个?
intdominance_count(intf[],intg[],intm,intn)
intindex_f,index_g;
intcount;
count=index_f=index_g=0;
while(index_f<
m&
index_g<
n)
if(f[index_f]<
=g[index_g])
index_f++;
else
index_g++;
count+=【?
intx[]={1,6,8};
intnx=sizeof(x)/sizeof(int);
inty[]={4,5,7};
intny=sizeof(y)/sizeof(int);
intdominance_count(int[],int[],int,int),i;
\nDominanceCountoftwoincreasingArrays\n"
\n#Array1Array2"
\n----------------"
nx;
\n%3d%10d%10d"
i,x[i],y[i]);
\n\nThereare%dDominancePairs."
m-index_f
returncount
dominance_count(x,y,nx,ny)
第5题(6.0分)题号:
404
从键盘上输入两个复数的实部与虚部,求出并输出它们的
和、差、积、商。
#include<
voidmain()
floata,b,c,d,e,f;
输入第一个复数的实部与虚部:
"
%f,%f"
a,&
b);
输入第二个复数的实部与虚部:
c,&
d);
f=b+d;
相加后复数:
实部:
%f,虚部:
%f\n"
e,f);
e=a*c-b*d;
相乘后复数:
e=(a*c+b*d)/(c*c+d*d);
相除后复数:
e=a+c
e=c+a
f=a*d+b*c
f=a*d+b*c
f=a*d+b*c
f=(b*c-a*d)/(c*c+d*d)
f=(b*c-a*d)/(c*c+d*d)
f=(b*c-a*d)/(c*c+d*d)
四、程序设计共2题(共计20分)
第1题(10.0分)题号:
365
/*------------------------------------------------
【程序设计】
--------------------------------------------------
求1到100之间的偶数之积。
------------------------------------------------*/
voidwwjt();
doublefun(intm)
/**********Program**********/
/**********End**********/
ji=%f\n"
fun(100));
wwjt();
voidwwjt()
FILE*IN,*OUT;
intiIN,i;
doubledOUT;
IN=fopen("
in.dat"
"
r"
if(IN==NULL)
PleaseVerifyTheCurrerntDir..itMayBeChanged"
OUT=fopen("
out.dat"
w"
if(OUT==NULL)
PleaseVerifyTheCurrentDir..itMayBeChanged"
5;
fscanf(IN,"
iIN);
dOUT=fun(iIN);
fprintf(OUT,"
dOUT);
fclose(IN);
fclose(OUT);
----------------------
doubley=1;
inti;
for(i=1;
=m;
if(i%2==0)y*=i;
returny;
第2题(10.0分)题号:
350
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
conio.h>
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
intt[M][N]={{22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
intp[N],i,j,k;
Theoriginaldatais:
M;
for(j=0;
N;
%6d"
t[i][j]);
fun(t,p);
\nTheresultis:
for(k=0;
k<
k++)printf("
%4d"
p[k]);
voidwwjt()
inti,j,array[3][4],p[4];
FILE*rf,*wf;
rf=fopen("
"
);
wf=fopen("
for(i=0;
3;
for(j=0;
4;
fscanf(rf,"
&
array[i][j]);
fun(array,p);
fprintf(wf,"
%7d"
p[j]);