84C语言上机考试试题18.docx
《84C语言上机考试试题18.docx》由会员分享,可在线阅读,更多相关《84C语言上机考试试题18.docx(11页珍藏版)》请在冰豆网上搜索。
84C语言上机考试试题18
C语言上机考试试题-18
1.选择题(评分标准20分,每小题2分)
1.设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句
s=c1==c2;t=c3>c4;后,s,t的值为:
________。
(A)1,2 (B)1,1 (C)0,1 (D)1,0
2.下列语句不具有赋值功能的是________。
(A)a*=b (B)x=1 (C)a+b (D)a++
3.C语言程序中,当出现条件分支语句if~else时,else与________组成配对关系
(A)同一复合语句内部的if (B)在其之前任意的if
(C)在其之前未配对的最近的if (D)首行位置相同的if
4.下列数组定义方式不正确的语句是________。
(A)char x[5];
(B)char y[]={'h','e','l','l','o'};
(C)int x[10]={12,13,14,15};
(D)int y[];
5.若有如下定义和语句,且0<=i<5,下面________是对数值为3的数组元素的引用。
int a[]={1,2,3,4,5},*p,i;
p=a;
(A)*(a+2) (B)a[p-3] (C)p+2 (D)a+3
6.若有如下语句,下列________表达式的值为真。
a=5; b=8; c=10; d=0;
(A)a*2>8+2 (B)a&&d (C)(a*2-c)||d (D)a-b 7.下列字符数组长度为5的是________。
(A)chara[]={'h','a','b','c','d'}; (B)charb[]={'h','a','b','c','d','\0'};
(C)charc[10]={'h','a','b','c','d'};(D)chard[6]={'h','a','b','c',\0'};
8.执行下列程序后,其结果为________。
int a[]={2,4,6,8,10,12};*p;
p=a;
*(p+4)=2;
printf(“%d,%d\n”,*p,*(p+4));
(A)0,10 (B)0,2 (C)2,10 (D)2,2
9.有下列结构体,对该结构体变量stu的成员项引用不正确的是________。
struct student
{ int m;
float n;
}stu,*p;
(A)stu.n (B)p->m (C)(*p).m (D)p.stu.n
10.下列函数中不能用于对磁盘文件进行输入输出操作的是________。
(A)fscanf() (B)printf() (C)fgetc() (D)fputs()
套数号
答案
18
1.D2.C3.C4.D5.A6.D7.A8.D9.D10.B
2.判断题(评分标准20分,每小题2分)
1.在C语言中,int、char和short三种类型数据所占用的内存均为2个字节。
2.在C语言中,数组名代表数组中最后一个元素的地址。
3.ASCII文件是把内存中的数据按照其在内存中的存储形式原样输出到磁盘上存放。
4.C语言中字符串的结束符是'\0'。
5.若打开文件的方式为“r”而该文件已经存在,则文件中原有数据被清空。
6.在定义inta[5]后,可以引用a[0]到a[5]中的元素。
7.不能将一个结构体变量作为一个整体进行输入输出。
8.在C语言中,所有的变量在使用前都必须予以定义。
9.用结构体变量作实参,形参也必须是同类型的结构体变量。
10.如果x套数号
答案
19
1.F2.F3.F4.T5.F6.F7.T8.T9.T10.F
3.填空题(评分标准10分,每小题2分)
1.以0x开头的C整型常数是_________进制数。
2.运算表达式!
(10<9)||(6>10)的结果为_________。
3.假设所有变量均为整型,则表达式(a=2,b=5,b+1,a+b)的值是_________。
4.设x、y和z是int型变量,且x=3,y=4,z=5;,则下面表达式x||y+z&&y-z的值是_________。
5.若有定义intk=7,x=12;,则表达式(x%=(k%=5))的值是_________。
第4套
(1)
16
(2)
1
(3)
7
(4)
1
(5)
0
4.程序改错题(评分标准20分,每小题5分)
1.下列给定的程序中,函数fun()的功能是:
计算并输出500以内最大的6个能被7或11整除的自然数之和。
#include
#include
intfun(intk)
{intm=0,mc=0;
while((k>=2)&&(mc<6)){
if((k%7=0)||(k%11=0))/*$*/
{printf("%d\n",k);
m+=k;
mc++;
}
k--;
}
returnm;
}
main()
{printf("%d",fun(500));
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句if((k%7=0)||(k%11=0))有错误,请改正(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
计算并输出500以内最大的6个能被7或11整除的自然数之和。
答案:
if((k%7==0)||(k%11==0))
运行样例1行
运行结果:
2925
2.下列程序中,函数fun()的功能是:
用选择法对数组中的n个元素按从大到小的顺序进行排序。
#include
#defineN20
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;j{p=j;
for(i=j;iif(a[i]>a[p])
p=i;
t=a[p];
a[p]=a[j];
a[p]=t;/*$*/
}
}
main()
{inta[N]={11,32,-5,2,14,100,50,48,71,30},i,m=10;
fun(a,m);
for(i=0;iprintf("%d",a[i]);
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句a[p]=t;有错误,请改正(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
用选择法对数组中的n个元素按从大到小的顺序进行排序。
答案:
a[j]=t;
运行样例1行
运行结果:
100715048323014112-5
3.程序中函数fun()的功能是:
依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
#include
#include
voidfun(char*s)
{inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&s[i]<='z'))/*$*/
s[j++]=s[i];
s[j]='\0';
}
main()
{charitem[80]="abc456d8er9";
fun(item);
printf("%s",item);
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&s[i]<='z'))有错误,请改正(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
答案:
:
if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))
运行样例1行
运行结果:
abcder
4.下列给定程序中函数fun()的功能是:
从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。
#include
#include
#defineN20
intfun(floats[],intn,float*aver)
{
floatave,t=0;
intcount=0,k,i;
for(k=0;kt+=s[k];
ave=t/n;
for(i=0;iif(s[i]>ave)
count++;
aver=ave;/*$*/
returncount;
}
main()
{floats[30]={85,65.5,69,95.5,87,55,62.5,75},aver;
printf("%.2f%d",aver,fun(s,8,&aver));
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句aver=ave;有错误,请改正(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。
答案:
*aver=ave;
运行样例1行
运行结果:
74.314
5.程序填空(评分标准10分,每小题5分)
1.程序运行结果为输出下边图形,请填写程序空白处。
*
***
*****
*******
*****
***
*
#include
main()
{inti,j,k;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=1;i<=3;i++)
{for(j=1;j<=i;j++)
printf("");
for(k=1;/*$*/;k++)
printf("*");
printf("\n");
}
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
填写程序,实现输出下边图形。
*
***
*****
*******
*****
***
*
答案:
k<=2*(4-i)-1
运行样例7行
运行结果:
*
***
*****
*******
*****
***
*
2.请填空函数fun()中的语句,该函数的功能是:
分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。
例如,输入aeiouAOUpqrt,运行结果为A:
2E:
1I:
1O:
2U:
2other:
4。
#include
voidfun(char*str,intbb[])
{char*p=str;
inti=0;
for(i=0;i<6;i++)
bb[i]=0;
while(*p)
{
switch(*p)
{
case'A':
case'a':
bb[0]++;break;
case'E':
case'e':
bb[1]++;break;
case'I':
case'i':
bb[2]++;break;
case'O':
case'o':
bb[3]++;break;
case'U':
case'u':
bb[4]++;break;
default:
bb[5]++;}
/*$*/
}
}
main()
{charstr[]="aeiouAOUpqrt";
charss[6]="AEIOU";
inti,bb[6];
fun(str,bb);
for(i=0;i<5;i++)
printf("%c:
%d",ss[i],bb[i]);
printf("other:
%d",bb[i]);
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。
例如,输入aeiouAOUpqrt,运行结果为A:
2E:
1I:
1O:
2U:
2other:
4。
答案:
p++;
运行样例1行
运行结果:
A:
2E:
1I:
1O:
2U:
2other:
4
6.程序设计(评分标准20分,每小题10分)
1.请编写一个函数fun(),它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。
若两个字符串长度相等,则返回第1个字符串。
例如在主函数中输入字符串:
nanjing,nanchang,调用函数fun()后将返回输出:
nanjing。
参考答案:
#include
char*fun(char*s,char*t)
{inti,j;
for(i=0;s[i]!
='\0';i++);
for(j=0;t[j]!
='\0';j++);
if(i<=j)
returns;
else
returnt;
}
main()
{chara[20],b[10];
gets(a);
gets(b);
printf("%s",fun(a,b));
}
运行样例3行
运行样例1:
nanjing
nanchang
运行结果:
nanjing
2.请编写函数fun(),它的功能是:
求出1到30之内能被5或13整除的数,并将它们放在指定的aa数组中,同时通过变量n返回这些数的个数。
要求在主函数中先输出“能被5或13整除的数”,然后输出“这些数的个数”,输出要求在同一行上。
参考答案:
#include
voidfun(int*a,int*n)
{inti,j=0;
for(i=1;i<=30;i++)
if(i%5==0||i%13==0)
a[j++]=i;
*n=j;
}
main()
{intaa[30],n,k;
fun(aa,&n);
for(k=0;kprintf("%d",aa[k]);
printf("%d",n);
}
运行样例1行
运行结果:
5101315202526308