2010年湖南省对口高考真题中,哪一道题目的解答过程最复杂?

2026-04-11 21:282阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1877个文字,预计阅读时间需要8分钟。

2010年湖南省对口高考真题中,哪一道题目的解答过程最复杂?

一、选择题目+1、下列不符合C语言合法标识符的是__________。A.+_124B.+124abcC.+sum124D.a_124+2

二、若有如图1所示存储结构,且变量定义如下:struct node{int data; struct node *next;}; p, q, r;若要实现图2所示的存储结构,请写出相应的代码。

一、选择题

1、

下列不是C语言合法标识符的是__________。

A. _124 B. 124abc C. sum124 D. a_124

2、

若有如图1所示存储结构,且变量定义为struct node{int data;struct node *next;}p,q,r;若要实现图2所示的存储结构,可选用的赋值语句是__________。

A. p=r; B. p=q->next; C. p->next=q; D. p->next=q->next;

二、写程序结果

#include <stdio.h> main() { double x,y; printf("%.2f",(x=5,y=x+3/2)); }

运行结果是____________________。

#include <stdio.h> #define CUBE(x) (x*x*x) main() { int n=5; int s=CUBE(++n); printf("%d",s); }

运行结果是____________________。

3、

#include <stdio.h> void fun(int a,int *b) { a=*b*2; *b=a*5; } main() { int x=10,*y; y=&x; fun(x,y); printf("%d,%d",x,*y); }

运行结果是____________________。

4、

#include <stdio.h> void fun(int *a) { *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); }

运行结果是____________________。


三、程序填空

下列函数rtrin_str实现的是删除字符串str尾部的所有空格。

char* rtrim_str(char* str) { int n=__________ 1 __________; if(n<1) return 0; while(n>0) { if(*(str+n)!=' ') { __________ 2 __________ break; } else __________ 3 __________ } return str; }

某超市推行会员优惠购物,其中vip会员八八折,金牌会员九折,银牌会员九三折,普通会员九六折,非会员不打折。以下程序实现了超市购物的结算,其中非会员、普通会员、银牌会员、金牌会员、vip会员分别用0、1、2、3、4表示。

#include <stdio.h> double computer(int n,int grade) { int amount,i; double sum,price,discount[5]= { __________ 4 __________ }; sum=0.0; for(i=0; i<n; i++) { printf("请输入商品单价和数量:\n"); scanf("%lf%d",&price,&amount); /*price:商品单价;amount:商品数量;*/ sum+=price*amount; } return __________ 5 __________ ; } main() { int n,grade; /*n:商品种数;grade:会员等级*/ printf("请输入商品种数和会员等级:\n"); scanf("%d%d",&n,&grade); printf("%.2lf\n", __________ 6 __________); }


四、改错

以下程序的功能是:任意输入一个小于256的正整数,将其转换成二进制数并输出。程序中有两处错误,请将错误处的行号及正确语句填入答题卡相应位置中,不得增行或删行。

#include "stdio.h" int main() { int x,i=0,j=0; int result[8]; printf("请输入一个小于256的正整数:\n"); scanf("%d",&x); do { result[i]=x%2; i++; x=x%2; } while(x>=1); for(j=i-1; j>=0; j++) printf("%d",result[j]); printf("\n"); return 0; }


五、程序设计题

在全国青年歌手大奖赛中,有20个评委为参赛的选手打分,分数为1-100分。选手最后得分为:去掉一个最高分和一个最低分后其余18个分数的平均值。请编写程序实现,输入20个评委评分,求出选手最后得分。


六、程序方向

(一)、程序填空

设文件studs.dat中存放着学生的基本信息,基本信息由以下结构体来描述:

struct student { long int num; /*学号*/ char name[20]; /*姓名*/ char major[25]; /*专业*/ }


下列程序的功能是:输入要读取的学生人数,利用malloc动态分配内存来存储从文件中读取的学生信息(以方便进一步管理),并输出读取的学号,姓名,专业。请将正确的内容填入答题卡的相应位置上,使程序完整。

