内容正文:
《编程语言基础——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)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$