内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
编程语言基础(C语言) 模拟卷(七)
考试时间:100分钟 满分:100分
姓名 班级 学号 1
1、 单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分)
1. 从键盘读入文本(使用#作为输入结束标志),写入“abc.txt”文件中,下列选项中,正确的一项是( )
A. while((c=getchar())!=’#’)
B. while((c=getchar())= =’#’)
C. while(c=getchar()!=’#’)
D. while(c=getchar()= =’#’)
2. 若要对a进行++运算,则a应具有下面说明( )
A. int a[3][2];
B. char ( * a) [3] ;
C. char *a[ ]={"12","ab"};
D. int b[10] , *a=b;
3. 下列程序运行结果为( )
#define P 3
#define S(a) P*a*a
main()
{int ar; ar=S(3+5); printf("
%d",ar); }
A.192 B.25 C.29 D.27
4. 下列程序的运行结果是( )
main(){
int a = 100;
if( a > 100) printf("%d
", a > 100);
else printf("%d
", a <= 100);
getch();}
A.1 B.100 C.0 D.不确定值
5. 阅读下面程序,程序执行后的输出结果为( )
main(){
char a,b;
for(a='0',b='3';a<b;a++,b--)
printf("%c%c",a,b);
printf("
");getch();}
A.0123 B.3210 C.2130 D. 0312
6. 阅读以下程序,运行后的输出结果为( )
#include "stdio.h"
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0}, *p;
p=a; printf("%d
", *p+9);}
A.0 B.1 C.10 D.9
7. 阅读以下程序,运行后的输出结果为( )
#include "string.h"
#include "stdio.h"
main()
{ char *p="abcde\0fghjik\0";
printf("%d
", strlen(p));}
A.12 B.15 C.6 D.5
8. 下列程序段的输出结果是( )
int x=5;
if(x- -<5)
printf("%d
", x);
else printf("%d
",x++);
A.3 B.5 C.4 D.6
9. 执行以下语句后m的值是( )
inta=21,b=20,m=0;
switch (a % 3)
{ case 0:m++;
case 1:m++;
switch (b% 2)
{ case 0:m++; break;
default:m++;}
default:++m;}
A.4 B.5 C.3 D.2
10. 若 int型变量i和p已定义,执行以下语句后p的值不等于6!的是( )
A.for(i=1,p= 1;i<= 6;i++) p*=i;
B.for(i=1;i<6;i++) {p*=i;}
C.i=1;p= 1; while( i<=6) {p*=i; i++;}
D.i= 1;p= 1; do {p*=i; i++;} while(i <= 6);
11. 执行以下语句后n的值为( )
int i, n= 0;
for (i=2;i<5;i++)
do{
if (i % 3) continue; n++;
} while (!i); n++;}
A.5 B.2 C.3 D.4
12. 以下字符串中用strlen()函数计算长度的结果一定是4的是( )
A. char s[4]={'a'}; B. char s[5]="abc\0d";
C. char s[4]= {‘a', 'b', 'c', 'd'}; D. char s[5]= "abc0";
13. 下列说法中正确的是( )
A.标准库函数可以直接使用而不用进行任何说明或预处理
B.用户可以定义与标准库函数同名的函数
C.用户可以定义与系统关键字同名的变量
D.#include 之后只能是标准库头文件
14. 列关于函数的说法中正确的是( )
A.形参的类型说明可以放在函数体内
B.函数名前的返回值类型可以是数组
C.函数体内可以有多个return语句
D.retum 后可以有多个值同时返回
15. 已知 intx=2;,则以下表达式不等于6的是( )
A.x++,2*x B. 2*x,x+=2 C.x*=1+x D.x*=(x+1)
16. 已知 char c[][10]= {"hello", "world!"};,则 sizeof(c[1])的值是( )
A.6 B.5 C.7 D.10
17. 已知以下语句运行时用户输入8,则输出不为8的是( )
A. int c; scanf("%d", &c); printf("%d", c);
B. char c; scanf("%c", &c); printf("%c", c);
C.char c; scanf("%c", &c); printf("%d", c - '0');
D.int c; scanf("%d", &c); printf("%c", (char)(c));
18. 共用体变量定义为:union{char c;int x;}d;,则以下语句中正确的是( )
A.d.c=’x’;x=10; B.d=’x’,10;
C.d.x=10;d.c=’x’; D.d=’x’;
19. 已知:int x=0x40;,则:printf(“%d”,x=x<<1);语句中的输出结果是( )
A.128 B.100 C.120 D.64
20. 如有以下定义,下列叙述中正确的一项是( )
typedef int *INT
INT p,*q;
A.p是int 型变量
B.p是基类型为int的指针变量
C.可以用INT代替int类型
D.q是基类型为int的一级指针变量
二、程序运行结果题(本题共7小题,每题3分,共21分)
21. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main( )
{char pl[8]="abc", * p2,str[50]="abc";
p2="abc";
strcpy (str+1,strcat(pl,p2));
printf("%s
",str);
getch();}
22. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
int * f(int * x, int * y)
{if ( *x+5<*y) return y;
else return x;}
int main( )
{int a=11,b=2,* p,* q,* r;
p=&a;q=&b;
r=f(p,q);
printf("%d,%d,%d
",* p,* q,* r);
getch();}
23. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
void swap(int * pl,int * p2)
{ int p;
p= *pl;*pl=*p2;*p2=p;}
int main( )
{ int a=12,b=24, * ptrl, * ptr2;
ptrl=&a;ptr2=&b;
swap(ptrl,ptr2);
printf("*ptrl=%d,*ptr2=%d
",*ptrl,*ptr2);
printf("a=%d,b=%d
",a,b);
getch();}
24. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
int sub(int * s)
{ static int t=1;t= *s+t;
return t;}
int main( )
{ int i,k;
for(i=0;i<3;i++)
{ k=sub(&i);
printf("%3d",k);}
printf("
");
getch();}
25. 以下程序的运行结果是【 】。
#include <stdio.h>
#include<conio.h>
char cchar(char ch)
{ if (ch>='A' && ch<='Z') ch=ch-'A'+'a';
return ch;}
main()
{ char s[]="ABC+abc=defDEF", *p=s;
while(*p)
{ *p=cchar(*p); p++; }
printf("%s
",s);getch();}
26. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
#include<string.h>
main(){
char b1[8]="abcdefg", b2[8], *pb=b1+4;
while( --pb>=b1) strcpy(b2, pb);
printf("%d
", strlen(b2));
getch();}
27. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
void ss( char *s, char t)
{ while (*s)
{ if (*s==t) *s=t-'a'+'A'; s++;}}
main()
{ char str[100]="abcddfefdbd", c='d';
ss(str, c);
printf("%s
", str1);getch() ;}
三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
28. 以下程序的功能是调用findmax函数返回数组中的最大值。请填空。
#include <stdio.h>
#include<conio.h>
findmax( int *a, int n)
{ int *p, *s;
for (p=a, s=a; 【1】; p++)
if(【2】) s=p;
return (*s);}
main()
{ int x[5]={12,21,13,6,18};
printf("%d
", findmax(x,5));getch();}
29. 下面程序的功能是将字符串中的数字字符删除后输出。请填空。
#include <stdio.h>
#include<conio.h>
void delnum(char * s)
{ int i,j ;
for (i=0,j=0 ;s[i]!='\0';i++)
if ( 【1】) {s[j]=s[i];j++;}
【2】;}
int main ( )
{ char atm[80]="";
printf("input a string:");
gets(atm) ;
【3】;
printf("
%s",atm);
getch();}
30. 本程序用来计算一个英文句子中最长单词的长度(字母个数)max。假设该英文句子中只含有字母和空格,在空格之间连续的字母串称为单词,句子以 . 为结束。请填空。
#include <stdio.h>
#include<conio.h>
int main( )
{ char *p,a[ ]={"l am very happy ."};
int max=0,i=0;
p=a;
while(【1】)
{ while((( * p<='Z')&&( * p>='A'))||(( * p<='z')&&( * p>='a')))
{ 【2】; p++; }
if(【3】) max=i;
i=0;p++;}
printf("max=%d",max);
getch();}
四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分)
31. 下列程序的功能是:从键盘输入若干行字符(每行长度不等),输入后把存储到一磁盘文件中,再从该文件中读入这些数据,将其中的小写字母转换成大写字母后在显示屏上输出。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 #include<stdlib.h>
L4 int main()
L5 {int i,flag;
L6 char str[80],c;
L7 file *fp;
L8 fp=fopen("d:\\text","r");
L9 flag=1;
L10 while(flag==1)
L11 {printf("input string:
");
L12 gets(str);
L13 fprintf(fp,"%s ",&str);
L14 printf("continue?");
L15 c=getchar();
L16 if((c=='N')||(c=='n') )
L17 flag=0;
L18 getchar();}
L19 fclose(fp);
L20 fp=fopen("d:\\text","r");
L21 while(fscanf(fp,"%s",str)= =EOF)
L22 {for(i=0;str[i]!='\0';i++)
L23 if((str[i]>='a')&&(str[i]<='z'))
L24 str[i]-32;
L25 printf("%s
",str);}
L26 fclose(fp);
L27 getch();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
《编程语言基础——C语言》高等教育出版社(第五版)
编程语言基础(C语言) 模拟卷(七)
考试时间:100分钟 满分:100分
姓名 班级 学号 1
1、 单项选择题(本题共20小题,每题2分,共40分,多选、错选均不得分)
1. 从键盘读入文本(使用#作为输入结束标志),写入“abc.txt”文件中,下列选项中,正确的一项是( )
A. while((c=getchar())!=’#’)
B. while((c=getchar())= =’#’)
C. while(c=getchar()!=’#’)
D. while(c=getchar()= =’#’)
答案:A
2. 若要对a进行++运算,则a应具有下面说明( )
A. int a[3][2];
B. char ( * a) [3] ;
C. char *a[ ]={"12","ab"};
D. int b[10] , *a=b;
答案:D
3. 下列程序运行结果为( )
#define P 3
#define S(a) P*a*a
main()
{int ar; ar=S(3+5); printf("
%d",ar); }
A.192 B.25 C.29 D.27
答案:C
4. 下列程序的运行结果是( )
main(){
int a = 100;
if( a > 100) printf("%d
", a > 100);
else printf("%d
", a <= 100);
getch();}
A.1 B.100 C.0 D.不确定值
答案:A
5. 阅读下面程序,程序执行后的输出结果为( )
main(){
char a,b;
for(a='0',b='3';a<b;a++,b--)
printf("%c%c",a,b);
printf("
");getch();}
A.0123 B.3210 C.2130 D. 0312
答案:D
6. 阅读以下程序,运行后的输出结果为( )
#include "stdio.h"
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0}, *p;
p=a; printf("%d
", *p+9);}
A.0 B.1 C.10 D.9
答案:C
7. 阅读以下程序,运行后的输出结果为( )
#include "string.h"
#include "stdio.h"
main()
{ char *p="abcde\0fghjik\0";
printf("%d
", strlen(p));}
A.12 B.15 C.6 D.5
答案:D
8. 下列程序段的输出结果是( )
int x=5;
if(x- -<5)
printf("%d
", x);
else printf("%d
",x++);
A.3 B.5 C.4 D.6
答案:C
9. 执行以下语句后m的值是( )
inta=21,b=20,m=0;
switch (a % 3)
{ case 0:m++;
case 1:m++;
switch (b% 2)
{ case 0:m++; break;
default:m++;}
default:++m;}
A.4 B.5 C.3 D.2
答案:A
10. 若 int型变量i和p已定义,执行以下语句后p的值不等于6!的是( )
A.for(i=1,p= 1;i<= 6;i++) p*=i;
B.for(i=1;i<6;i++) {p*=i;}
C.i=1;p= 1; while( i<=6) {p*=i; i++;}
D.i= 1;p= 1; do {p*=i; i++;} while(i <= 6);
答案:B
11. 执行以下语句后n的值为( )
int i, n= 0;
for (i=2;i<5;i++)
do{
if (i % 3) continue; n++;
} while (!i); n++;}
A.5 B.2 C.3 D.4
答案:D
12. 以下字符串中用strlen()函数计算长度的结果一定是4的是( )
A. char s[4]={'a'}; B. char s[5]="abc\0d";
C. char s[4]= {‘a', 'b', 'c', 'd'}; D. char s[5]= "abc0";
答案:D
13. 下列说法中正确的是( )
A.标准库函数可以直接使用而不用进行任何说明或预处理
B.用户可以定义与标准库函数同名的函数
C.用户可以定义与系统关键字同名的变量
D.#include 之后只能是标准库头文件
答案:B
14. 列关于函数的说法中正确的是( )
A.形参的类型说明可以放在函数体内
B.函数名前的返回值类型可以是数组
C.函数体内可以有多个return语句
D.retum 后可以有多个值同时返回
答案:C
15. 已知 intx=2;,则以下表达式不等于6的是( )
A.x++,2*x B. 2*x,x+=2 C.x*=1+x D.x*=(x+1)
答案:B
16. 已知 char c[][10]= {"hello", "world!"};,则 sizeof(c[1])的值是( )
A.6 B.5 C.7 D.10
答案:D
17. 已知以下语句运行时用户输入8,则输出不为8的是( )
A. int c; scanf("%d", &c); printf("%d", c);
B. char c; scanf("%c", &c); printf("%c", c);
C.char c; scanf("%c", &c); printf("%d", c - '0');
D.int c; scanf("%d", &c); printf("%c", (char)(c));
答案:D
18. 共用体变量定义为:union{char c;int x;}d;,则以下语句中正确的是( )
A.d.c=’x’;x=10; B.d=’x’,10;
C.d.x=10;d.c=’x’; D.d=’x’;
答案:C
19. 已知:int x=0x40;,则:printf(“%d”,x=x<<1);语句中的输出结果是( )
A.128 B.100 C.120 D.64
答案:A
20. 如有以下定义,下列叙述中正确的一项是( )
typedef int *INT
INT p,*q;
A.p是int 型变量
B.p是基类型为int的指针变量
C.可以用INT代替int类型
D.q是基类型为int的一级指针变量
答案:B
二、程序运行结果题(本题共7小题,每题3分,共21分)
21. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main( )
{char pl[8]="abc", * p2,str[50]="abc";
p2="abc";
strcpy (str+1,strcat(pl,p2));
printf("%s
",str);
getch();}
答案:aabcabc
22. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
int * f(int * x, int * y)
{if ( *x+5<*y) return y;
else return x;}
int main( )
{int a=11,b=2,* p,* q,* r;
p=&a;q=&b;
r=f(p,q);
printf("%d,%d,%d
",* p,* q,* r);
getch();}
答案:11,2,11
23. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
void swap(int * pl,int * p2)
{ int p;
p= *pl;*pl=*p2;*p2=p;}
int main( )
{ int a=12,b=24, * ptrl, * ptr2;
ptrl=&a;ptr2=&b;
swap(ptrl,ptr2);
printf("*ptrl=%d,*ptr2=%d
",*ptrl,*ptr2);
printf("a=%d,b=%d
",a,b);
getch();}
答案:
*ptrl=24,*ptr2=12
a=24,b=12
24. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
int sub(int * s)
{ static int t=1;t= *s+t;
return t;}
int main( )
{ int i,k;
for(i=0;i<3;i++)
{ k=sub(&i);
printf("%3d",k);}
printf("
");
getch();}
答案: 1 2 4
25. 以下程序的运行结果是【 】。
#include <stdio.h>
#include<conio.h>
char cchar(char ch)
{ if (ch>='A' && ch<='Z') ch=ch-'A'+'a';
return ch;}
main()
{ char s[]="ABC+abc=defDEF", *p=s;
while(*p)
{ *p=cchar(*p); p++; }
printf("%s
",s);getch();}
答案:abc+abc=defdef
26. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
#include<string.h>
main(){
char b1[8]="abcdefg", b2[8], *pb=b1+4;
while( --pb>=b1) strcpy(b2, pb);
printf("%d
", strlen(b2));
getch();}
答案:7
27. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
void ss( char *s, char t)
{ while (*s)
{ if (*s==t) *s=t-'a'+'A'; s++;}}
main()
{ char str[100]="abcddfefdbd", c='d';
ss(str, c);
printf("%s
", str1);getch() ;}
答案:abcDDfefDbD
三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
28. 以下程序的功能是调用findmax函数返回数组中的最大值。请填空。
#include <stdio.h>
#include<conio.h>
findmax( int *a, int n)
{ int *p, *s;
for (p=a, s=a; 【1】; p++)
if(【2】) s=p;
return (*s);}
main()
{ int x[5]={12,21,13,6,18};
printf("%d
", findmax(x,5));getch();}
答案:
【1】p-a<n
【2】*p>*s
29. 下面程序的功能是将字符串中的数字字符删除后输出。请填空。
#include <stdio.h>
#include<conio.h>
void delnum(char * s)
{ int i,j ;
for (i=0,j=0 ;s[i]!='\0';i++)
if ( 【1】) {s[j]=s[i];j++;}
【2】;}
int main ( )
{ char atm[80]="";
printf("input a string:");
gets(atm) ;
【3】;
printf("
%s",atm);
getch();}
答案:
【1】s[i]<'0'||s[i]>'9'
【2】s[j]='\0'
【3】delnum(atm)
30. 本程序用来计算一个英文句子中最长单词的长度(字母个数)max。假设该英文句子中只含有字母和空格,在空格之间连续的字母串称为单词,句子以 . 为结束。请填空。
#include <stdio.h>
#include<conio.h>
int main( )
{ char *p,a[ ]={"l am very happy ."};
int max=0,i=0;
p=a;
while(【1】)
{ while((( * p<='Z')&&( * p>='A'))||(( * p<='z')&&( * p>='a')))
{ 【2】; p++; }
if(【3】) max=i;
i=0;p++;}
printf("max=%d",max);
getch();}
答案:
【1】*p!='.'
【2】i++
【3】i>max
四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分)
31. 下列程序的功能是:从键盘输入若干行字符(每行长度不等),输入后把存储到一磁盘文件中,再从该文件中读入这些数据,将其中的小写字母转换成大写字母后在显示屏上输出。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 #include<stdlib.h>
L4 int main()
L5 {int i,flag;
L6 char str[80],c;
L7 file *fp;
L8 fp=fopen("d:\\text","r");
L9 flag=1;
L10 while(flag==1)
L11 {printf("input string:
");
L12 gets(str);
L13 fprintf(fp,"%s ",&str);
L14 printf("continue?");
L15 c=getchar();
L16 if((c=='N')||(c=='n') )
L17 flag=0;
L18 getchar();}
L19 fclose(fp);
L20 fp=fopen("d:\\text","r");
L21 while(fscanf(fp,"%s",str)= =EOF)
L22 {for(i=0;str[i]!='\0';i++)
L23 if((str[i]>='a')&&(str[i]<='z'))
L24 str[i]-32;
L25 printf("%s
",str);}
L26 fclose(fp);
L27 getch();}
答案:
【1】L7 FILE *fp;
【2】L8 fp=fopen("d:\\text","w");
【3】L13 fprintf(fp,"%s ",str);
【4】L21 while(fscanf(fp,"%s",str)!=EOF)
【5】L24 str[i]-=32;
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$