全国软件专业人才设计与开发大赛题目选拔试题
(2011-03-27 21:02:09)
转载
标签:
杂谈
分类: 计算机
全国软件专业人才设计与开发大赛题目选拔试题
一、基础篇(50分)
1、单选(每题1分,10小题共10分)
1). 执行下列程序中的输出语句后,x的值是____ _.
main()
{int x ;
printf("%d\n",(x=5*6,x*2,x+20));}
A)30 B)60 C)50 D)80
2). 在C语言中,下列选项属于合法的长整型常数的是_______.
A)0L B)1234567 C)0.0234567 D)3.14159e3
3). 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)
则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________.
A) scanf("%d %d",&a,&b);x=getchar();y=getchar();
B) scanf("%d%d %c %c", &a, &b,&x,&x,&y,&y);
C) scanf("%d %d %c%c%c %c", &a,&b,&x,&x,&y,&y);
D) scanf("%d%d %c %c", &a, &b,&x,&y);
4). 当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_______.
A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c);D)a=c=b;
5). 语句printf("%d\n",strlen("asd\n\x12\1\\"));的输出结果是______.
A)9 B)11 C)7 D) 8
6). 下列程序的运行结果是________.
main()
{ int y=10;
do { y- - ;} while(- -y);
printf("%d\n",y- -);}
A)-1 B)1 C)8 D)0
7). 阅读下面程序,该程序段的功能是_____.
#include
main()
{ int c[ ]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0&&t>c[j]) { c[j+1]=c[j];j- - ;}
c[j+1]=t;}
for(i=0;i<7;i++)printf("%d ",c[i] );
putchar('\n');
}
A)对数组元素的升序排列 B)对数组元素的降序排列
C)对数组元素的倒序排列 D)对数组元素的随机排列
8). 有如下程序:
#define f(x)x*x
main()
{ int i ;
i=f(4+4)/(2+2);
printf("%d\n",i);}
该程序执行后的输出结果是_______.
A)28 B)21 C)16 D)4
9). 下列程序的运行结果是_______.
main()
{ unsigned c1=0xff,c2=0x00;
c1=c2|c1>>2;c2=c1^0236;
printf("%x,%x\n",c1,c2);
}
A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a1
10). 有以下程序:
#include
main()
{ FILE *fp;int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d %d\n",k,n);
fclose(fp);}
该程序运行后的输出结果是_______.
A)20 30 B)20 50 C)30 50 D)30 20
2、多选(每题2分,共10题,共20分,错选,漏选均不得分)
1). 下列符号串中,不属于C语言合法标识符的有_____.
A)_1_2_3 B)a-b-c C)int D)9cd
2). 下列选项中,没有构成死循环的程序段有_____.
A)int i=100; B)for( ; ; )
while(1)
{ i=i0+1;
if(i>=100)break;}
C)int k=0; D)int s=36;
do { ++k;} while(k>=0); while(s);--s;
3). 下列判断正确的是_______.(知识点10.3)
A) char *a="china";等价于 char *a;*a="china";
B) char str[6]={"china"};等价于char str[ ]= {"china"};
C) char *s="china";等价于char *s;s="china";
D) char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";
4). 设有如下定义:
char *s[2]={"abcd","ABCD"};
则下列说法正确的有_____.
A) s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址
B) s是指针数组名,它含有两个元素分别指向字符型一维数组
C) s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素
D) s数组的两个元素中分别存放了字符'a'和'A'的地址
5). 若有以下说明:int a[5][9];则下列选项中对数组元素a[i][j]的引用错误的有_______.(0<=i<4,0<=j<9)
A)*(&a[0][0]+9*i+j) B)*(a+i)(j)C)*(*(a+i)+j) D)*(a[i]+j)
6). 若有定义:char *st="how are you!";下面程序段正确的有_____.(知识点:7.3)
A)char a[11],*p;strcpy(p=a+1,&st[4]);
B) char a[11];strcpy(++a,st);
C) char a[11];strcpy(a,st);
D) char a[ ],*p;strcpy(p=&a[1],st+2);
7). 设有以下说明语句:
Struct stu
{ int a ;
float b ;
}stutype ;
则下列叙述正确的有_______.
A) struct是结构体类型的关键字 B) struct stu是用户定义的结构体类型
C) stutype是用户定义的结构体类型名 D)a和b都是结构体成员名
8). 设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_______.
A)for(i=0;i<6;i++)printf("-",*(p++));
B)for(i=0;i<6;i++)printf("-",*(p+i));
C)for(i=0;i<6;i++)printf("-",*p++);
D)for(i=0;i<6;i++)printf("-",(*p)++);
9). 下列叙述正确的有_____.
A) 函数可以嵌套定义,但不能嵌套调用
B) 函数可以嵌套调用,也可以嵌套定义
C) 函数不可以嵌套定义,但可以递归调用
D) 函数可以嵌套调用,但不能嵌套定义
10). 下列选项中可以将变量n清零的表达式有_______.
A)n=n&~n B)n=n&0 C)n=n^n D)n=n|n
3、程序填空(每空2分,共10空,共20分)
1)、请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。例如:str1="How do",str2=" you do?",结果输出:How do you do?
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define N 40
void fun(char *str1,char *str2)
{
int i=0;
char *p1=str1;
char *p2=str2;
while(【1】)
i++;
for( ;【2】;i++)
*(p1+i)=【3】;
*(p1+i)='\0';
}
main()
{
char str1[N],str2[N];
clrscr();
printf("*****Input the string str1 & str2*****\n");
printf(" \nstr1:");
gets(str1);
printf(" \nstr2:");
gets(str2);
printf("**The string str1 & str2**\n");
puts(str1);
puts(str2);
fun(str1,str2);
printf("*****The new string *****\n");
puts(str1);
}
2)、请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。
例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0},结果为:avg=15.030000。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
double fun(double x[10])
{
int i;
long t;
double avg=0.0;
double sum=0.0;
for(i=0;i<10;i++)
【1】;
avg=sum/10;
avg=【2】;
t=【3】;
avg=(double)t/100;
return avg;
}
main()
{
double avg,x[10]={15.6,19.9,16.7,15.2,
18.3,12.1,15.5,11.0,10.0,16.0};
int i;
clrscr();
printf("\nThe original data is :\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
3)、请补充函数fun(),该函数的功能是:从'a'到'z'统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。注意:不区分大小写,不能使用字符串库函数。
例如,输入:"A=abc+5*c",结果为:a=2,b=1,c=2。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define N 100
void fun(char *tt,int alf[])
{
int i;
char *p=tt;
for(i=0;i<26;i++)
【1】;
while(*p)
{
if(*p>='A'&&*p<='Z')
【2】;
if(*p>='a'&&*p<='z')
alf[*p-'a']++;
p++;
}
}
main()
{
char str[N];
char a='a';
int alf[26],k;
clrscr();
printf("\nPlease enter a char string:");
scanf("%s",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k=0;k<26;k++)
{
if(k%5==0)
printf("\n");
printf("%c=%d ",a+k,alf[k]);
}
printf("\n");
}
4)、从键盘上输入两个整数m和n,求其最大公约数。
main()
{int a,b,num1,num2,temp;
scanf("%d,%d",&num1,&num2);
if(【 1 】)
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)
{ temp=【2】;
a=b;
b=temp;
}
printf("%d,%d",a,num1*num2/a);
}
二、智力题(30分)
1、单选题:(每小题4分,5小题,共20分)
1)给你8颗小石头和一架托盘天平。有7颗石头的重量是一样,另外一颗比其它石头略重,除此之外,这些石头完全没有分别。你不得假设那颗石头到底比其它的石头重了多少。请问:最少要称量几次,你才能把那颗较重的石头找出来?
A 1次 B 2次 C 3次 D 4次
2)一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。问他赚了多少?
A 1块 B 2块 C 3块 D 4块
3) 1块钱一瓶汽水,喝完后两个空瓶换一瓶汽水。问:你有20块钱,最多可以喝到几瓶汽水?
A 37瓶 B 38瓶 C 39瓶 D 40瓶
4) 有一牧场,已知养牛27头,6天把草吃尽;养牛23头,9天把草吃尽。如果养牛21头,那么几天能把牧场上的草吃尽呢?并且牧场上的草是不断生长的。
A 12天 B 13天 C 14天 D 15天
5)有四个人要在深夜通过一座桥。这座桥最多只能承受两个人的重量,而且必须打着手电筒才能通过。四个人只有一把手电筒,并且每个人的行走速度也不一样:第一个人通过这座桥要花1分钟,第二个人要花2分钟,第三个人要花5分钟,第四个人要花10分钟;如果两人同行,他们就只能以比较慢的那个人的速度前进。这四个人全部通过这座桥的最短时间是多少?
A 15分钟 B 17分钟 C 19分钟 D 21分钟
2、推理 (共10分)
假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
三、编程题(20分`二选一)
1、在西方,星期五和数字 13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫"黑色星期五"。
要求:输入年份,输出是:判断该年是否包含黑色星期五,如包含,给出具体日期
2、小明去银行存钱,拿了一堆硬币。已知1角的硬币厚度为1.8mm ,5 角的硬币厚1.5mm ,1元的硬币为2.0mm 。小明将1 角的硬币放成一摞,将5 角的硬币硬币放成一摞,将1元的硬币放成一摞,发现3 摞硬币一样高。银行正好把这些硬币换成若干张面值为10 元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个?
要求输出格式为: 1 角的数量,5 角的数量,1 元的数量,总金额。(例如:20,30,40,50)
说明在结果中只输出各个对应的数字即可
¥29.8
¥9.9
¥59.8