程序设计竞赛试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010年西北师范大学第四届程序设计大赛试题
一、程序填空(共5题,每题5分,共25分)
1.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,完成程序中下划线部分。
#include
main()
{
int i, j;
for(i=0; ; i++)
{
j=i*10+6;
if( ) continue;
printf("%d",j);
}
}
2.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。完成函数中下划线部分。
Strapp(char a[], char b[])
{
int num=0,n=0;
while(*(a+num)!= ) num++;
while(b[n]){*(a+num)=b[n]; num++; ;}
return(num);
}
3.下面函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数。插入
后数组中的数仍有序。完成函数中下划线部分。
void fun (char *w,int x,int *n)
{ int i,p;
p=0;
w[*n]=x;
while (x>w[p]) ;
for(i=*n;i>p;i--)w[i]= ;
w[p]=x;
++ *n;
}
4.下面的程序将输入字符中的小写字母转化成大写字母输出,其它字符按原样输出,当输入字符为“!”时程序结束。完成程
序中下划线部分。
#include
main()
{
char ch;
printf("Input string(! to quit):");
do{
ch = getchar();
if( ) ch = ch + 'A'-'a';
putchar(ch);
}while( );
}
5. The following program is to calculate the value of “e ” according to the formula ....!
31!21!111++++=e , while the value of the last item must be less than 610-.
#include
main()
{
int i;
double e,item;
;
item=1.0;
for (i=1; ;i++)
{
item/=(double)i;
e+= ;
}
printf("e=%f\n",e);
}
二、 程序理解(共5题,每题5分,共25分)
1. 以下程序的运行结果是
#include
void main()
{
int i,j,k=19;
while (i=k-1)
{
k-=3;
if(k%5==0) { i++; continue; }
else if(k<5) break;
i++;
}
printf(“i=%d,k=%d\n ”,i,k);
}
2.运行以下程序,输入: AabD
#include
void main()
{
char s[81];
int i=0;
gets(s);
while (s[i]!=…\0‟)
{
if(s[i]<= ‟z‟&&s[i]>= ‟a‟) s[i]= ‟z‟+‟a‟-s[i];
i++;
}
puts(s);
}
3.以下程序的运行结果是
#include
#define F(k) k+3.14
#define P(a) printf("a=%d\n", (int)(a))
#define P1(a) P(a);putchar('\n');
#define P2(a, b) P(a);P1(b);
void main()
{
int x = 1;
{
int x = 2;
P(x*F(2));
}
{
for (; x < 10; x += 50)
P2(x, 9.15*x+32);
}
}
4.输入: this is a test.
#define TRUE 1
#define FALSE 0
int change(char *c,int status);
void main()
{
int flag=TRUE;
char ch;
do{
ch=getchar();
flag=change(&ch,flag);
putchar(ch);
} while(ch!=‟.‟);
printf(…\n‟);
}
int change(char *c,int status)
{
if(*c==‟‟) return TRUE;
if(status&&*c<=‟z‟&&*c>=‟a‟) *c+=‟A‟-…a‟; return FALSE;