c语言试题1 5.docx
《c语言试题1 5.docx》由会员分享,可在线阅读,更多相关《c语言试题1 5.docx(17页珍藏版)》请在冰豆网上搜索。
c语言试题15
一、填空共5题(共计20分)
第1题(4.0分)题号:
601
若有以下数组a,数组元素:
a[0]~a[9],其值为
941282107513
该数组中下标最小的元素名字是【1】.答案:
(答案1)a[0]
第2题(4.0分)题号:
327
执行语句charstr[81]="abcdef";后,字符串str结束标志存储在str[【1】]
(在括号内填写下标值)中.答案:
(答案1)6
第3题(4.0分)题号:
1568
设a=3,b=4,c=5,则表达式!
(a+b)+c-1&&b+c/2的值为【1】.答案:
(答案1)1
第4题(4.0分)题号:
294
C语言的三种基本结构是【1】结构、选择结构、循环结构.
答案:
(答案1)顺序
第5题(4.0分)题号:
1555
若所用变量都已正确定义,请填写以下程序段的输出结果【1】.
for(i=1;i<=5;i++);
printf("OK\n");
答案:
(答案1)OK
二、单项选择共15题(共计30分)
第1题(2.0分)题号:
109
C语言中,double类型数据占()。
A:
1个字节
B:
2个字节
C:
4个字节
D:
8个字节
答案:
D
第2题(2.0分)题号:
201
当定义一个结构体变量时,系统分配给它的内存是()。
A:
各成员所需内存量的总和
B:
结构中第一个成员所需内存量
C:
结构中最后一个成员所需内存量
D:
成员中占内存量最大者所需的容量答案:
A
第3题(2.0分)题号:
527
全局变量的定义不可能在()。
A:
函数内部
B:
函数外面
C:
文件外面
D:
最后一行答案:
A
第4题(2.0分)题号:
498
下列运算符中是C语言关系运算符的是()。
A:
~
B:
!
C:
&
D:
!
=
答案:
D
第5题(2.0分)题号:
169
下列说法不正确的是()。
A:
主函数main中定义的变量在整个文件或程序中有效
B:
不同函数中,可以使用相同名字的变量
C:
形式参数是局部变量
D:
在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
答案:
A
第6题(2.0分)题号:
671
C语言规定:
简单变量做实参时,它和对应形参之间的数据传递方式是()。
A:
地址传递
B:
单向值传递
C:
由实参传给形参,再由形参传回给实参
D:
由用户指定的传递方式
答案:
B
第7题(2.0分)题号:
510
inta=3,b=2,c=1;
if(a>b>c)a=b;
elsea=c;
则a的值为()。
A:
3B:
2C:
1D:
0
答案:
C
第8题(2.0分)题号:
675
关于建立函数的目的,以下正确的说法是()。
A:
提高程序的执行效率
B:
提高程序的可读性
C:
减少程序的篇幅
D:
减少程序文件所占内存
答案:
B
第9题(2.0分)题号:
540
指针变量p进行自加运算(即执行p++;)后,地址偏移值为2,则其
数据类型为()。
A:
int
B:
float
C:
double
D:
char
答案:
A
第10题(2.0分)题号:
524
与实际参数为实型数组名相对应的形式参数不可以定义为()。
A:
floata[];
B:
float*a;
C:
floata;
D:
float(*a)[3];
答案:
C
第11题(2.0分)题号:
721
fseek函数的正确调用形式是()。
A:
fseek(文件类型指针,起始点,位移量)
B:
fseek(fp,位移量,起始点)
C:
fseek(位移量,起始点,fp)
D:
fseek(起始点,位移量,文件类型指针)答案:
B
第12题(2.0分)题号:
177
以下描述中,正确的是()。
A:
预处理是指完成宏替换和文件包含中指定的文件的调用
B:
预处理指令只能位于C源文件的开始
C:
C源程序中凡是行首以#标识的控制行都是预处理指令
D:
预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备
答案:
C
第13题(2.0分)题号:
548
char*match(charc)是()。
A:
函数定义的头部
B:
函数预说明
C:
函数调用
D:
指针变量说明答案:
A
第14题(2.0分)题号:
515
inti,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数
1,2,3,4,5,6存入a数组的是()。
A:
for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B:
for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
C:
for(i=0;i<6;i++)a[i/3][i%3]=i+1;
D:
for(i=1;i<=6;i++)a[i][i]=i;答案:
D第15题(2.0分)题号:
732
若执行fopen函数时发生错误,则函数的返回值是()。
A:
地址值
B:
0
C:
1
D:
EOF
答案:
B
三、程序填空共5题(共计30分)
第1题(6.0分)题号:
394
功能:
用条件编译方法实现以下功能。
输入一行电报文字,可以任
选两种方式输出,一种为原文输出;另一种将字母变成下
一个字母(如a变成b,C变成D,其他字符不变)输出。
#include
#defineCHANGE
main()
{
/***********SPACE***********/
charstr[80],【?
】=str;
printf("inputstring:
");
/***********SPACE***********/
gets【?
】;
printf("Outputstring:
");
#ifdefCHANGE
for(;*s!
='\0';s++)
{
if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
{
(*s)++;
if(*s>'Z'&&*s<'Z'+2)
/***********SPACE***********/
【?
】;
if(*s>'z')
/***********SPACE***********/
*s=【?
】;
}
}
printf("%s\n",str);
#else
printf("%s\n",str);
#endif
}答案:
(答案1)*s
(答案2)(str)或(s)
(答案3)*s='A'
(答案4)'a'
第2题(6.0分)题号:
461
功能:
从键盘输入一个字符串,将小写字母全部转换成大写字母,
然后输出到一个磁盘文件“test”中保存。
输入的字符串
以!
结束。
#include
#include
#include
main()
{
FILE*fp;
charstr[100];
inti=0;
if((fp=fopen("test","w"))==NULL)
{
printf("cannotopenthefile\n");
exit(0);
}
printf("pleaseinputastring:
\n");
gets(str);
/***********SPACE***********/
while(【?
】)
{
if(str[i]>='a'&&str[i]<='z')
/***********SPACE***********/
【?
】;
fputc(str[i],fp);
i++;
}
fclose(fp);
/***********SPACE***********/
fp=fopen("test",【?
】);
fgets(str,strlen(str)+1,fp);
printf("%s\n",str);
fclose(fp);
}答案:
(答案1)str[i]!
='!
'(答案2)str[i]=str[i]-32
或str[i]=str[i]-32
(答案3)"r"或"wr"
或"wr+"
第3题(6.0分)题号:
490
功能:
利用函数计算连续的数组元素累加和的最大值。
如果最大
值是负数则返回0;
#include
/***********SPACE***********/
intmax_sum(【?
】,intn)
{
intmax_ending_here=0;
intmax_so_far=0;
inti;
for(i=0;i{
if(max_ending_here+x[i]<0)
/***********SPACE***********/
【?
】;
else
max_ending_here+=x[i];
if(max_ending_here>max_so_far)
max_so_far=max_ending_here;
}
/***********SPACE***********/
【?
】;
}
#include
voidmain(void)
{
intx[]={2,-3,1,-1,3,-2,-3,3};
intn=sizeof(x)/sizeof(int);
inti;
printf("\nMaximumConsecutiveElementsSumProgram");
printf("\n========================================");
printf("\n\nGivenArray:
");
for(i=0;iprintf("%4d",x[i]);
printf("\n\nMaximumSumis%d",max_sum(x,n));
}答案:
(答案1)intx[]
(答案2)max_ending_here=0(答案3)returnmax_so_far
第4题(6.0分)题号:
474
功能:
读入一行字符(如:
a、...y、z),按输入时的逆序建立一个
链接式的结点序列,即先输入的位于链表尾,然后再按输入
的相反顺序输出,并释放全部结点。
#include
#include
main()
{
structnode
{
charinfo;
structnode*link;
}*top,*p;
charc;
top=NULL;
/***********SPACE***********/
while((c=【?
】)!
='\n')
{
p=(structnode*)malloc(sizeof(structnode));
p->info=c;
p->link=top;
/***********SPACE***********/
【?
】;
}
while(top)
{
p=top;
/***********SPACE***********/
【?
】;
putchar(p->info);
free(p);
}
}答案:
(答案1)getchar()
(答案2)top=p(答案3)top=top->link
第5题(6.0分)题号:
31
功能:
用冒泡法对数组a进行由小到大的排序。
#include
voidfun(inta[],intn)
{
inti,j,t;
/***********SPACE***********/
for(j=0;【?
】;j++)
/***********SPACE***********/
for(i=0;【?
】;i++)
/***********SPACE***********/
if(【?
】)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
main()
{
inti,a[10]={3,7,5,1,2,8,6,4,10,9};
/***********SPACE***********/
【?
】;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}答案:
(答案1)j<=n-1
或n-1>=j或j<=-1+n或-1+n>=j或jj
或j或n-j-1>i或i或n-1-j>i或i<=n-j-2
或i<=n-2-j(答案3)a[i]>a[i+1]或a[i+1]四、程序设计共2题(共计20分)
第1题(10.0分)题号:
316
功能:
统计出若干个学生的平均成绩,最高分以及得最高
分的人数。
例如:
输入10名学生的成绩分别为92,87,68,56,92,
84,67,75,92,66,则输出平均成绩为77.9,
最高分为92,得最高分的人数为3人。
#include
voidwwjt();
floatMax=0;
intJ=0;
floatfun(floatarray[],intn)
{/**********Program**********/
/**********End**********/
}
main()
{
floata[10],ave;
inti=0;
for(i=0;i<10;i++)
scanf("%f",&a[i]);
ave=fun(a,10);
printf("ave=%f\n",ave);
printf("max=%f\n",Max);
printf("Total:
%d\n",J);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
floatiIN[10],iOUT;
intiCOUNT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
for(iCOUNT=0;iCOUNT<10;iCOUNT++)
fscanf(IN,"%f",&iIN[iCOUNT]);
iOUT=fun(iIN,10);
fprintf(OUT,"%f%f\n",iOUT,Max);
fclose(IN);
fclose(OUT);
}答案:
----------------------
inti;floatsum=0,ave;
Max=array[0];
for(i=0;i{if(Maxsum=sum+array[i];}
ave=sum/n;
for(i=0;iif(array[i]==Max)J++;
return(ave);
----------------------
第2题(10.0分)题号:
363
功能:
求一个给定字符串中的字母的个数。
#include
voidwwjt();
intfun(chars[])
{
/**********Program**********/
/**********End**********/
}
main()
{
charstr[]="Bestwishesforyou!
";
intk;
k=fun(str);
printf("k=%d\n",k);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
charsin[80];
intiOUT,i;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%s",sin);
iOUT=fun(sin);
2.以d结尾的词,把d变成t。
如:
build—built,lend—lent,send—sent,spend—spent}
dig挖dugdugfprintf(OUT,"%d\n",iOUT);
6.含有元音字母o/i的词,将o/i变成a。
如:
sing—sang,give—gave,sit—sat,drink—drankfclose(IN);
go去wentgonefclose(OUT);
forgive原谅forgaveforgiven}
答案:
----------------------
overcome克服overcameovercomeinti,k=0;
light点着lit/lightedlit/lightedfor(i=0;s[i]!
='\0';i++)
awake醒来awokeawaked/awokenif(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
burn燃烧burnt/burnedburnt/burnedk++;
returnk;
----------------------
lean倾斜leant/leanedleant/leaned