文档介绍:该【C语言程序设计试卷及答案 】是由【我是开始】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【C语言程序设计试卷及答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
C语言程序设计笔试试题
笔试综合
题号一二三四五六总分
(70%)(30%)
分数
号试卷说明:
学1。笔试卷面总分100分,取卷面成绩的70%计入总分;
(10%)和实验成绩(20%)之和,占总分的30%;
3。答题时禁止拆开试卷钉,试卷背面即为草稿纸;
4。答题时间120分钟。
一、单项选择题。将正确答案填入下面框中.
名(本题16分,每小题1分)
姓
题号12345678
答案
题号9101**********
答案
意
main()
行
{inta=1,b=0;
为
if(!a)b++;
规
范elseif(a==0)if(a)b+=2;
elseb+=3;
printf(“%d\n”,b);
遵
}则程序输出(A)。
守
考
A)0B)1C)2D)3
试
:inta;longb;doublex,y;则下列正确的是(A).
纪
A)a%(int)(x—y)B)a=x!=yC)(a*y)%bD)y=x+y=x
律
(*p)[3];则下列说法正确的是(C)。
第1页(共14页):.
A)定义了基类型为int的三个指针变量
B)定义了一个名为*pt、具有三个元素的整型数值
C)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
D)定义了基类型为int的具有三个元素的整型数组
4。有以下程序段
main()
{intx=10;
while(x-—);
printf("x=%d\n”,x);}
则最后的输出结果是:(B)。
A)x=0B)x=-1C)x=1D)while构成无限循环
5。有以下程序:
intfun()
{staticintx=1;
x*=2;
returnx;}
main()
{inti,s=1;
for(i=1;i<=2;i++)s=fun();
printf(“%d\n”,s);}
执行后的输出结果为(D)。
A)0B)1C)8D)4
(){
intk=011;
printf(”%d\n",k++);}
}程序输出结果是(D)
A)12B)11C)10D)9
,不合法的是(C)。
A)_2B)a_bC)a—-bD)AaBc
8。C语言允许函数类型默认定义,此时该函数值隐含的类型是(B).
A)floatB)intC)longD)double
9。以下程序段运行结果是(B).
enumweekday{aa,bb=2,cc,dd,ee}week=ee;
第2页(共14页):.
printf(“%d\n“,week);
A)4B)5C)eeD)0
,不正确的是(B)。
A)不同函数中可以使用相同名字变量B)函数可以嵌套定义
C)函数可以没有返回值D)程序由函数组成
11。若有定义语句:doublex[5]={,2。0,,4。0,},*p=x;则错误引用x数
组元素的是(D)。
A)*pB)*xC)*(p+1)D)x[5]
(B).
inta=6;
printf(“%d\n“,a〉>1);
A)12B)3C)6D)1
:doublex,y,*px,*py;执行了px=&x;py=&y;之后,正确的输
入语句是(B).
A)scanf(“%lf%lf”,x,y);B)scanf(“%lf,%lf”,px,py);
C)scanf(“%f%f”,&x,&y);D)scanf(“%f%f”,x,y);
(D)。
charstr[]=“abc“;
printf(“%d,%d\n“,strlen(str),sizeof(str));
A)6,3B)3,3C)10,10D)3,10
(A)。
#definef(x)x*x*x
main()
{inta=1,b,c;
b=f(a+1);c=f((a+1));
printf(“%d,%d\n“,b,c);}
A)4,8B)8,4C)8,8D)4,4
16。有以下程序:
main()
{FILE*f;
f=fopen(“fa。txt“,“w“);
fprintf(f,“day“);
fclose(f);}
第3页(共14页):.
:hello,则运行以上程序后,文件fa。txt中的
内容为(A)。
A)dayB)hellodayC)dayloD)dayhello
二、填空题。请按序号把答案填入下面框中,
不允许出框线。(本题20分,每空2分)
题号答案题号答案
1a[row][col]6k<=n
2x%10或x%100%107k++
323hE45a8m%i==0&&n%i==0
4fun()9p=p—〉next
5m++10s[i]或’\0'
1。以下fun函数功能是在N行M列的整型二维数组中,选出一个最大值作为函数
值返回。
intfun(inta[N][M])
{inti,j,row=0,col=0;
for(i=0;i〈N;i++)
for(j=0;j〈M;j++)
if(a[i][j]>a[row][col]){row=i;col=j;}
return(【1】);}
2。以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位,百
位的顺序拆分输出。
main()
{intx=123;
printf(“%d—%d-%d\n”,【2】,x/10%10,x/100);}
3。下列程序运行时,若输入23he45a〈回车>,输出结果是【3】
#include〈〉
main()
{chara=0;ch;
while((ch=getchar())!=’\n’)
第4页(共14页):.
{if(a%2!=0&&(ch〉='a’&&ch〈='z’))ch=ch-‘a'+’A’;
a++;putchar(ch);}
printf(“\n”);}
,通过函数fun输入字符并统计输入字符个数。用字符$作为
输入结束标志.
#include<〉
long【4】;/*函数声明语句*/
main()
{longn;
n=fun();printf(“n=%ld\n”,n);}
longfun()
{longm;
for(m=0;getchar()!=’$’;【5】);
returnm;}
5。有以下程序段,且变量已正确定义和赋值
for(s=,k=1;k〈=n;k++)s=s+/(k*(k+1));
printf("s=%f\n\n”,s);
请填空,是下面程序段的功能与之完全相同
s=;k=1;
while(【6】){s=s+/(k*(k+1));【7】;}
printf("s=%f\n\n”,s);
。
fun(intm,intn)
{inti=1,t;
for(;i<=m&&i<=n;i++)
if(【8】)t=i;
return(t);}
,并在while循环中输出链
表节点数据域中的数据。
structnode
{intdata;structnode*next;}
main()
{structnodea,b,c,*p,*q;
第5页(共14页):.
a。data=10;b。data=20;c。data=30;p=&a;
=&b;b。next=&c;c。next=NULL;q=p;
while(p){printf(“%d,”,p->data);【9】;}
printf(“\n”);}
8。以下程序的功能是:删除字符串中所有的空格。
main()
{chars[20]="howareyou!";
inti,j;
for(i=j=0;s[i]!=’\0';i++)
if(s[i]!=’’){s[j]=s[i];j++;}
s[j]=【10】;}
三、请把下列程序运行结果填入答案框中,不允
许出框线,用“↙"表示回车。(本题24分,每小题3分)
题号12345678
答案1244364**********
1。main()
{inti,j,a[][2]={1,2,3,4};
for(i=0;i〈2;i++)
for(j=i;j<2;j++)printf(“%d”,a[i][j]);
printf(“\n”);}
2。main()
{charch[]=”453cd34”;
inti,s=0;
for(i=0;ch[i]>'0’&&ch[i]<’9’;i+=2)
s=10*s+ch[i]-'0';
printf(“%d\n",s);}
(intn)
{if(n>2)return(fib(n—1)+fib(n-2));
elsereturn(2);}
voidmain()
{printf(“%d\n”,fib(4));}
第6页(共14页):.
()
{unionexample{
struct
{intx;
inty;
}in;
inta;
intb;
}e;
e。a=2;=1;
e。=+
e。=e。a*;
printf(“%d\n",e。);}
5。structNODE
{intk;
structNODE*link;};
voidmain()
{structNODEm[3],*p=m,*q=m+2;
inti=0;
while(p!=q){
p->k=++i;p++;
q—>k=i++;q——;}
q—>k=i;
for(i=0;i〈3;i++)printf(“%d”,m[i]。k);
printf(“\n”);}
6。main()
{intj,a[]={1,3,5,7,9},*p=a+3;
for(j=3;j;j——)
{switch(j)
{case1:
case2:printf(”%d",*(p++));
case3:printf(”%d",*(——p));
}}}
第7页(共14页):.
7。main()
{intx;
for(x=1;x〈=50;x++)
if(x%2==0)
if(x%3==0)
if(x%5==0)
printf(”%d”,x);}
(){
inta,b;
for(a=1,b=1;a〈=50;a++)
{if(b〉8)break;
if(b%3==1){b+=3;continue;}
b-=5;}
printf("%d\n",a);}
四、根据功能描述改正程序中的错误。
不得增行或删行,不得更改程序结构。(本题10分)
,函数fun的功能是:实现两个整数的交换。例如给a和b分别
输入60和65,输出为:a=65b=60。(本小题6分)
#include<conio。h>
#include<〉
voidfun(inta,b)
{
intt;
t=b;b=a;a=t;
}
main()
{
inta,b;
printf("Entera,b:");
scanf(”%d%d",a,b);
fun(&a,&b);
printf("a=%db=%dn”,a,b);
}
第8页(共14页):.
答案:
scanf("%d%d",a,b);改为:scanf("%d%d”,&a,&b);--—--—2分
fun(inta,b)改为:fun(int*a,int*b)----——2分
t=b;b=a;a=t;改为:t=*b;*b=*a;*a=t;—--——-2分
,用其声明指针变量*s,并完成对这个指针变
量的赋值、,并予以更正(本小题4分)
structSTRU
{intnum;
charname[20];
floatscore;
structSTRU*p1;
};
main()
{
STRU*s=(structSTRU*)malloc(sizeof(structSTRU));
s。num=123;
s—〉name=”zhang";
s->score=61。5;
printf(“num=%d,name=%s,score=%f",s-〉num,s-〉name,s—>score);
}
答案:
s。num=123;改为:s—〉num或(*s)。sum-——---2分
s-〉name=”zhang”;改为:strcpy(s->name,”zhang”)-————-2分
五、请用标准程序流程图描述下列问题的算法
(本题10分)
依次从键盘输入30个学生的《计算机实用基础》成绩,请分别统计不及格的
人数和优秀(成绩不小于90)的人数,并打印输出统计结果。
答案:
第9页(共14页):.
开始1分
定义循环变量i、成绩fScore、不及格
1分
nuPass和优秀计数器nGood并初始化
否
1分i>30输出统计结果1分
是
1分输入成绩结束1分
否
1分i<60
否
是i>=901分
是
nuPass++
nGood++
1分i++
1分
六、编程题(本题20分)
(考查课做前两道,考试课做后两道)
,数据是四位的整数,在
传递过程中是加密的,加密规则如下:每位数字都加上5,
然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三
位交换。(本小题10分)
答案:
main()
{inta,i,aa[4],t;
scanf(”%d”,&a);
aa[0]=a%10;
aa[1]=a%100/10;
aa[2]=a%1000/100;
aa[3]=a/1000;
for(i=0;i<=3;i++)
{aa[i]+=5;
aa[i]%=10;
}
第10页(共14页):.
for(i=0;i<=3/2;i++)
{
t=aa[i];
aa[i]=aa[3-i];
aa[3—i]=t;
}
for(i=3;i〉=0;i--)
printf("%d",aa[i]);
}
2。假定输入的字符串中只包含字母和*,它的功能是:删除字符
串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。(本小题10
分)
例如:若字符串中的内容为****A*BC*DEF*G*******
删除后,字符串内容应该是:ABCDEFG
voidfun(char*a)
{
}
main()
{ints[81];
gets(s);
fun(s);
puts(s);
}
参考答案:
fun(char*a)
{inti=0;char*p=a;
while(*p!='\0’)
{if(*p!=’*')
{a[i]=*p;i++;}
p++;
}
a[i]='\0’;
}
第11页(共14页):.
3。60名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的
头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。(本
小题10分)
#include〈stdio。h>
#include〈>
#defineN60
structslist
{doubles;
structslist*next;
};
typedefstructslistSTREC;
doublefun(STREC*h)
{
}
STREC*creat(double*s)
{STREC*h,*p,*q;
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p-〉s=0;
while(i〈N)
{
q=(STREC*)malloc(sizeof(STREC));
p—>s=s[i];i++;p—〉next=q;p=q;
第12页(共14页):.
}
p—>next=NULL;
returnh;
}
outlist(STREC*h)
{STREC*p;
p=h-〉next;
printf("head");
do
{
printf("—>%2。0f”,p—〉s);
p=p—>next;
}while(p!=0);
printf(”—>NULL\n\n”);
}
main()
{doubles[N]={56,89,76,95,91,68,75,85},max;
STREC*h;
h=creat(s);
outlist(h);
max=fun(h);
printf("min=%6。1f\n”,max);
}
参考答案:
第13页(共14页):.
doublefun(STREC*h)
{doublemax=h-〉s;
while(h!=NULL)
{
if(max<h—〉s)
max=h—〉s;
h=h—〉next;
}
returnmax;
}
第14页(共14页)