湖南省对口招生《C语言》高考复习卷(二)

标签:
精品文字版答案
2025-03-10
| 2份
| 20页
| 251人阅读
| 2人下载

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 编程语言基础(C语言) 模拟卷(二) 考试时间:100分钟 满分:100分 姓名 班级 学号 1 1、 单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分) 1. fwrite 函数的一般调用形式是( ) A. fwrite(buffer,count,size,fp); B. fwrite(fp,size,count,buffer); C. fwrite(fp,cout,size,buffer); D. fwrite(buffer,size,count,fp); 2. 若有以下定义和语句,则对a数组元素地址的正确引用为( ) int a[2][3],( * p)[3]; p=a; A.p[1]+1 B.*(p+2) C.p[2] D.(p+1)+2 3. 已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( ) A. p=max; B. p=max(a,b); C. *p=max; D. *p=max(a,b); 4. 下列程序的输出结果是( ) int main( ) { char s[80], *sp="HELLO!"; sp=strcpy(s,sp); s[0]='G'; puts(sp);getch();} A. HELLO! B. ELLO! C. G D. GELLO! 5. 相同结构体类型的变量之间,可以( ) A.比较大小 B.地址相同 C.赋值 D.相加 6. 能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是( ) A.a>=0 | a<=10 B.a>=10 or a<=0 C.a>=10 && a<=0 D.a>=10 || a<=0 7. 已有定义 int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是( ) A.a=*p1+*p2; B.p1=a; C.p1=p2; D.a=*p1*(*p2); 8. 若有说明:int *p, a=1, b; 以下正确的程序段是( ) A. p=&b; B. scanf("%d", &b); scanf("%d", &p); *p=b; C. p=&b; D. p=&b; scanf("%d", *p); *p=a; 9. 以下程序的输出结果是( ) main(){ int a[10]={1,3,5,7,9,11,13,15,17,19},*p=&a[4],*q=p+3; printf("%d",*p+*(q+1)); getch(); } A.12 B.24 C.25 D.26 10. 设有定义char a,b;若想要通过a&b运算保留a的第3位和第6位的值,则b的二进制数应该是( ) A.11011011 B.00010010 C.01110010 D.00100100 11. 下列程序段的运行结果是( ) main() {int x[5],i; x[0]=1;x[1]=1; for(i=2;i<5;i++) x[i]=x[i-1]+x[i-2]; for(i=2;i<5;i++) printf("%d ",x[i]); getch();} A.3 5 8 B.1 1 2 C.1 2 3 D. 2 3 5 12. 已有定义:int a[5];则以下为a[0]中输入数据的语句中,错误的一项是( ) A.scanf(“%d”,a[0]); B.scanf(“%d”,a); C.scanf(“%d”,&a[0]); D.scanf(“%d”,&a); 13. 若有语句:int c1=1,c2=2,c3;c3=1.0/c2*c1;则c3的值是( ) A.0 B.0.5 C.1 D.2 14. 下列选项中,对数组进行初始化的方式不正确的一项是( ) A.char a[5]={“ABCD”}; B.char a[5]=“”; C.char a[5]={‘A’,‘B’,‘C’,‘D’}; D.char a[5]=“ABCDE”; 15. 语句:while(!E);中的表达式!E等价于( ) A.E==0 B.E!=1 C.E!=0 D.E==1 16. else总是与在其之前( )if配对 A.最近的 B.缩进相同的 C.最远的 D.最近的、未配对的、同一{}内的 17. 下列选项中,可以判断整数n是否为两位数的表达式是( ) A.10<=n<=99 B.10<=n||n<=99 C.10<=n,n<=99 D.10<=n&&n<=99 18. 下列表达式中,值不为4的是( ) A.sizeof(“ABC”) B.sizeof(‘1’) C.sizeof(1F) D.strlen(“ABCD”) 19. 下列选项中,说法正确的一项是( ) A.预处理命令都以#开头 B.预处理命令都以分号开头 C.#include后只能是.h文件 D.用#define定义的符号常量可以用于说明数组大小 20. 已有语句:int a=1,b=0,c=a>0?++b:- -b;,则b和c的值分别是( ) A.-1 1 B.-1 -1 C.0 1 D.1 1 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> void fun(int * x,int * y) {printf("%d %d", * x, * y); *x=1+*y; *y=3+*x;} int main( ) { int x=7,y=8; fun(&y,&x); printf(" %d %d ",x,y); getch();} 22. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int fun() {static int x=1; x=x*2; return x++;} main(){ int i,s=1;for(i=1;i<=4;i++) s+=fun(); printf("%d+%d",s,s+1); getch();} 23. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main(){ char s[ ]="ab\'cefg\'",*p=s+1; printf("%c+", * (p++)); printf("%s",p+2); getch();} 24. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main() {int a[3][3]={1,3,6,7,9,11,14,15,17},s1=0,s2=0,i,j; for( i=0;i<3;i++) for( j=0;j<3;j++) if( i==j ) s1=s1+a[i][j]; for( i=0;i<3;i++) for (j=2;j>=0;j--) if ((i+j)==2) s2=s2+a[i][j]; printf("s1=%d,s2=%d ",s1,s2 ); getch();} 25. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> void f(int a[ ]) {int i=0; while(a[i]<=10) { printf("%d ",a[i]); i++;} } int main( ) {int a[ ]={1,5,10,9,11,7}; f(a+1); getch();} 26. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> void sort(int a[ ]) {int i,j,t; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t;}} int main( ) {int a[5]={-5,10,-7,3,7},i,t,j; sort(a); for(i=0;i<=4;i++) printf("%d ",a[i]); getch();} 27. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int fun( ) {int n=0,i,j,k; for(i=1;i<=9;i++) for(k=0;k<=8;k=k+2) for(j=0;j<=9;j++) if(j==i&&i==k) n++; return n;} int main( ) {int n; n=fun( ); printf("n= %d ",n);getch();} 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 下面程序的功能是统计子串substr在母串str中出现的次数。请填空。 #include<stdio.h> #include<conio.h> #include<string.h> int count(char * str, char * substr) { int i,j,k,num=0; for(i=0;【1】;i++) for(j=i,k=0;【2】;k++,j++) if(substr[【3】]=='\0') { num++;break;} return(num);} int main( ) { char str[80], substr[80]; int n; gets(str); gets(substr); printf("%d ",count(str,substr)); getch();} 29. 下面程序的功能是用递归法将一个整数存放到一个字符数组中,按逆序存放。如将583存放成385。请填空。 #include<stdio.h> #include<conio.h> void convert(char * a,int n) { int i; if((【1】)!=0) convert(a+1,i); * a=【2】; } int main( ) {int number; char str[10]=""; scanf("%d",&number); convert(str,number); puts(str); getch();} 30. 下列程序的功能是统计文本文件abc.txt中的英语字母、阿拉伯数字字符的个数,请填空。 #include<stdio.h> #include<conio.h> main() { int a=0,b=0; FILE *fp;char ch; fp=fopen(“abc.txt”,“r”); if(fp==NULL) { printf(“file open fail!”); exit(0);} while(【1】) { if(【2】) a++; if(ch>=‘0’&&ch<=‘9’) b++;} printf(“英文字母的个数为:%d,阿拉伯数字的个数为:%d”,a,b); 【3】 ;getch();} 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 31. 下面程序将二维数组 a的行和列元素互换后存到另一个二维数组b中。程序中有两处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 main() L4 { int a[2][3]={{1,2,3},{4,5,6}}; L5 int b[3][2],i,j; L6 printf("array a: "); L7 for(i=0;i<=1;i++) L8 { for(j=0;j<=2;j++) L9 { printf("%5d",a[i][j] ); L10 b[i][j]=a[i][j];} L11 printf(" ");} L12 printf("array b: "); L13 for(i=0;i<=2;i++) L14 { for(j=0;j<=1;j++) L15 printf("%5d",a[i][j]); L16 printf(" ");} L17 getch();} 32. 下列程序的功能是:在主函数中输入10个等长的字符串,用另一个函数对他们进行排序,然后在主函数中输出这10个已经排好序的字符串。 L1 #include <stdio.h> L2 #include<conio.h> L3 #include <string.h> L4 int main() L5 {void sort(char s[][6]); L6 int i; L7 char str[10][6]; L8 printf("input 10 strings: "); L9 for(i=0;i<10;i++) L10 scanf("%s",str[i]); L11 sort(str); L12 printf("Now,the sequence is : "); L13 for(i=0;i<10;i++) L14 printf("%s ",str[i]); L15 getch();} L16 void sort(char s[10][6]) L17 {int i,j; L18 char *p,temp[10]; L19 *p=temp; L20 for(i=0;i<9;i++) L21 for(j=0;j<9;j++) L22 if(strcmp(s[j],s[j+1])<0) L23 {strcpy(p,s[j]); L24 strcpy(s[j],s[j+1]); L25 strcpy(s[j+1],p);}} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 《编程语言基础——C语言》高等教育出版社(第五版) 编程语言基础(C语言) 模拟卷(二) 考试时间:100分钟 满分:100分 姓名 班级 学号 1 1、 单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分) 1. fwrite 函数的一般调用形式是( ) A. fwrite(buffer,count,size,fp); B. fwrite(fp,size,count,buffer); C. fwrite(fp,cout,size,buffer); D. fwrite(buffer,size,count,fp); 答案:D 2. 若有以下定义和语句,则对a数组元素地址的正确引用为( ) int a[2][3],( * p)[3]; p=a; A.p[1]+1 B.*(p+2) C.p[2] D.(p+1)+2 答案:A 3. 已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( ) A. p=max; B. p=max(a,b); C. *p=max; D. *p=max(a,b); 答案:B 4. 下列程序的输出结果是( ) int main( ) { char s[80], *sp="HELLO!"; sp=strcpy(s,sp); s[0]='G'; puts(sp);getch();} A. HELLO! B. ELLO! C. G D. GELLO! 答案:D 5. 相同结构体类型的变量之间,可以( ) A.比较大小 B.地址相同 C.赋值 D.相加 答案:C 6. 能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是( ) A.a>=0 | a<=10 B.a>=10 or a<=0 C.a>=10 && a<=0 D.a>=10 || a<=0 答案:D 7. 已有定义 int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是( ) A.a=*p1+*p2; B.p1=a; C.p1=p2; D.a=*p1*(*p2); 答案:B 8. 若有说明:int *p, a=1, b; 以下正确的程序段是( ) A. p=&b; B. scanf("%d", &b); scanf("%d", &p); *p=b; C. p=&b; D. p=&b; scanf("%d", *p); *p=a; 答案:B 9. 以下程序的输出结果是( ) main(){ int a[10]={1,3,5,7,9,11,13,15,17,19},*p=&a[4],*q=p+3; printf("%d",*p+*(q+1)); getch(); } A.12 B.24 C.25 D.26 答案:D 10. 设有定义char a,b;若想要通过a&b运算保留a的第3位和第6位的值,则b的二进制数应该是( ) A.11011011 B.00010010 C.01110010 D.00100100 答案:A 11. 下列程序段的运行结果是( ) main() {int x[5],i; x[0]=1;x[1]=1; for(i=2;i<5;i++) x[i]=x[i-1]+x[i-2]; for(i=2;i<5;i++) printf("%d ",x[i]); getch();} A.3 5 8 B.1 1 2 C.1 2 3 D. 2 3 5 答案:D 12. 已有定义:int a[5];则以下为a[0]中输入数据的语句中,错误的一项是( ) A.scanf(“%d”,a[0]); B.scanf(“%d”,a); C.scanf(“%d”,&a[0]); D.scanf(“%d”,&a); 答案:A 13. 若有语句:int c1=1,c2=2,c3;c3=1.0/c2*c1;则c3的值是( ) A.0 B.0.5 C.1 D.2 答案:A 14. 下列选项中,对数组进行初始化的方式不正确的一项是( ) A.char a[5]={“ABCD”}; B.char a[5]=“”; C.char a[5]={‘A’,‘B’,‘C’,‘D’}; D.char a[5]=“ABCDE”; 答案:D 15. 语句:while(!E);中的表达式!E等价于( ) A.E==0 B.E!=1 C.E!=0 D.E==1 答案:A 16. else总是与在其之前( )if配对 A.最近的 B.缩进相同的 C.最远的 D.最近的、未配对的、同一{}内的 答案:D 17. 下列选项中,可以判断整数n是否为两位数的表达式是( ) A.10<=n<=99 B.10<=n||n<=99 C.10<=n,n<=99 D.10<=n&&n<=99 答案:D 18. 下列表达式中,值不为4的是( ) A.sizeof(“ABC”) B.sizeof(‘1’) C.sizeof(1F) D.strlen(“ABCD”) 答案:B 19. 下列选项中,说法正确的一项是( ) A.预处理命令都以#开头 B.预处理命令都以分号开头 C.#include后只能是.h文件 D.用#define定义的符号常量可以用于说明数组大小 答案:A 20. 已有语句:int a=1,b=0,c=a>0?++b:- -b;,则b和c的值分别是( ) A.-1 1 B.-1 -1 C.0 1 D.1 1 答案:D 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> void fun(int * x,int * y) {printf("%d %d", * x, * y); *x=1+*y; *y=3+*x;} int main( ) { int x=7,y=8; fun(&y,&x); printf(" %d %d ",x,y); getch();} 答案:8 7 11 8 22. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int fun() {static int x=1; x=x*2; return x++;} main(){ int i,s=1;for(i=1;i<=4;i++) s+=fun(); printf("%d+%d",s,s+1); getch();} 答案:53+54 23. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main(){ char s[ ]="ab\'cefg\'",*p=s+1; printf("%c+", * (p++)); printf("%s",p+2); getch();} 答案:b+efg' 24. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main() {int a[3][3]={1,3,6,7,9,11,14,15,17},s1=0,s2=0,i,j; for( i=0;i<3;i++) for( j=0;j<3;j++) if( i==j ) s1=s1+a[i][j]; for( i=0;i<3;i++) for (j=2;j>=0;j--) if ((i+j)==2) s2=s2+a[i][j]; printf("s1=%d,s2=%d ",s1,s2 ); getch();} 答案:s1=27,s2=29 25. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> void f(int a[ ]) {int i=0; while(a[i]<=10) { printf("%d ",a[i]); i++;} } int main( ) {int a[ ]={1,5,10,9,11,7}; f(a+1); getch();} 答案:5 10 9 26. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> void sort(int a[ ]) {int i,j,t; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t;}} int main( ) {int a[5]={-5,10,-7,3,7},i,t,j; sort(a); for(i=0;i<=4;i++) printf("%d ",a[i]); getch();} 答案:-7 -5 3 7 10 27. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int fun( ) {int n=0,i,j,k; for(i=1;i<=9;i++) for(k=0;k<=8;k=k+2) for(j=0;j<=9;j++) if(j==i&&i==k) n++; return n;} int main( ) {int n; n=fun( ); printf("n= %d ",n);getch();} 答案:n= 4 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 下面程序的功能是统计子串substr在母串str中出现的次数。请填空。 #include<stdio.h> #include<conio.h> #include<string.h> int count(char * str, char * substr) { int i,j,k,num=0; for(i=0;【1】;i++) for(j=i,k=0;【2】;k++,j++) if(substr[【3】]=='\0') { num++;break;} return(num);} int main( ) { char str[80], substr[80]; int n; gets(str); gets(substr); printf("%d ",count(str,substr)); getch();} 答案: 【1】str[i]!='\0' 【2】substr[k]==str[j] 【3】k+1 29. 下面程序的功能是用递归法将一个整数存放到一个字符数组中,按逆序存放。如将583存放成385。请填空。 #include<stdio.h> #include<conio.h> void convert(char * a,int n) { int i; if((【1】)!=0) convert(a+1,i); * a=【2】; } int main( ) {int number; char str[10]=""; scanf("%d",&number); convert(str,number); puts(str); getch();} 答案: 【1】i=n/10 【2】n%10+'0' 30. 下列程序的功能是统计文本文件abc.txt中的英语字母、阿拉伯数字字符的个数,请填空。 #include<stdio.h> #include<conio.h> main() { int a=0,b=0; FILE *fp;char ch; fp=fopen(“abc.txt”,“r”); if(fp==NULL) { printf(“file open fail!”); exit(0);} while(【1】) { if(【2】) a++; if(ch>=‘0’&&ch<=‘9’) b++;} printf(“英文字母的个数为:%d,阿拉伯数字的个数为:%d”,a,b); 【3】 ;getch();} 答案: 【1】!feof(fp)&&ch=fgetc(fp) 【2】ch>=‘a’&&ch<=‘z’||ch>=‘A’&&ch<=‘Z’ 【3】fclose(fp) 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 31. 下面程序将二维数组 a的行和列元素互换后存到另一个二维数组b中。程序中有两处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 main() L4 { int a[2][3]={{1,2,3},{4,5,6}}; L5 int b[3][2],i,j; L6 printf("array a: "); L7 for(i=0;i<=1;i++) L8 { for(j=0;j<=2;j++) L9 { printf("%5d",a[i][j] ); L10 b[i][j]=a[i][j];} L11 printf(" ");} L12 printf("array b: "); L13 for(i=0;i<=2;i++) L14 { for(j=0;j<=1;j++) L15 printf("%5d",a[i][j]); L16 printf(" ");} L17 getch();} 答案: 【1】L10 b[j][i]=a[i][j];} 【2】L15 printf("%5d",b[i][j]); 32. 下列程序的功能是:在主函数中输入10个等长的字符串,用另一个函数对他们进行排序,然后在主函数中输出这10个已经排好序的字符串。 L1 #include <stdio.h> L2 #include<conio.h> L3 #include <string.h> L4 int main() L5 {void sort(char s[][6]); L6 int i; L7 char str[10][6]; L8 printf("input 10 strings: "); L9 for(i=0;i<10;i++) L10 scanf("%s",str[i]); L11 sort(str); L12 printf("Now,the sequence is : "); L13 for(i=0;i<10;i++) L14 printf("%s ",str[i]); L15 getch();} L16 void sort(char s[10][6]) L17 {int i,j; L18 char *p,temp[10]; L19 *p=temp; L20 for(i=0;i<9;i++) L21 for(j=0;j<9;j++) L22 if(strcmp(s[j],s[j+1])<0) L23 {strcpy(p,s[j]); L24 strcpy(s[j],s[j+1]); L25 strcpy(s[j+1],p);}} 答案: 【1】L19 p=temp; 【2】L21 for(j=0;j<9-i;j++) 【3】L22 if(strcmp(s[j],s[j+1])>0) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

湖南省对口招生《C语言》高考复习卷(二)
1
湖南省对口招生《C语言》高考复习卷(二)
2
湖南省对口招生《C语言》高考复习卷(二)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。