#include<stdio.h> #include<stdlib.h> #include<string.h> struct student { long int num; char name[10]; char major[10]; }; FILE *fp; int main() { struct student st,*pst; int i ,num,realnum; printf("请输入读取的学生数:"); scanf("%d",&num); pst=(struct student *)malloc(______1______); if(!pst) return 0; fp=fopen("studs.dat","rb"); if(NULL==fp) { ______2______; return 0; } realnum=0; printf("%s\t%s\t%s\n","number","name","major"); /*文件包含的学生数量可能少于输入的人数*/ for(i=0; i< ______3______ ; i++) { fread(pst+i,sizeof(struct student),1,fp); realnum++; ______4______; printf("%d\t%ld\t%s\t%s\n",realnum,st.num,st.name,st.major); } free(pst); fclose(fp); return 0; }

(二)、程序设计

编写程序,输入5行5列整数方阵,计算并输出该方阵两条对角线上各元素的平方和。


参考答案:

一、选择题

1—2 BD

一、写程序结果

1、 6.00 2、 VC 512=8*8*8 DC 392=7*7*8 3、 100,100

4、 30

分析:对于第2题,以下代码在VC中均为512,在DC中均为392。

#include "stdio.h" #define CUBE(x) (x*x*x) int main() { int s; int a=5; s=CUBE(++a); printf("\n %d",s); int b=5; s=++b*++b*++b; printf("\n %d",s); int c=5; printf("\n %d",++c*++c*++c); int d=5; int e; e=CUBE(++d); printf("\n %d",e); getchar(); }


二、程序填空

1、 n=strlen(str)-1 2、 *(str+n+1)='\0'; 3、 n--;

4、 1.00,0.96,0.93,0.9,0.88 5、 sum*discount[grade] 6、 computer(n,grade)

三、改错

2010年湖南省对口高考真题中,哪一道题目的解答过程最复杂?

1、 L12 x=x/2; // x=x%2;

2、 L15 for(j=i-1; j>=0; j--) // for(j=i-1; j>=0; j++)

四、程序设计题

1、参考代码

#include "stdio.h" int main() { int x[21],min,max,n=1; float aver; while(n<=20) { printf("请输入第%d个评委的分数(1-100):",n); scanf("%d",&x[n]); if(x[n]>=1 && x[n]<=100) n++; } aver=min=max=x[1]; for(n=2;n<=20;n++) { if(min>x[n])min=x[n]; if(max<x[n])max=x[n]; aver+=x[n]; } aver=(aver-min-max)/18; printf("\n 最后得分:%.2f",aver); return 0; }

不足:没有考虑计算多个选手的情况,只考虑了计算一个选手的得分。

五、程序方向

(一)、程序填空

1、 sizeof(struct student)

2、 free(pst);

3、 !feof(fp)&&(i<num)

4、 st=*(pst+i)

分析:本程序有bug,因为文件尾的情况存在多读一条数据的问题,因此,应该在循环外先读取一次,则不会出现多读一条数据的问题。

fread(pst+i,sizeof(struct student),1,fp); realnum++; st=*(pst+i); for(i=0; !feof(fp)&&(i<num); i++) { printf("%d %ld %s %s\n",realnum,st.num,st.name,st.major); fread(pst+i,sizeof(struct student),1,fp); realnum++; st=*(pst+i); }

(二)程序设计

#include <stdio.h> #define N 5 main() { int a[N][N],i,j,s=0; for(i=0;i<N;i++) for(j=0;j<N;j++) { //printf("\n请输入第%d行第%d列数据:",i,j); //scanf("%d",&a[i][j]); a[i][j]=i+j; } for(i=0;i<N;i++) for(j=0;j<N;j++) { if(i==j || i+j==N-1) s+=a[i][j]*a[i][j]; } printf("\n对角线上各元素的平方和为%d",s); } // 0 1 2 3 4 0+4+16+36+64=120 // 1 2 3 4 5 16+16+16+16=64 // 2 3 4 5 6 // 3 4 5 6 7 // 4 5 6 7 8






