当前位置:首页 > 湖南省07-12年高考C语言真题
C语言真题(2007-2012) 湖南省2007年
五、程序设计题(本大题共4题,共90分) 1、程序分析题。写出下列程序运行的结果。(每小题5分) (1)#include
{ int x=3;
do {printf(\%d\,x-=2); } while(!(--x)); }
运行结果是_____________________________ (2)#include
{int x=4,y=8,z; z=x<<2|y;
printf(\%d\,z); }
运行结果是_____________________________ (3)#include
{ char x=‵E‵,y=‵e‵; printf(\%c, \,x=32);
printf(\%c,\,(x--,++y));
printf(\%c\\n\,x==y?x+=32;y-=32); }
运行结果是_____________________________ (4)#include
{ int t=2; while(t<5) switch(t%2)
{ case 0:t++;printf(\#\);break; case 1:t+=2;printf(\*\); default:printf(\\\n\); } }
运行结果是_____________________________ (5)#include
{ char str1{50}=\Beijing 2008! \,*q=str1;
char str2[50]= \One World One Dream! \,*p=str2; while(*p!='\\0') p++;
while(*q!='\\0') P++=q++; *p=‵\\0‵;
printf(\%s\,str2); }
运行结果是_____________________________ (6)#include
main()
{ char s[]=\abcdefg\,t; int i=0,j=strlen(s)-1; while(i { t=s[j];s[j]=s[i];s[i]=t;i++;j--;} puts(s); } 运行结果是_____________________________ 2、程序填空(每空5分,共30分) (1)下面程序的功能是求1000以内的完数。所谓完数是指一个数的子因子之和等于这个数本身。例如:6是一个完数,因为6=1+2+3。 #include { int i,j,sum; printf(\1000以内的完数有:\\n\); for(i=1;______________________;i++) { sum=0; for(j=1;j _________________________ sum+=j; if(_________________) printf(\%d\\n\,i); } } (2)以下程序是统计一维数组arr中小于平均值的元素个数。 #include int fun(int s[],float aver) { int i,count=0; for(i=0;i if(________________) count++; return count; } main() { int i,arr[N]={87,34,56,78,90,66,88}; float aver=0; for(i=0;i printf(\统计结果为:%d\,_________________); } 3、程序改错,不得增行或删行。(每小题10分,共20分) m(1)下面的程序是求 ?n!,在fun()函数中存在2处 n?1错误,请标记并改正。 #include { int m,n;long sum; for (m=1;m<=x;m++) { t=1; for(n=1;n<=m;n++) t=m*n; sum+=t; } return sum; } main() { int num; printf(\input a number: \); scanf(\%d\,#); printf(\1!+2!+??+%d!=%ld\\n\,num,fun(num)); 1 } (2)下列程序的功能是:从字符串str中,删除所有字母'C',不区分大小写。如:输入字符串\,删除后的字符串为\。在main()函数中有2处错误,请标记并改正。 main() { int t; int a[]={12,21,2,34,87,65,43,25,765,11}; sort(a,10); #include { char str[80]; int i=0,j=0; printf(\\\n请输入字符串:\); gets(str); while(str[i]!=‵\\0‵) { if(str([i]!=‵c‵||str[i]!=‵C‵) str[j]=str[i]; i++; } str[j]=‵\\0'; printf(\\\n删除后的字符串:%s\,str); } 4、程序设计(10分) 已知一个数列从1项开始的前6项为:0,0,1,1,2,4,以后的各项都是其相邻的前3项之和,计算并输出该数列前20项之和。 选考题 【第二组:程序方向】 1、以下程序是从一个二进制文件中读出结构体数据,并将结构体数据输出在屏幕上。在main()函数中有3处错误,请标记并改正,不得增行或删行。 #include { file * f; if((f=fopen(\a.txt\,\r\))==NULL) { printf(\cannot open outfile\\n\);exit(0);} while(feof(f)) { fread(stu,sizeof(struct student),1,f); printf(\%s,%.2f\\n\,stu.name,stu.score); } fclose(f); } 2、下面程序的功能是:用选择法对10个数进行排序(由小到大)。请完成sort()函数。 void sort(int x[],int n) { } printf(\排序后的数是:\\n\ for(i=0;i<10;i++) printf(\ } 湖南省2008年 六、程序分析题(本大题共3题,共75分) 1、程序分析题。(每小题5分,共25分) (1) #include main() { char a=55; a=~a&055; printf(\ } 运行结果是 . (2) #include #define test(x,y) x+y main() { float c; c=2*test(3.2,5.4)/2; printf(\} 运行结果是 . (3) #include void fun() { int x=1; static int y=1; printf(\ } main() { int i; for (i=0;i<2;i++) fun(); } 运行结果是 . (4) #include main() { int a=12,b=0; do { b+=2;a-=2+b; }while (a>=0); } 程序中循环体的执行次数是 . (5) #include main() { int n=132,i=1,j,k,b[10]; while(n!=0) { j=n%6; b[i]=j; n=n/6; i=i+1;} for (k=i-1;k>0;k--) printf(\ 2 程序的功能是 . 2、程序填空题(每空5分,共30分) (1)任意输入坐标平面上一点(x,y),求该点到原点(0,0)间的距离。 #include Node { float x; float y; }Node; main( ) { Node *p; p= ; scanf(\ printf(\ ; } (2) 下列给定程序中,函数fun()的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。 #include char *fun(char(*q)[M]) { int i; char *p; ; for(i=0; i if (strlen(p)< ) ; return p; } main( ) { charstr[N][M]={ \ \ char *longest; int i; longest=fun(str); printf(\puts(longest); } 3、程序改错,不得增行或删行(每小题10分,共20分) (1)下列程序的功能是求分数序列:89/55,-55/34,34/21,-21/13,13/8 …的前8项之和。程序中有2处错误,请标记并改正。 #include { int i,flag=1; float a=144,b=89,s=0,t; for(i=1;i<=8;i++) { s=s+a/b; flag=-flag; t=b;a=a-b;a=t; } printf(\} (2)下列程序的功能是采用简单插入的排序方法,随机产生10个整数,按从小到大的顺序排列。在程序中有2处错误,请标 记并改正。 #include { int i,j,a[11]; for(i=1;i<11;i++) a[i]=rand(); for(i=2;i<11;i++) { a[0]=a[i]; for(j=i-1;j>=1;j--) if(a[0] 七、程序设计题(本大题共1题,共15分) 有一辆在高速公路上行驶的汽车,司机在某一时刻看到里程表显示的数值为95859公里(95859为回文数,回文数是指正读反读均一样的数),7小时后,里程表上又出现了一个回文数。编程求出此回文数和汽车时速?(注:高速公路限速60公里以上,汽车的里程表为5位数) 选考题: [第二组:程序方向] 1、 程序填空(每空5分,共15分) 下列程序定义了3*3的二维数组,并在主函数中自动赋值;函数fun的功能是使二维数组的上三角元素的值全部置0。 调用函数前 调用函数后 1 2 3 1 0 0 2 4 6 2 4 0 3 6 9 3 6 9 #include main() { int a[3][3],i,j; for(i=1;i<3;i++) for(j=1;j<=3;j++) =i*j; fun(3,a); printf(\for(i=0;i<3;i++) {for(j=1;j<3;j++) printf(\ printf(\ } 3 } void fun (int n,int a[3][3]) { int i,j; for(i=0;i for(j=i+1;j< ;j++) a[i][j]=0; } 2、 程序设计 弦数是指平方值等于某两个正整数平方之和的正整数,如:32+42=52,因此5为弦数。 编程输出10到100之内的所有弦数及弦数的数量。 湖南省2009年 五、程序分析题(本大题共3小题,共75分) 30、阅读程序,写出运行结果。(每小题5分,共25分) (1)#include { struct stu{ char name[10]; int age,sex; }; printf(\%d\,sizeof(struct stu)); } (2) #include printf(\%c,%d\,x,~x); } (3) #include main() { double x=5.14; int a=(int)floor(x); int b=(int)pow(floor(x),3); printf(\%d,%d\,a,b); } (4) #include main() { char **p,*t[]={\computer\,\phone\,\mp4\}; for(p=t+2;p>=t;p--) printf(\%c \,*(*p+1)); } (5) #include printf(\%d\,arr[i]); } main() { int arr[]={2,4,6,8,10,12}; f(arr+1); } 31、程序填空。请按题目要求,将正确的内容填入答题卡相应位置中,使程序完整(每空5分,共30分) (1)以下程序的功能是:从3个红球、6个白球、5个蓝球中任意取出8个球,且其中至少有一个白球,输出所有可能的方案。 #include Blue”); for(i=0;i<=3;i++) for( ;j<=6;j++) { k= ; if( ) printf(\%d,%d,%d\\n\,I,j,k); } } (2) 以下程序的功能是:求100以内最大的一对孪生素数之和,孪生素数是指两个素数之差为2。 #include #include { if (i%j==0) break; } if (j>k) { r=1; } } 4
共分享92篇相关文档