资源描述
全国软件专业人才设计与开发大赛题目选拔试题一、基础篇(50分)1、单选(每题1分,10小题共10分)1). 执行下列程序中的输出语句后,x的值是_A_. main()int x ;printf(“%dn”,(x=5*6,x*2,x+20);A)30 B)60 C)50 D)802). 在C语言中,下列选项属于合法的长整型常数的是_.A)0L B)1234567 C)0.0234567 D)3.14159e33). 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是_C_. 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(“%dn”,strlen(“asdnx121”);的输出结果是_.A)9 B)11 C)7 D) 86). 下列程序的运行结果是_.main() int y=10;do y- - ; while(- -y);printf(“%dn”,y- -);A)-1 B)1 C)8 D)07). 阅读下面程序,该程序段的功能是_.#include main() int c =23,1,56,234,7,0,34,i,j,t;for(i=1;i=0&tcj) cj+1=cj;j- - ;cj+1=t;for(i=0;i2;c2=c10236;printf(“%x,%xn”,c1,c2);A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a110). 有以下程序:#include main() FILE *fp;int i=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%dn”,i);fprintf(fp,“%dn”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d %dn”,k,n);fclose(fp);该程序运行后的输出结果是_.A)20 30 B)20 50 C)30 50 D)30 202、多选(每题2分,共10题,共 20分,错选,漏选均不得分)1). 下列符号串中,不属于C语言合法标识符的有_.A)_1_2_3 B)a-b-c C)int D)9cd2). 下列选项中,没有构成死循环的程序段有_.A)int i=100; B)for( ; ; )while(1) i=i%100+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 str6=“china”;等价于char str = “china”;C) char *s=“china”;等价于char *s;s=“china”;D) char c4=“abc”,d4=“abc”;等价于char c4=d4=“abc”;4). 设有如下定义:char *s2=“abcd”,“ABCD”;则下列说法正确的有_.A) s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址B) s是指针数组名,它含有两个元素分别指向字符型一维数组C) s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素D) s数组的两个元素中分别存放了字符a和A的地址5). 若有以下说明:int a59;则下列选项中对数组元素aij的引用错误的有_.(0=i4,0=j9)A)*(&a00+9*i+j) B)*(a+i)(j) C)*(*(a+i)+j) D)*(ai+j)6). 若有定义:char *st=“how are you!”;下面程序段正确的有_.(知识点:7.3)A) char a11,*p;strcpy(p=a+1,&st4);B) char a11;strcpy(+a,st);C) char a11;strcpy(a,st);D) char a ,*p;strcpy(p=&a1,st+2);7). 设有以下说明语句:Struct stu int a ;float b ;stutype ;则下列叙述正确的有_.A) struct是结构体类型的关键字 B) struct stu是用户定义的结构体类型C) stutype是用户定义的结构体类型名 D) a和b都是结构体成员名8). 设有定义语句: int x6=2,4,6,8,5,7,*p=x,i;要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_.A)for(i=0;i6;i+)printf(“%2d”,*(p+);B)for(i=0;i6;i+)printf(“%2d”,*(p+i);C)for(i=0;i6;i+)printf(“%2d”,*p+);D)for(i=0;i6;i+)printf(“%2d”,(*p)+);9). 下列叙述正确的有_.A) 函数可以嵌套定义,但不能嵌套调用B) 函数可以嵌套调用,也可以嵌套定义C) 函数不可以嵌套定义,但可以递归调用D) 函数可以嵌套调用,但不能嵌套定义10). 下列选项中可以将变量n清零的表达式有_.A)n=n&n B)n=n&0 C)n=nn D)n=n|n3、程序填空(每空2分,共10空,共20分)1)、请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。例如:str1=“How do”,str2=“ you do?”,结果输出:How do you do?注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 40void 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 str1N,str2N; 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(),该函数的功能是求一维数组xN的平均值,并对所得结果进行四舍五入(保留两位小数)。例如:当x10=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#includedouble fun(double x10) int i; long t; double avg=0.0; double sum=0.0; for(i=0;i10;i+)【1】; avg=sum/10; avg=【2】; t=【3】; avg=(double)t/100; return avg;main() double avg,x10=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;i10;i+)printf(%6.1f,xi); printf(nn); avg=fun(x); printf(average=%fnn,avg);3)、请补充函数fun(),该函数的功能是:从a到z统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。注意:不区分大小写,不能使用字符串库函数。例如,输入:“abc+5*c”,结果为:a=2,b=1,c=2。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 100void fun(char *tt,int alf) int i; char *p=tt; for(i=0;i=A&*p=a&*p=z)alf*p-a+;p+; main() char strN; char a=a; int alf26,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;knum2 【2】a%b二、智力题(共30分)1、单选题:(每小题4分,5小题,共20分) BBCAB2、推理 (共10分) a、由满6向空5倒,剩1升,把这1升倒5里。 b、然后6剩满,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后将6剩余的2升,倒入空的5里面。 c、再灌满6向5里倒3升,剩余3升。三、编程题(20分二选一)1、参考答案:#include typedef struct int month; int day; Data; int main() Data data10; int a13=0,12,43,71,102,132,163,193,224,255,285,316,346; int b13=0,12,43,72,103,133,164,194,225,256,286,317,347;/闰年时 int n=0,i,year; scanf(%d,&year); if(year%4=0)&(year%100!=0)|(year%400=0)/闰年时 for(i=1;i=12;i+) if(year*365+(year-1)/4-year/100+year/400+bi)%7=5) datan.month=i; datan.day=13; n+; else/平年 for(i=1;i=12;i+) if(year*365+year/4-year/100+year/400+ai)%7=5) datan.month=i; datan.day=13; n+; if(n=1) printf(There is %d Black Friday in year %d.nIt is:n,n,year); printf(%d/%d/%dn,year,data0.month,data0.day); else printf(There are %d Black Fridays in year %d.nThey are:n,n,year); for(i=0;in;i+)printf(%d/%d/%dn,year,datai.month,datai.day); return 0; 2参考答案#includevoid main() int yijiao; int wujiao; int yiyuan; int sum; for(yiyuan=0;yiyuan100;yiyuan+) for(wujiao=0;wujiao100;wujiao+) for(yijiao=0;yijiao=100)&(sum%100=0)&(18*yijiao=15*wujiao)&(15*wujiao=20*yiyu printf(%d,%d,%d,%dn,yijiao,wujiao,yiyuan,sum/10); break;
展开阅读全文