本文共计1877个文字,预计阅读时间需要8分钟。

2010年湖南省对口高考真题中,哪一道题目的解答过程最复杂?

一、选择题目+1、下列不符合C语言合法标识符的是__________。A.+_124B.+124abcC.+sum124D.a_124+2

二、若有如图1所示存储结构,且变量定义如下:struct node{int data; struct node *next;}; p, q, r;若要实现图2所示的存储结构,请写出相应的代码。

一、选择题

1、

下列不是C语言合法标识符的是__________。

A. _124 B. 124abc C. sum124 D. a_124

2、

若有如图1所示存储结构,且变量定义为struct node{int data;struct node *next;}p,q,r;若要实现图2所示的存储结构,可选用的赋值语句是__________。

A. p=r; B. p=q->next; C. p->next=q; D. p->next=q->next;

二、写程序结果

#include <stdio.h> main() { double x,y; printf("%.2f",(x=5,y=x+3/2)); }

运行结果是____________________。

#include <stdio.h> #define CUBE(x) (x*x*x) main() { int n=5; int s=CUBE(++n); printf("%d",s); }

运行结果是____________________。

3、

#include <stdio.h> void fun(int a,int *b) { a=*b*2; *b=a*5; } main() { int x=10,*y; y=&x; fun(x,y); printf("%d,%d",x,*y); }

运行结果是____________________。

4、

#include <stdio.h> void fun(int *a) { *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); }

运行结果是____________________。


三、程序填空

下列函数rtrin_str实现的是删除字符串str尾部的所有空格。

char* rtrim_str(char* str) { int n=__________ 1 __________; if(n<1) return 0; while(n>0) { if(*(str+n)!=' ') { __________ 2 __________ break; } else __________ 3 __________ } return str; }

某超市推行会员优惠购物,其中vip会员八八折,金牌会员九折,银牌会员九三折,普通会员九六折,非会员不打折。以下程序实现了超市购物的结算,其中非会员、普通会员、银牌会员、金牌会员、vip会员分别用0、1、2、3、4表示。

#include <stdio.h> double computer(int n,int grade) { int amount,i; double sum,price,discount[5]= { __________ 4 __________ }; sum=0.0; for(i=0; i<n; i++) { printf("请输入商品单价和数量:\n"); scanf("%lf%d",&price,&amount); /*price:商品单价;amount:商品数量;*/ sum+=price*amount; } return __________ 5 __________ ; } main() { int n,grade; /*n:商品种数;grade:会员等级*/ printf("请输入商品种数和会员等级:\n"); scanf("%d%d",&n,&grade); printf("%.2lf\n", __________ 6 __________); }


四、改错

以下程序的功能是:任意输入一个小于256的正整数,将其转换成二进制数并输出。程序中有两处错误,请将错误处的行号及正确语句填入答题卡相应位置中,不得增行或删行。

#include "stdio.h" int main() { int x,i=0,j=0; int result[8]; printf("请输入一个小于256的正整数:\n"); scanf("%d",&x); do { result[i]=x%2; i++; x=x%2; } while(x>=1); for(j=i-1; j>=0; j++) printf("%d",result[j]); printf("\n"); return 0; }


五、程序设计题

在全国青年歌手大奖赛中,有20个评委为参赛的选手打分,分数为1-100分。选手最后得分为:去掉一个最高分和一个最低分后其余18个分数的平均值。请编写程序实现,输入20个评委评分,求出选手最后得分。


六、程序方向

(一)、程序填空

设文件studs.dat中存放着学生的基本信息,基本信息由以下结构体来描述:

struct student { long int num; /*学号*/ char name[20]; /*姓名*/ char major[25]; /*专业*/ }


下列程序的功能是:输入要读取的学生人数,利用malloc动态分配内存来存储从文件中读取的学生信息(以方便进一步管理),并输出读取的学号,姓名,专业。请将正确的内容填入答题卡的相应位置上,使程序完整。

