main()
{ int i,sum=0; for(i=100;i>=5;i--) { if ( )
{ sum=i+i-2;
} }
printf(\%d\\n\,sum); }
32、程序改错,不得增行或删行。以下每个程序中均有两处错误,请将错误处的行号及正确语句填入答题卡相应位置中。(每小题10分,共20分)
(1)以下程序的功能是:从一个整数队列中找出值最大的数,若有多个则取最先得到的那一个。 L1 #include
L5 for(i=1,j=0,max=a[0];i
L9 }
L10
return *(a+j);}
L11 main() L12 { L13 int i,a[50]
L14 printf(\enter array: \); L15 for(i=0;i<50;i++) L16
scanf(\%d\,&a[i]);
L17 printf(\%d\,findMax(a,50));
L18 }
(2)以下程序的功能是:读入一个字符串(长度<80),将该字符串中的所有字符按ASCII码降序排序后输出。 L1 #include
L6 for(i=0;i for(j=i+1;j L8 if(t[i] L9 { L10 c=t[j] L11 t[j]=t[i++] L12 t[i]=c; L13 }} L14 main() L15 { char s[81]; L16 printf(\\\nPlease enter a character string: \) L17 gets(s); L18 printf(\\\n\\nBefore sorting:\\n %s\,s); L19 fun(s); L20 printf(\\\nAfter sorting decendingly:\\n\ %s,s);} 六、程序设计题(本大题共1题,共15分) 33、某学校操场上有一些学生,老师想知道有多少人, 便让学生排队报数:按从1到5报,最后一名学生报的数为1;按从1到6报,最后一名学生报的数为5;按从1到7报,最后一名学生报的数为4;最后再按从1到11报,最后一名学生报的数为10。编写程序求操场上共有多少学生。 选考题第二组 程序方向 36、以下程序的功能是:输入某公司50名职员的工号、姓名和地址并存入名为“company.txt”的磁盘文件。请将正确的内容填入答题卡相应位置中,使程序完整(每空5分,共15分) struct employee { int empid; char empname[10] char empadd[30] } emp[50] save() { ; int i; if((fp=fopen(\company.txt\,\wb\))==NULL) 5 { printf(\cannot open file\\n\);return; } for(i=0;i<50;i++) { if(fwrite( )!=1) } main() { int i; for(i=0;i<50;i++) scanf(\%d,%s,%s\, ,emp[i].empname,emp[i].empadd);save();} 37、将自然数1~100按顺时针围成一圈,首先取出1,然后按顺时针方向以步长30取数,(已取出的数还再参加计数),直到所有的数取完为止。编程求最后一个取出的数是多少?(共15分) printf(\file write error\\n\); 湖南省2010年 一、单选题(在本题的每一小题的备选答案中,只有一个答案是正确的,本大题共20小题,每小题5分,共100分) 17、下列不是C语言合法标识符的是( ) A、_124 B、124abc C、sum124 D、a_124 18、若有如图1所示存储结构,且变量定义为struct node{int data;struct node* next;}*p,*q,*r, 若要实现图2所示的存储结构,可选用的赋值语句是( ) { int n=5; int s=CUBE(++n); printf(“%”,s); } (3)#include main() { int x=10, *y; y=&x; fun(x,y); printf(“%d,%d”,x,*y); } (4)#include { *a=*(a-1)+*(a+1); } main() { int i=0,s=0,arr[5]={1,3,5,7,9}; fun(arr+2); for(;i<5;i++) s+=arr[i]; printf(“%d”,s); } 40、程序填空。请按题目要求,将正确的内容填入答题卡相应位置中,使程序完整,(每空5分,共30分) (1)下列函数rtrim_str实现的是删除字符串str尾部的所有空格。 char* rtrim_str(char* str) { int n= ① ; if(n<1) return 0; while(n>0) { if(*(str+n)!=‵‵) A、p=r; B、p=q- >next; C、p- >next=q; D、p- >next=q- >next; 五、程序分析题(本大题共3小题,共60分) 39、阅读程序,写出运行结果。(每小题5分) (1)#include double x,y; printf(\%.2f\,(x=5,y=x+3/2)); } (2)#include #define CUBE(x) (x*x*x) main() 6 { ② ; break; } else ③ ; } return str; } (2)某超市推行会员优惠购物,其中VIP会员八八折,金牌员九折,银牌会员九三折,普通会员九六折,非会员不打折。以下程序实现了超市购物的结算,其中非会员、普通会员、银牌会员、金牌会员、VIP会员分别用0,1,2,3,4表示。 # include double compute(int n,int grade) { int amount,i; doublesum,price,discount[5]={ ④ }; sum=0,0; for(i=0;i printf(\请输入商品单价和数量:\\ n\); scanf(\ /*price:商品单价;amount:商品数量;*/ 七、选考题(考生可根据自己的专业方向,从三组题中任选 一组,多选则只计前一组的成绩。每组2小题,每小题20分,共40分) 程序设计方向 45、设文件studs.dat中存放着学生的基本信息,基本 信息由以下结构体来描述: struct student { long int num; /* 学号*/ sum+=price*amount; } return ⑤ ;} main() { int n,grade; /*n;商品种数;grade;会员等级*/ printf(“请输入商品种数和会员等级:\\n”); scanf(\%d%d\,&n,&grade); printf(\%2lf\\n\, ⑥ ); } 41、以下程序的功能是:任意输入一个小于256的正整数,将其转换成二进制数并输出。程序中有两处错误,请将错误处的行号及正确语句填入答题卡相应位置中,不得增行或删行。(每处错误5分,共10分) L1 main() L2 { L3 int x,i=0,j=0 L4 int result[8]; L5 printf(\请输入一个小于256的正整数:\\n\); L6 sanf(\%d\,&x) L7 do{ L8 result[i]=x%2; L9 i++; L10 x=x%2; L11 }while(x>=1); L12 for(j=i-1;j>=0;j++) L13 printf(\%d\,result[j]); L14 printf(\\\n\); L15 } 六、程序设计题(本大题12分) 42、在全国青年歌手大奖赛中,有20个评委为参赛选手打分。分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余18个分数的平均值。请编写程序实现,输入20个评委评分,求出选手最后得分。 char name[20]; /* 姓名*/ char major[25];}; /* 专业*/ 下列程序的功能是:输入要读取的学生人数,利用malloc动态分配内存来存储从文件中读取的学生信息(以方便进一步处理),并输出读取的学生的学号,姓名,专业。请将正确的内容填入答题卡相应位置中,使程序完整(每空5分,共20分) #include { struct student st,*pst; int i,num,realnum; printf(“请输入读取的学生数:”); scanf(\%d\,&num); pst=(struct student*)malloc( ① ); if(!pst) return; fp=fopen(\studs.dat\,\rb\); if(NULL==fp) { ② ;return; } realnum=0; printf(\%s\\t%s\\t%s\\t%s\\n\,\number\, \name\,\major\ )); /*文件包含的学生数量可能少于输入的人数 */ for(i=0;i< ③ ;i++) { fread(pst+i,sizeof(struct student),l,fp); realnum++; ④ ; printf(\%d\\t%ld\\t%s\\t%s\\n\,realnum, st.nu m,st.name,st.major); } free(pst);fclose(fp); } 46、编写程序,输入5行5列整数方阵,计算并输出该方阵两条对角线上各元素的平方和。(共20分) 7 湖南省2011年普通高等学校对口招生考试 29、若有定义语句:int a[2][3],*p[3];,则以下语句正确的是( ) A、p=a; B、p[0]=a; C、p[0]=&a[1][2]; D、p[1]=&a; 30、有以下程序段: typedef struct NODE {int num;struct NODE *next; }OLD; 以下叙述中正确的是_____ A、以上的说明形式非法 B、NODE 是一个结构体类型 C、OLD是一个结构体类型 D、OLD是一个结构体变量 for(k=0;k<5;k++) printf(\%s\\n\,qstr[k]); } 3)有以下程序: #include main(int argc,char *argv[]) { int i,len=0; for(i=1;i 经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行: ex abcd efg h3 k44 执行后输出的结果是 45、以下选项中属于字符常量的是( ) A、’C’ B、’\\018’ C、’\\xCC’ D、’\\072’ 五、程序分析题(35分) 55、分析程序运行结果(3*5`=15) 1)main() {int a=2,b=7,c=5; switch(a>0) { case 1:switch(b<0) {case 1:printf(\@\);break; case 2:pritnf(\!\);break; } case 0:switch(c==5) {case 0:printf(\*\);break; case 1:printf(\#\);break; case 2:printf(\$\);break; } default:printf(\&\); } printf(\\\n\); } 2)若有以下输入,则下面程序的运行结果是 basic<回车> fortran<回车> pascal<回车> c++<回车> java<回车> #include char *qstr[5],str[5][10],*change; for(k=0;k<5;k++) qstr[k]=str[k]; printf(\enter 5 strings(1 string on each line)\\n\); for(k=0;k<5;k++) scanf(“%s”,qstr[k]); for(k=0;k<5;k++) { for(j=k+1;j<5;j++) { if(strcmp(*(qstr+k),*(qstr+j))>0) { change=*(qstr+k); *(qstr+k)=*(qstr+j); *(qstr+j)=change; } } } printf(\The sorted strings are:\\n\); 56、程序填空(10) 1)函数min()的功能:在带头结点的单链表中查找数据域中值最小的结点。 #include struct node *next; }; int min(struct node *first) { struct node *p;int m; p=first;m=p->data;p=p->next; for(;________①___;p=___②______) if(p->data 2)设有5个学生,每个学生考4门课,以下程序能检查这些学生有无考试不及格的课程。若某一学生有一门或一门以上课程不及格,就输出该学生的序号(序号从0开始)和其全部课程成绩。请填空: main() {int score[5][4]={{62,87,67,95},{95,85,98,73}, {66,92,81,69},{78,56,90,99},{60,79,82,89}}; ③ ; int j,k,flag; p=score; for(j=0;j<5;j++) {flag=0; for(k=0;k<4;k++) if( ④ ) flag=1; if(flag==1) {printf(\No.%d is fail,scores are:\\n\,j); for(k=0;k<4;k++) printf(\]\, ⑤ ); printf(\\\n\); } } } 57、程序改错(10) 1)以下函数的功能是:求s=aa??aa-??-aaa-aa-a(此处aa??aa表示n个a,a和n的值在1~9之间)。例如a=3,n=6,则以上表达式为a=333333-33333-3333-333-33-3。其值是296298。 #include 8

