程序设计大赛试题Word文档下载推荐.docx
《程序设计大赛试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《程序设计大赛试题Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
![程序设计大赛试题Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/22/f11e689b-7bdd-4169-ba76-6ed9f5d67c22/f11e689b-7bdd-4169-ba76-6ed9f5d67c221.gif)
3.已知:
inta[6],*p=a;
则下列不能表示a[1]地址的表达式是()
A)a+1B)a++C)++pD)p+1
4.有以下程序
structst
{intn;
structst*next;
};
staticstructsta[3]={5,&
a[1],7,&
a[2],9,’\0’},*p;
则值为6的表达式是()
A)p++->
nB)p->
n++C)++p->
nD)(*p).n++
5.以下程序的运行结果是()
point(char*p){p+=3;
main()
{charb[4]={‘a’,‘b’,‘c’,‘d’},*p=b;
point(p);
printf(“%c\n”,*p);
A)aB)bC)cD)d
6.设有以下定义:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[2][2]的表达式是()
A)*(*(p+9))B)*(p+9)C)*((*prt+2)[2])D)(*prt+2)+2
7.有以下程序
{inti;
for(i=0;
3;
i++)
switch(i)
{case1:
printf(“%d\n”,i);
case2:
default:
}}
执行后的输出结果为()
A)120B)012C)012020D)011122
8.以下程序的运行结果是()
main()
{inta=1,b;
for(b=1;
b<
10;
b++)
{if(a>
=8)break;
if(a%2==1){a+=5;
continue;
a=3;
printf(“%d\n”,b);
A)6B)5C)4D)3
9.执行以下程序,若从键盘上输入6514<
回车>
则输出结果为()
{intm,n;
scanf(“%d%d”,&
m,&
n);
while(m!
=n)
{while(m>
n)m-=n;
while(m<
n)n-=m;
printf(“%d\n”,m);
A)0B)1C)2D)3
10.有以下程序
#include“stdio.h”
voidwritestr(char*fn,char*str)
{File*fp;
fp=fopen(fn,“w”);
fputs(str,fp);
fclose(fp);
{writestr(“t1.dat”,“start”);
writestr(“t1.dat”,“end”);
程序运行后,文件中的内容是()
A)endB)endrtC)startD)startend
二、改错题(每修改1处错误2分,共20分)
请改正下列程序中的错误,使它能得出正确结果。
注意,每个小题不止一处错误,修改时不要改动main函数,不得更改程序的结构。
1.下列程序的功能是;
读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
#include<
stdio.h>
conio.h>
IsPrime(intn)
{inti,m;
m=1;
for(i=2;
i<
n;
i++)
if(n%i)
{m=0;
break;
return(m);
main()
{intj,k;
printf(“\nPleaseenteranintegernumberbetween2and10000:
”);
scanf(“%d”,&
k);
printf(“%d”,k);
for(j=2;
j<
=k;
j++)
if((!
(k%j))&
(IsPrime(j)))printf(“\n%4d”,kj);
printf(“\n”);
2.下列程序中,函数fun的功能:
逐个比较a、b两个字符串对应位置中的字符,把ASCII码值或大或相等的字符依次存放到c数组中,形成一个新的字符串。
string.h>
voidfun(char*p,char*q,char*c,)
{intk=1;
while(*p!
=*q)
{if(*p<
*q)c[k]=*q;
elsec[k]=*p;
if(*p)p++;
if(*q)q++;
k++;
{chara[10]=“aBCDeFgH”,b[10]=“ABcd”,c[50]={‘\0’};
fun(a,b,c);
printf(“Theresultstringcis:
puts(c);
3.下列程序中,函数fun的功能:
找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。
#defineN100
intfun(int*s,intn)
{inti,j,k,a,b,c;
j=0;
for(i=100;
n;
i++)
{k=n;
a=k%10;
k/=10;
b=k%10;
c=k/10;
if(a==b&
a==c)s[j++]=i;
returnj;
{inta[N],n,num=0,i;
do{printf(“\nPleaseentern(<
1000):
n);
while(n>
1000);
num=fun(a,n);
printf(“\nTheresult:
\n”);
for(i=0;
num;
i++)printf(“%5d”,a[i]);
4.下列程序中,函数fun的功能:
根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
#defineM100
inta[M][M]={0};
fun(int**a,intm)
{inti,k;
for(j=0;
m;
j++)
for(k=100;
k<
k++)
a[j][k]=k*j;
main()
{inti,j,n;
printf(“\nPleaseentern:
fun(a,n);
for(j=100;
printf(“%5d”,a[i][j]);
三、填空题(每空2分,共10分)
1.阅读下面程序,则程序的执行结果为_____________【1】。
#include“stdio.h”
fun(intk,int*p)
{inta,b;
if(k==1||k==2)*p=1;
else{fun(k-1,&
a);
fun(k-2,&
b);
*p=a+b;
{intx;
fun(6,&
x);
printf(“%d\n”,x);
2.以下函数的功能是删除字符串s中的所有数字字符。
请填空。
voiddelete(char*s)
{intn=0,i;
for(i=0;
s[i];
if(!
(isdigit(s[i])))
______________【2】
s[n]=_________【3】;
3.设有以下定义
structlink
{intdata;
structlink*next;
}a,b,c,*q,*p;
且已建立如下图所示链表结构:
能够将c插入到结点a和b之间,形成新链表的语句组是:
_____________________【4】_____________________【5】。
四、编程题(50分)
1.填数字游戏。
在n×
n的奇数方阵中填写1~n2个数字。
要求每行每列及对角线上的数字之和均相等。
(15分)
2.编写一个用矩形法求定积分的通用函数,分别求、、。
(说明:
sin、cos、exp已在系统的数学函数库中)。
(
15分)
3.已知两个整数集合A和B,它们的元素分别依元素值递增有序存放在两个单链表HA和HB中,编写一个函数求出两个集合的并集C,并要求表示集合C的链表结点仍依元素值递增有序存放。
(20分)
五、附加题
决策系统(100分)
题目描述:
一个智能决策系统可以由规则库和事实库两部分组成,假定规则库的形式为:
RiC1&
C2&
…&
Cn->
A表示在条件C1,C2,…和Cn都满足的前提下,结论A成立(即采取行动A);
Ri表示这是规则库中的第i条规则。
事实库则由若干为真的条件(即命题)所组成。
对一个新的待验证的命题Q,可使用数据驱动或目标驱动两种推理方式之一,来确认它是
否可由某规则库和事实库推出:
1)数据驱动的推理是指从事实库开始,每次试图发现规则库中某条能满足所有条件的
规则,并将其结论作为新的事实加入事实库,然后重复此过程,直至发现Q是一个事实或
没有任何新的事实可被发现;
2)目标驱动的推理是指从目标