#include<stdio.h> #include<stdlib.h> #include<string.h> struct student { long int num; char name[10]; char major[10]; }; FILE *fp; int main() { struct student st,*pst; int i ,num,realnum; printf("请输入读取的学生数:"); scanf("%d",&num); pst=(struct student *)malloc(______1______); if(!pst) return 0; fp=fopen("studs.dat","rb"); if(NULL==fp) { ______2______; return 0; } realnum=0; printf("%s\t%s\t%s\n","number","name","major"); /*文件包含的学生数量可能少于输入的人数*/ for(i=0; i< ______3______ ; i++) { fread(pst+i,sizeof(struct student),1,fp); realnum++; ______4______; printf("%d\t%ld\t%s\t%s\n",realnum,st.num,st.name,st.major); } free(pst); fclose(fp); return 0; }

(二)、程序设计

编写程序,输入5行5列整数方阵,计算并输出该方阵两条对角线上各元素的平方和。


参考答案:

一、选择题

1—2 BD

一、写程序结果

1、 6.00 2、 VC 512=8*8*8 DC 392=7*7*8 3、 100,100

4、 30

分析:对于第2题,以下代码在VC中均为512,在DC中均为392。

#include "stdio.h" #define CUBE(x) (x*x*x) int main() { int s; int a=5; s=CUBE(++a); printf("\n %d",s); int b=5; s=++b*++b*++b; printf("\n %d",s); int c=5; printf("\n %d",++c*++c*++c); int d=5; int e; e=CUBE(++d); printf("\n %d",e); getchar(); }


二、程序填空

1、 n=strlen(str)-1 2、 *(str+n+1)='\0'; 3、 n--;

4、 1.00,0.96,0.93,0.9,0.88 5、 sum*discount[grade] 6、 computer(n,grade)

三、改错

2010年湖南省对口高考真题中,哪一道题目的解答过程最复杂?

1、 L12 x=x/2; // x=x%2;

2、 L15 for(j=i-1; j>=0; j--) // for(j=i-1; j>=0; j++)

四、程序设计题

1、参考代码

#include "stdio.h" int main() { int x[21],min,max,n=1; float aver; while(n<=20) { printf("请输入第%d个评委的分数(1-100):",n); scanf("%d",&x[n]); if(x[n]>=1 && x[n]<=100) n++; } aver=min=max=x[1]; for(n=2;n<=20;n++) { if(min>x[n])min=x[n]; if(max<x[n])max=x[n]; aver+=x[n]; } aver=(aver-min-max)/18; printf("\n 最后得分:%.2f",aver); return 0; }

不足:没有考虑计算多个选手的情况,只考虑了计算一个选手的得分。

五、程序方向

(一)、程序填空

1、 sizeof(struct student)

2、 free(pst);

3、 !feof(fp)&&(i<num)

4、 st=*(pst+i)

分析:本程序有bug,因为文件尾的情况存在多读一条数据的问题,因此,应该在循环外先读取一次,则不会出现多读一条数据的问题。

fread(pst+i,sizeof(struct student),1,fp); realnum++; st=*(pst+i); for(i=0; !feof(fp)&&(i<num); i++) { printf("%d %ld %s %s\n",realnum,st.num,st.name,st.major); fread(pst+i,sizeof(struct student),1,fp); realnum++; st=*(pst+i); }

(二)程序设计

#include <stdio.h> #define N 5 main() { int a[N][N],i,j,s=0; for(i=0;i<N;i++) for(j=0;j<N;j++) { //printf("\n请输入第%d行第%d列数据:",i,j); //scanf("%d",&a[i][j]); a[i][j]=i+j; } for(i=0;i<N;i++) for(j=0;j<N;j++) { if(i==j || i+j==N-1) s+=a[i][j]*a[i][j]; } printf("\n对角线上各元素的平方和为%d",s); } // 0 1 2 3 4 0+4+16+36+64=120 // 1 2 3 4 5 16+16+16+16=64 // 2 3 4 5 6 // 3 4 5 6 7 // 4 5 6 7 8