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

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

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 编程语言基础(C语言) 模拟卷(九) 考试时间:100分钟 满分:100分 姓名 班级 学号 1 1、 单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分) 1. 若有定义:int a[2][3];则对 a 数组的第i行第j列(假设 i,j已正确说明并赋值)元素值的正确引用为( ) A.(a+i)[j] B.*(a+i)+j C.*(a+i+j) D.*(*(a+i)+j) 2. 有以下程序段,若k为int型变量且 0≤k<4, 则对字符串的不正确引用是( ) char str[4][10]={"first","second","third","fourth"}, * strp[4]; int n;for ( n=0;n<4;n++) strp[n]=str[n]; A.strp B.*strp C.str[k] D.strp[k] 3. 标准函数fgets(s,n,f)的功能是( ) A.从文件f中读取长度为n的字符串存入指针s所指向的内存 B.从文件f中读取长度为n-1的字符串存入指针s所指向的内存 C.从文件f中读取n个字符串存入指针s所指向的内存 D.从文件f中读取长度不超过n-1的字符串存入指针s所指向的内存 4. 设有定义:char *a[2]={"1234","5678"};则正确的叙述是( ) A. a数组的两个元素中各自存放了字符串"1234"和"5678"的首地址 B. a数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 C. a是指针变量,它指向含有两个数组元素的字符型一维数组 D. a数组元素的值分别是1234 和5678 5. 语句 int( *ptr)( );的含义是( ) A. ptr 是指向一维数组的指针变量 B. ptr 是指向 int 型数据的指针变量 C. ptr 是指向函数的指针,该函数返回一个int型数据 D. ptr 是一个函数名,该函数的返回值是指向int型数据的指针 6. 以下程序的输出结果是( ) main(){ int x,y,z; x = 1; y = 2; z = 3; if(x>y) if(x>z)printf("%d",x); else printf("%d",y); printf("%d ",z); getch();} A.3 B.1 C.2 D.无输出 7. 以下程序的运行结果是( ) #include <stdio.h> #include<conio.h"> main() {int i; for(i=0; i<3; i++) switch(i) { case 1: printf("%d", i); case 2: printf("%d", i); default : printf("%d", i);} getch();} A.012 B.0111 C.01112 D. 011122 8. 以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> main(){ int a, b, *p = &a, *q = &b; a = 10; b = 20; *p = b;*q = a; printf("a=%d,b=%d ", a, b); getch();} A.a=10,b=20 B.a=20,b=10 C. a=20,b=20 D.a=10,b=10 9. 下列程序的运行结果是( ) main(){ int x = 2; while ( x-- ); printf("%d ", x); getch();} A.2 B.1 C.0 D. -1 10. 下列程序的运行结果是( ) main(){ int i=1,j=3; printf("%d,", i++); {int i = 0; i += j * 2; printf("%d,%d,", i,j ); } printf("%d,%d ", i,j ); getch();} A. 1,6,3,2,3 B.1,6,3,2,2 C.1,3,5,7,9 D.以上选项均不正确 11. 以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> main(){ int k=8; switch(k) {case 9: k+=1; case 10: k+=1; case 11: k+=1; break; default: k+=1;} printf("%d ",k); getch();} A.8 B.7 C.10 D.9 12. 若有定义:union{int a;char c;float x;}b;,则变量b占用的字节数为( ) A.4 B.1 C.9 D.不确定 13. 执行下列程序段后,z的二进制值是( ) char x=3,y=6,z; z=x^y<<2; A.000101000 B.00011011 C.00011100 D.00011000 14. 若有下列程序段,则下面叙述中,错误的一项是( ) union data {int d1;float d2;}t; A.变量t与成员d2所占的内存字节数相同 B.成员d1和d2的地址相同 C.变量t和成员d2的地址相同 D.若给t.d1赋值99后,则t.d2中的值是99.0 15. 在宏定义:#define PI 3.1415中,用宏名PI代替一个( ) A.变量 B.单精度数 C.双精度数 D.字符串 16. 下列有关文件的打开方式,叙述正确的一项是( ) A.用“r”的方式打开文件时只能向文件写数据 B.用“R”的方式可以打开文件读数据 C用“w”的方式打开文件时只能向文件写数据,且该文件可以不存在 D.用“a”的方式向已存在的文件写入数据时,会覆盖文件的原有数据 17. 设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则当0<=i<10时,对数组a的引用错误的一项是( ) A.a[p-a] B.*(*(a+1)) C.p[i] D.*(&a[i]) 18. 若有定义:char *s=“\t\’name\\address ”;,则指针s所指向的字符串的长度为( ) A.19 B.18 C.15 D.17 19. 若有语句:char str[]=“hello”,*ptr=str;,则*(ptr+5)的值为( ) A.‘0’ B.‘\0’ C.不确定的值 D.‘\0’的地址 20. 以下有关函数的叙述中,正确的是( ) A.函数定义不能嵌套,但是函数调用可以嵌套 B.函数定义与调用都可以嵌套 C.函数定义可以嵌套,但是函数调用不可以嵌套 D.函数定义与调用都不能嵌套 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int a[3][3]={1,2,3,4,5,6,7,8,9}, * p; void f(int * s,int p[ ][3]) {* s= * (* (p+1)-2);} int main( ) { int x=20;p=&x; f(p,a); printf("%d ", * p); getch();} 22. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int *p; void pp(int a,int * b) { int c=5;*p=*b+c;a=*p-c; printf("(2) %d %d %d ",a, * b, * p);} int main( ) { int a=4,b=5,c=6; p=&b;pp(a+b,&c); printf("(l) %d %d %d ",a,b, * p); getch();} 23. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> main(){ int a = 3, b = 2, c = 1; c -= ++b; b *= a + c; { int b = 5, c = 12; c /= b * 2; a -= c; printf("%d, %d, %d, ", a, b, c ); a += --c;} printf("%d, %d, %d ", a, b, c); getch();} 24. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main() { int a[10]={1,2,2,3,4,3,4,5,4,5}; int n=0,i,j,c,k; for(i=0;i<10-n;i++) { c=a[i]; for(j=i+1;j<10-n;j++) if(a[j]==c) { for(k=j;k<10-n;k++) a[k]=a[k+1]; n++;} } for(i=0;i<(10-n);i++) printf("%d",a[i]); getch();} 25. 当从键盘输入23时,以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main() { int x,y,i,a[8],j,u; scanf("%d",&x); y=x;i=0; do { u=y/2; a[i]=y%2; i++;y=u; } while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); getch();} 26. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int sub(int n); int main( ) { int i=5; printf("%d ",sub(i)); getch();} int sub(int n) {int a; if(n==1) return 1; a=n+sub(n-1); return(a);} 27. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int fun(char * s) {char * p=s; while(*p) p++; return(p-s);} int main( ) {char * a="123456789"; int i; i=fun(a+2); printf("%d",i);getch();} 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 以下程序将数组 a中的数据按逆序存放。请填空。 #include <stdio.h> #include<conio.h> #define M 8 int main( ) { int a[M], i, j, t ; for( i=0;i<M;i++) scanf("%d", a+i ); i=0; j=M-1; while ( i<j ) { t= * (a+i);【1】; * (a+j)=t; i++; j--; } for( i=0;i<M ;i++)printf("%3d", 【2】); getch();} 29. 下面程序的功能是检查字符串s中左括号“(”的个数和右括号“)”的个数,如果个数相同或者右括号的个数少于左括号的个数,函数返回1,否则返回0。请填空。 #include <stdio.h> #include<conio.h> 【1】 int main( ) {char c[80]; int d; gets(c); d=check(c); printf("d=%d",d); getch();} int check(char * s) { int i=0,r=0; while( * s!='\0') { if( * s=='(' ) i++; else if( * s==')' ) r++; 【2】; } if (【3】) return(1); else return(0);} 30. 下面程序的功能是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串称为“回文”,如level)。请填空。 #include <stdio.h> #include<conio.h> #include <string.h> int main( ) { char s[81], * p1, * p2; int n; gets(s); n=strlen(s); p1=s; p2=【1】; while(【2】) { if(【3】) break; else { p1++;p2--;} } if(p1<p2) printf("No "); else printf("Yes ");getch();} 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 31. 下列程序的功能是:输入一行字符,将此字符串中最长的单词输出。程序中有五处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 #include <string.h> L4 int main() L5 {int alphabetic(char); L6 int longest(char []); L7 int i; L8 char line[100]; L9 printf("input one line: "); L10 gets(line); L11 printf("The longest word is:"); L12 for(i=longest(i);alphabetic(line[i]);i++) L13 printf("%c",line[i]); L14 printf(" "); getch();} L15 int alphabetic(char c) //判断是否为字母 L16 {if((c>='a'&&c<='z')&&(c>='A'&&c<='Z')) L17 return(1); L18 else return(0);} L19 int longest(char string[])//查找最长的单词 L20 {int len=0,i,length=0,flag=1,place=0,point; L21 for(i=0;i<= string;i++) L22 if(alphabetic(string[i])) L23 if(!flag) L24 {point=i; flag=0;len++;} L25 else len++; L26 else L27 {flag=1; L28 if(len<=length) L29 {length=len; place=point;} L30 len=0;} L31 return(place);} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 《编程语言基础——C语言》高等教育出版社(第五版) 编程语言基础(C语言) 模拟卷(九) 考试时间:100分钟 满分:100分 姓名 班级 学号 1 1、 单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分) 1. 若有定义:int a[2][3];则对 a 数组的第i行第j列(假设 i,j已正确说明并赋值)元素值的正确引用为( ) A.(a+i)[j] B.*(a+i)+j C.*(a+i+j) D.*(*(a+i)+j) 答案:D 2. 有以下程序段,若k为int型变量且 0≤k<4, 则对字符串的不正确引用是( ) char str[4][10]={"first","second","third","fourth"}, * strp[4]; int n;for ( n=0;n<4;n++) strp[n]=str[n]; A.strp B.*strp C.str[k] D.strp[k] 答案:A 3. 标准函数fgets(s,n,f)的功能是( ) A.从文件f中读取长度为n的字符串存入指针s所指向的内存 B.从文件f中读取长度为n-1的字符串存入指针s所指向的内存 C.从文件f中读取n个字符串存入指针s所指向的内存 D.从文件f中读取长度不超过n-1的字符串存入指针s所指向的内存 答案:D 4. 设有定义:char *a[2]={"1234","5678"};则正确的叙述是( ) A. a数组的两个元素中各自存放了字符串"1234"和"5678"的首地址 B. a数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 C. a是指针变量,它指向含有两个数组元素的字符型一维数组 D. a数组元素的值分别是1234 和5678 答案:A 5. 语句 int( *ptr)( );的含义是( ) A. ptr 是指向一维数组的指针变量 B. ptr 是指向 int 型数据的指针变量 C. ptr 是指向函数的指针,该函数返回一个int型数据 D. ptr 是一个函数名,该函数的返回值是指向int型数据的指针 答案:C 6. 以下程序的输出结果是( ) main(){ int x,y,z; x = 1; y = 2; z = 3; if(x>y) if(x>z)printf("%d",x); else printf("%d",y); printf("%d ",z); getch();} A.3 B.1 C.2 D.无输出 答案:A 7. 以下程序的运行结果是( ) #include <stdio.h> #include<conio.h"> main() {int i; for(i=0; i<3; i++) switch(i) { case 1: printf("%d", i); case 2: printf("%d", i); default : printf("%d", i);} getch();} A.012 B.0111 C.01112 D. 011122 答案:D 8. 以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> main(){ int a, b, *p = &a, *q = &b; a = 10; b = 20; *p = b;*q = a; printf("a=%d,b=%d ", a, b); getch();} A.a=10,b=20 B.a=20,b=10 C. a=20,b=20 D.a=10,b=10 答案:C 9. 下列程序的运行结果是( ) main(){ int x = 2; while ( x-- ); printf("%d ", x); getch();} A.2 B.1 C.0 D. -1 答案:D 10. 下列程序的运行结果是( ) main(){ int i=1,j=3; printf("%d,", i++); {int i = 0; i += j * 2; printf("%d,%d,", i,j ); } printf("%d,%d ", i,j ); getch();} A. 1,6,3,2,3 B.1,6,3,2,2 C.1,3,5,7,9 D.以上选项均不正确 答案:A 11. 以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> main(){ int k=8; switch(k) {case 9: k+=1; case 10: k+=1; case 11: k+=1; break; default: k+=1;} printf("%d ",k); getch();} A.8 B.7 C.10 D.9 答案:D 12. 若有定义:union{int a;char c;float x;}b;,则变量b占用的字节数为( ) A.4 B.1 C.9 D.不确定 答案:A 13. 执行下列程序段后,z的二进制值是( ) char x=3,y=6,z; z=x^y<<2; A.000101000 B.00011011 C.00011100 D.00011000 答案:B 14. 若有下列程序段,则下面叙述中,错误的一项是( ) union data {int d1;float d2;}t; A.变量t与成员d2所占的内存字节数相同 B.成员d1和d2的地址相同 C.变量t和成员d2的地址相同 D.若给t.d1赋值99后,则t.d2中的值是99.0 答案:D 15. 在宏定义:#define PI 3.1415中,用宏名PI代替一个( ) A.变量 B.单精度数 C.双精度数 D.字符串 答案:D 16. 下列有关文件的打开方式,叙述正确的一项是( ) A.用“r”的方式打开文件时只能向文件写数据 B.用“R”的方式可以打开文件读数据 C用“w”的方式打开文件时只能向文件写数据,且该文件可以不存在 D.用“a”的方式向已存在的文件写入数据时,会覆盖文件的原有数据 答案:C 17. 设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则当0<=i<10时,对数组a的引用错误的一项是( ) A.a[p-a] B.*(*(a+1)) C.p[i] D.*(&a[i]) 答案:B 18. 若有定义:char *s=“\t\’name\\address ”;,则指针s所指向的字符串的长度为( ) A.19 B.18 C.15 D.17 答案:C 19. 若有语句:char str[]=“hello”,*ptr=str;,则*(ptr+5)的值为( ) A.‘0’ B.‘\0’ C.不确定的值 D.‘\0’的地址 答案:B 20. 以下有关函数的叙述中,正确的是( ) A.函数定义不能嵌套,但是函数调用可以嵌套 B.函数定义与调用都可以嵌套 C.函数定义可以嵌套,但是函数调用不可以嵌套 D.函数定义与调用都不能嵌套 答案:A 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int a[3][3]={1,2,3,4,5,6,7,8,9}, * p; void f(int * s,int p[ ][3]) {* s= * (* (p+1)-2);} int main( ) { int x=20;p=&x; f(p,a); printf("%d ", * p); getch();} 答案:2 22. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int *p; void pp(int a,int * b) { int c=5;*p=*b+c;a=*p-c; printf("(2) %d %d %d ",a, * b, * p);} int main( ) { int a=4,b=5,c=6; p=&b;pp(a+b,&c); printf("(l) %d %d %d ",a,b, * p); getch();} 答案: (2) 6 6 11 (l) 4 11 11 23. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> main(){ int a = 3, b = 2, c = 1; c -= ++b; b *= a + c; { int b = 5, c = 12; c /= b * 2; a -= c; printf("%d, %d, %d, ", a, b, c ); a += --c;} printf("%d, %d, %d ", a, b, c); getch();} 答案:2, 5, 1, 2, 3, -2 24. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main() { int a[10]={1,2,2,3,4,3,4,5,4,5}; int n=0,i,j,c,k; for(i=0;i<10-n;i++) { c=a[i]; for(j=i+1;j<10-n;j++) if(a[j]==c) { for(k=j;k<10-n;k++) a[k]=a[k+1]; n++;} } for(i=0;i<(10-n);i++) printf("%d",a[i]); getch();} 答案:12345 25. 当从键盘输入23时,以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> main() { int x,y,i,a[8],j,u; scanf("%d",&x); y=x;i=0; do { u=y/2; a[i]=y%2; i++;y=u; } while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); getch();} 答案:10111 26. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int sub(int n); int main( ) { int i=5; printf("%d ",sub(i)); getch();} int sub(int n) {int a; if(n==1) return 1; a=n+sub(n-1); return(a);} 答案:15 27. 以下程序的运行结果是【 】。 #include <stdio.h> #include<conio.h> int fun(char * s) {char * p=s; while(*p) p++; return(p-s);} int main( ) {char * a="123456789"; int i; i=fun(a+2); printf("%d",i);getch();} 答案:7 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 以下程序将数组 a中的数据按逆序存放。请填空。 #include <stdio.h> #include<conio.h> #define M 8 int main( ) { int a[M], i, j, t ; for( i=0;i<M;i++) scanf("%d", a+i ); i=0; j=M-1; while ( i<j ) { t= * (a+i);【1】; * (a+j)=t; i++; j--; } for( i=0;i<M ;i++)printf("%3d", 【2】); getch();} 答案: 【1】*(a+i)=*(a+j) 【2】*(a+i) 29. 下面程序的功能是检查字符串s中左括号“(”的个数和右括号“)”的个数,如果个数相同或者右括号的个数少于左括号的个数,函数返回1,否则返回0。请填空。 #include <stdio.h> #include<conio.h> 【1】 int main( ) {char c[80]; int d; gets(c); d=check(c); printf("d=%d",d); getch();} int check(char * s) { int i=0,r=0; while( * s!='\0') { if( * s=='(' ) i++; else if( * s==')' ) r++; 【2】; } if (【3】) return(1); else return(0);} 答案: 【1】int check(char * s); 【2】s++ 【3】r==i||r<i 30. 下面程序的功能是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串称为“回文”,如level)。请填空。 #include <stdio.h> #include<conio.h> #include <string.h> int main( ) { char s[81], * p1, * p2; int n; gets(s); n=strlen(s); p1=s; p2=【1】; while(【2】) { if(【3】) break; else { p1++;p2--;} } if(p1<p2) printf("No "); else printf("Yes ");getch();} 答案: 【1】s+n-1 【2】p1<p2 【3】*p1!=*p2 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 31. 下列程序的功能是:输入一行字符,将此字符串中最长的单词输出。程序中有五处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 #include <string.h> L4 int main() L5 {int alphabetic(char); L6 int longest(char []); L7 int i; L8 char line[100]; L9 printf("input one line: "); L10 gets(line); L11 printf("The longest word is:"); L12 for(i=longest(i);alphabetic(line[i]);i++) L13 printf("%c",line[i]); L14 printf(" "); getch();} L15 int alphabetic(char c) //判断是否为字母 L16 {if((c>='a'&&c<='z')&&(c>='A'&&c<='Z')) L17 return(1); L18 else return(0);} L19 int longest(char string[])//查找最长的单词 L20 {int len=0,i,length=0,flag=1,place=0,point; L21 for(i=0;i<= string;i++) L22 if(alphabetic(string[i])) L23 if(!flag) L24 {point=i; flag=0;len++;} L25 else len++; L26 else L27 {flag=1; L28 if(len<=length) L29 {length=len; place=point;} L30 len=0;} L31 return(place);} 答案: 【1】L12 for(i=longest(line);alphabetic(line[i]);i++) 【2】L16 {if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) 【3】L21 for(i=0;i<=strlen(string);i++) 【4】L23 if(flag) 【5】L28 if(len>=length) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

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