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

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

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 编程语言基础(C语言) 模拟卷(一) 考试时间:100分钟 满分:100分 姓名 班级 学号 1 一、单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分) 1.下列程序段的输出结果是( ) int x=101; double y=x/2*2; printf("%d, %.2lf ", x, y); A.101,100 B.101,101 C.101,100.00 D.101,101.00 2.没有显示说明返回值类型的函数,其隐含的类型是( )。 A.char B. float C. void D.int 3.已知x 是已赋值double型的变量,能够将x四舍五入到两位小数的表达式是( )。 A.(int)(x*100+0.5)/100.0 B.int(x*100+0.5)/100.0 C.(int)(x/100+0.5)*100.0 D.int(x/100+0.5)*100.0 4.则下列程序段的输出结果是( )。 char i='a'; i--; printf("i=%d i='%c ", i +'1' - '0', i+'2' - '0'); A.i=97 i='b' B.i=98 i='b' C.i=97 i='a' D.i=98 i='a' 5.能正确表达逻辑关系-3≤a≤3 的表达式是( )。 A. a>=-3 and a<=3 B. a>=-3|| a<=3 C. -3≤a≤3 D. a>=-3 &&a<=3 6. 已知 char a=' ';,则变量a( )。 A.包含1个字符 B.包含2个字符 C.包含1个字符串 D.语句不合法 7.已知函数调用 func(r1,r2+r3,(r4,r5)),则该func()函数的形参个数是( )。 A.3 B.4 C.5 D.有语法错误 8.局部变量的默认存储类别是( )。 A.auto B. static C.extern D.register 9.已知 char t,s[10];,则以下语句中能够正确输入和输出t和s的是( )。 A. scanf("%c", &t); scanf("%s", s); printf("%c %s ", t, s); B. scanf("%c", t); scanf("%s", s); printf("%c %s ", t, s); C. scanf("%c", &t); scanf("%s", &s); printf("%c %s ", t, s); D.scanf("%c", &t); scanf("%s", s); printf("%c %s ", t, &s); 10.下列程序段的输出结果是( )。 inta=2,b=-1,c=0; if(a> b) c=1; else if(b<0) C++; else c+=2; printf("%d ",c); A.2 B.0 C.1 D.4 11.下列程序段的输出结果是( )。 int i=0,s=0; while (1) if (i==3||i= =5) continue; else if (i==6) break; i++; s+=i; } printf("%d ",s); A.10 B.13 C.21 D.无限循环 12.下列自定义标识符中不合法的是( )。 A.&a B. FOR C.print D._ab 13.调用函数时,实参变量和形参变量之间的数据传递是( )。 A.实参传递给形参 B.形参传递给实参 C.双向传递 D.地址传递 14.以下说法中正确的是()。 A.函数可以嵌套定义 B.函数可以嵌调用,但不能递归调用 C.函数不可以嵌套调用 D.函数可以嵌套调用和递归调用 15.已知输入为3,5,则下面程序的输出结果为( )。 #include <stdio.h> void swap(int a, int b) { int t=a; a = b; b=t; int main(void){ int a, b; scanf("%d,%d", &a, &b); swap(a,b); printf(”a = %d, b = %d ", a, b); return 0;} A.a=3,b=3 B.a=5,b=3 C.a=3,b=5 D.a=5,b=5 16.已知定义#define TEN 3+7,则语句printf("%d ", TEN * TEN);输出为( )。 A.100 B.31 C.TEN*TEN D.3+7*3+7 17.以下用库函数pow()求4的平方根的语句中完全正确的是( )。 A. int r=pow(4,0.5); B.int r = pow(4,1/2); C. double r = pow(4, 1/2); D.double r=pow(4,1.0/2) 18.以下关于表达式中的运算符优先级和结合性的说法中正确的是( )。 A.运算符的结合性表示一个运算符和哪一侧的操作数结合 B.多个优先级相同的运算符会被同时计算 C.优先级最高的运算符会被最先计算 D.优先级最高的运算符会被最先和操作数结合 19.已定义 char lang[ ][10] = {"BASIC", "PASCAL","JAVA","C"};, 则 strlen(lang[2])为( )。 A.4 B.5 C.6 D.10 20.执行语句 for(i=1; i<=4;i++);后,变量i的值是( )。 A.3 B.4 C.5 D.不确定 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int fact(int value); main() { printf("FACT(5): %d ",fact(5)); printf("FACT(1): %d ",fact(1)); fact(-5); getch(); } int fact(int value) { if(value<0) { printf("FACT(-1):Error! "); return(-1);} else if(value==1||value==0) return(1); else return( value * fact( value-1)); } 22. 以下程序的运行结果是【 】。 #include<stdio.h> int main( ) { union { long a; int b; char c;}m; printf(“%d ”,sizeof(m)); return 0; } 23. 以下程序的运行结果是【 】。 #include<stdio.h> int aa[3][3]={{2},{4},{6}}; int main( ) {int i,*p=&aa[0][0]; for(i=0;i<2;i++) if(i==0) aa[i][i+1]=*p+1; else ++p; printf(“%d”,*p); } 24.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {int b[3][2]={2,4,6,8,10,12}; int *a[2][3],**q,k,i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) a[i][j]=*(b+j)+i; q=a[0]; for(k=0;k<6;k++) { printf(“%d”,**q); q++; }} 25.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {struct date {int year,month,day; }today; printf(“%d ”,sizeof(struct date)); } 26.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {unsigned a=0112,x,y,z; x=a>>3;printf(“x=%o,”,x); y=~(~0<<4);printf(“y=%o,”,y); z=x&y;printf(“z=%o ”,z); } 27.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {char a[80],b[80],*p=“aAbcdDefgGH”; int i=0,j=0; while(*p!=’\0’) { if(*p>='a' &&*p<=’z’) {a[i]=*p;i++;} else {b[j]=*p;j++;} p++; } a[i]=b[j]=’\0’; puts(a);puts(b); } 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共21分) 28. 以下程序的功能是根据公式,求e的近似值,精度要求为。请填空。 #include<stdio.h> main( ) { int i;double e,new; 【1】;new=1.0; for(i=1;【2】;i++) { new/=(double)i;e+=new;} printf(“e=%f ”,e); } 29.以下程序的功能是用递归方法计算5位学生的年龄,已知第一位学生年龄最小为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。递归公式如下: # include <stdio.h> int age(int n) {int c; if(n==1)c=10; else c=【1】; return(c);} main() {int n=5; printf("age: %d ",【2】); return(0); } 30. 已知 head 指向单链表的第一个结点,以下函数del 完成从单向链表中删除值为 num 的第一个结点。请填空。 #include <stdio.h> struct student { int info; struct student * link;}; struct student * del(struct student *head, int num) { struct student * p1,* p2; if(head = = NULL) printf(" list null! "); else { p1=head; while(【1】) { p2=p1;p1=p1->link;} if(num = = p1->info) { if(p1= = head)【2】 else【3】: printf("delete:%d ",num);} else printf("%d not been found! ",num);} return(head);} 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共18分) 31. 以下的程序功能可以读取一个文本文件,并将文件内容逐行输出到屏幕上。以下程序只允许修改三行。 L1 #include<stdio.h> L2 char line[1000]; L3 int main( void) { L4 file *file; L5 char filename[ ]= "F:\\123.txt"; L6 file = fopen( filename, "w"); L7 if(file == NULL){ L8 printf("无法打开文件%s ",filename); L9 return 1; L10 } L11 while ( fgets( line, sizeof ( line),file) ! = NULL){ L12 printf("%c", line); L13 } L14 fclose( file); L15 return 0; L16 } 32.下列函数的功能是在指针数组表示的字符串列表中查找特定的字符,指针数组以NULL指针结束,如果找到返回TRUE,否则返回FALSE,以下程序只允许修改三行。 L1 #include "stdio.h" L2 #include "string.h" L3 #define TRUE 1 L3 #define FALSE 0 L4 int find_string( char * * strings,char value ) L5 { L6 char * cur_str; L7 if(* strings= =NULL) L8 return FALSE; L9 while( ( cur_str= * strings)! =NULL) L10 { L11 while(cur_str! ='\0') L12 if(* cur_str++! =value) L13 return TRUE; L14 } L15 return FALSE; L16 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 《编程语言基础——C语言》高等教育出版社(第五版) 编程语言基础(C语言) 模拟卷(一) 考试时间:100分钟 满分:100分 姓名 班级 学号 1 一、单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分) 1.下列程序段的输出结果是( ) int x=101; double y=x/2*2; printf("%d, %.2lf ", x, y); A.101,100 B.101,101 C.101,100.00 D.101,101.00 【答案】C 2.没有显示说明返回值类型的函数,其隐含的类型是( )。 A.char B. float C. void D.int 【答案】D 3.已知x 是已赋值double型的变量,能够将x四舍五入到两位小数的表达式是( )。 A.(int)(x*100+0.5)/100.0 B.int(x*100+0.5)/100.0 C.(int)(x/100+0.5)*100.0 D.int(x/100+0.5)*100.0 【答案】A 4.则下列程序段的输出结果是( )。 char i='a'; i--; printf("i=%d i='%c ", i +'1' - '0', i+'2' - '0'); A.i=97 i='b' B.i=98 i='b' C.i=97 i='a' D.i=98 i='a' 【答案】A 5.能正确表达逻辑关系-3≤a≤3 的表达式是( )。 A. a>=-3 and a<=3 B. a>=-3|| a<=3 C. -3≤a≤3 D. a>=-3 &&a<=3 【答案】D 6. 已知 char a=' ';,则变量a( )。 A.包含1个字符 B.包含2个字符 C.包含1个字符串 D.语句不合法 【答案】A 7.已知函数调用 func(r1,r2+r3,(r4,r5)),则该func()函数的形参个数是( )。 A.3 B.4 C.5 D.有语法错误 【答案】A 8.局部变量的默认存储类别是( )。 A.auto B. static C.extern D.register 【答案】A 9.已知 char t,s[10];,则以下语句中能够正确输入和输出t和s的是( )。 A. scanf("%c", &t); scanf("%s", s); printf("%c %s ", t, s); B. scanf("%c", t); scanf("%s", s); printf("%c %s ", t, s); C. scanf("%c", &t); scanf("%s", &s); printf("%c %s ", t, s); D.scanf("%c", &t); scanf("%s", s); printf("%c %s ", t, &s); 【答案】A 10.下列程序段的输出结果是( )。 inta=2,b=-1,c=0; if(a> b) c=1; else if(b<0) C++; else c+=2; printf("%d ",c); A.2 B.0 C.1 D.4 【答案】C 11.下列程序段的输出结果是( )。 int i=0,s=0; while (1) if (i==3||i= =5) continue; else if (i==6) break; i++; s+=i; } printf("%d ",s); A.10 B.13 C.21 D.无限循环 【答案】D 12.下列自定义标识符中不合法的是( )。 A.&a B. FOR C.print D._ab 【答案】A 13.调用函数时,实参变量和形参变量之间的数据传递是( )。 A.实参传递给形参 B.形参传递给实参 C.双向传递 D.地址传递 【答案】 A 14.以下说法中正确的是()。 A.函数可以嵌套定义 B.函数可以嵌调用,但不能递归调用 C.函数不可以嵌套调用 D.函数可以嵌套调用和递归调用 【答案】D 15.已知输入为3,5,则下面程序的输出结果为( )。 #include <stdio.h> void swap(int a, int b) { int t=a; a = b; b=t; int main(void){ int a, b; scanf("%d,%d", &a, &b); swap(a,b); printf(”a = %d, b = %d ", a, b); return 0;} A.a=3,b=3 B.a=5,b=3 C.a=3,b=5 D.a=5,b=5 【答案】C 16.已知定义#define TEN 3+7,则语句printf("%d ", TEN * TEN);输出为( )。 A.100 B.31 C.TEN*TEN D.3+7*3+7 【答案】B 17.以下用库函数pow()求4的平方根的语句中完全正确的是( )。 A. int r=pow(4,0.5); B.int r = pow(4,1/2); C. double r = pow(4, 1/2); D.double r=pow(4,1.0/2) 【答案】D 18.以下关于表达式中的运算符优先级和结合性的说法中正确的是( )。 A.运算符的结合性表示一个运算符和哪一侧的操作数结合 B.多个优先级相同的运算符会被同时计算 C.优先级最高的运算符会被最先计算 D.优先级最高的运算符会被最先和操作数结合 【答案】D 19.已定义 char lang[ ][10] = {"BASIC", "PASCAL","JAVA","C"};, 则 strlen(lang[2])为( )。 A.4 B.5 C.6 D.10 【答案】A 20.执行语句 for(i=1; i<=4;i++);后,变量i的值是( )。 A.3 B.4 C.5 D.不确定 【答案】C 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int fact(int value); main() { printf("FACT(5): %d ",fact(5)); printf("FACT(1): %d ",fact(1)); fact(-5); getch(); } int fact(int value) { if(value<0) { printf("FACT(-1):Error! "); return(-1);} else if(value==1||value==0) return(1); else return( value * fact( value-1)); } 【答案】 FACT(5): 120 FACT(1): 1 FACT(-1):Error! 22. 以下程序的运行结果是【 】。 #include<stdio.h> int main( ) { union { long a; int b; char c;}m; printf(“%d ”,sizeof(m)); return 0; } 【答案】4 23. 以下程序的运行结果是【 】。 #include<stdio.h> int aa[3][3]={{2},{4},{6}}; int main( ) {int i,*p=&aa[0][0]; for(i=0;i<2;i++) if(i==0) aa[i][i+1]=*p+1; else ++p; printf(“%d”,*p); } 【答案】3 24.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {int b[3][2]={2,4,6,8,10,12}; int *a[2][3],**q,k,i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) a[i][j]=*(b+j)+i; q=a[0]; for(k=0;k<6;k++) { printf(“%d”,**q); q++; }} 【答案】2 6 10 4 8 12 25.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {struct date {int year,month,day; }today; printf(“%d ”,sizeof(struct date)); } 【答案】6 26.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {unsigned a=0112,x,y,z; x=a>>3;printf(“x=%o,”,x); y=~(~0<<4);printf(“y=%o,”,y); z=x&y;printf(“z=%o ”,z); } 【答案】x=11,y=17,z=11 27.以下程序的运行结果是【 】。 #include<stdio.h> int main( ) {char a[80],b[80],*p=“aAbcdDefgGH”; int i=0,j=0; while(*p!=’\0’) { if(*p>='a' &&*p<=’z’) {a[i]=*p;i++;} else {b[j]=*p;j++;} p++; } a[i]=b[j]=’\0’; puts(a);puts(b); } 【答案】 abcdefg ADGH 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共21分) 28. 以下程序的功能是根据公式,求e的近似值,精度要求为。请填空。 #include<stdio.h> main( ) { int i;double e,new; 【1】;new=1.0; for(i=1;【2】;i++) { new/=(double)i;e+=new;} printf(“e=%f ”,e); } 【答案】 【1】e=1.0 【2】new>=1e-6 29.以下程序的功能是用递归方法计算5位学生的年龄,已知第一位学生年龄最小为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。递归公式如下: # include <stdio.h> int age(int n) {int c; if(n==1)c=10; else c=【1】; return(c);} main() {int n=5; printf("age: %d ",【2】); return(0); } 【答案】 【1】age(n-1)+2 【2】age(5) 30. 已知 head 指向单链表的第一个结点,以下函数del 完成从单向链表中删除值为 num 的第一个结点。请填空。 #include <stdio.h> struct student { int info; struct student * link;}; struct student * del(struct student *head, int num) { struct student * p1,* p2; if(head = = NULL) printf(" list null! "); else { p1=head; while(【1】) { p2=p1;p1=p1->link;} if(num = = p1->info) { if(p1= = head)【2】 else【3】: printf("delete:%d ",num);} else printf("%d not been found! ",num);} return(head);} 【答案】 【1】num!=p1->info&&p1->link!=NULL 【2】head=p1->link 【3】p2->link=p1->link 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共18分) 31. 以下的程序功能可以读取一个文本文件,并将文件内容逐行输出到屏幕上。以下程序只允许修改三行。 L1 #include<stdio.h> L2 char line[1000]; L3 int main( void) { L4 file *file; L5 char filename[ ]= "F:\\123.txt"; L6 file = fopen( filename, "w"); L7 if(file == NULL){ L8 printf("无法打开文件%s ",filename); L9 return 1; L10 } L11 while ( fgets( line, sizeof ( line),file) ! = NULL){ L12 printf("%c", line); L13 } L14 fclose( file); L15 return 0; L16 } 答案: 【1】L4 FILE *file; 【2】L6 file=fopen(filename,“r”); 【3】L12 printf(“%s”,line); 32.下列函数的功能是在指针数组表示的字符串列表中查找特定的字符,指针数组以NULL指针结束,如果找到返回TRUE,否则返回FALSE,以下程序只允许修改三行。 L1 #include "stdio.h" L2 #include "string.h" L3 #define TRUE 1 L3 #define FALSE 0 L4 int find_string( char * * strings,char value ) L5 { L6 char * cur_str; L7 if(* strings= =NULL) L8 return FALSE; L9 while( ( cur_str= * strings)! =NULL) L10 { L11 while(cur_str! ='\0') L12 if(* cur_str++! =value) L13 return TRUE; L14 } L15 return FALSE; L16 } 答案: 【1】L9 while((cur_str=*string++)!=NULL) 【2】L11 while(*cur_str!=’\0’) 【3】L12 if(* cur_str++= =value) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

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