2022年北京科技大学公共课《C语言》科目期末试卷B(有答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2022年北京科技大学公共课《C语言》科目期末试卷B(有答案)
一、填空题
1、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。

struct s{char data;
_______
}node;
2、C语言的源程序必须通过【】和【】后,才能被计算机执行。

3、在C语言源程序中,一个变量代表【】。

4、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为_______,n的值为_______。

5、C语言中的标识符可分为关键字、_______和_______3类。

6、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。

7、下面程序段是找出整数的所有因子。

请填空。

scanf("%d",&x);
i=1;for(;_______;)
{if(x%i==0)printf("%3d",i);
i++;
}
8、设有如下定义:
#define SWAP(T,X,Y){T=X;X=Y;Y=T;}
以下程序段将通过调用宏实现变量x和y内容的交换,请填空。

Double x=2.5,y=6.4,z;SWAP(_______);
9、下面程序wdm的运行结果是_______。

int i,x[10]={2,3,0,3,0,2,3,2,1,3},y[4]={0};
for(i=0;i<10;i++)y[x[i]]++;
printf("%d\n",y[3]);
10、若想输出b数组的10个元素,则下面存在错误的程序行是_______。

(每个程序行前面的数字代表行号。


1 int main()
2 {int b[10]={1,3,5,7,9,2,4,6,8,10},k;
3 for(k=0;k<10;k++,b++)
4 printf("%4d",*b);
5 return0;
6 }
二、选择题
11、下面4个选项中,是合法浮点数的选项是。

( )
A.+1e+1
B.-.60
C.123e
D.-e3
5e-9.4 12e-4 1.2e-4. 8e-4
03e2 -8e5 +2e-1 5.e-0
12、下列4组选项中,不是C语言关键字的选项是。

()
A.define
B.getc
C.include
D.while
IF char scanf go
Type printf case pow
13、C语言规定:在一个源程序中,main函数的位置( )
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
14、一个C语言程序由( )。

A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
15、若有以下程序段:
int a[]={4,0,2,3,1},i,j,t;
for(i=l;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j]
{a[j+1]=a[j];j--;}
a[j+1]=t;
则该程序段的功能是()。

A.对数组a进行插入排序(升序)
B.对数组a进行插入排序(降序)
C.对数组a进行选择排序(升序)
D.对数组a进行选择排序(降序)
16、以下C程序的运行结果是。

(注:口表示空格)
#include<stdio.h>
int main()
printf("y=%3o\n",y);
printf("y=%8o\n",y);
printf("y=%#8o\n",y);
return 0;
}
A.y=口口口2456
B.y=囗口□4630
y=口口口口口口口口2456 y=口口口口口口口04630 y= ########2456 y= ########4630 C.y=2456 D.y=4630
y=口口口口2456 y=口口口口4630
y=口口口02456 y=口口口04630
17、若有说明语句,则以下不正确的叙述是()。

char a[]="It is mine";char*p="It is mine";
A.a+1表示的是字符t所在存储单元的地址
B.p指向另外的字符串时,字符串的长度不受限制
C.p变量中存放的地址值可以改变
D.a中只能存放10个字符
18、以下程序有语法性错误,有关错误原因的正确说法是()。

#include <stdio.h>
int main()
void prt_char();
-----
k=prt_char(G);
---
}
A.语句void prt_char();有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下划线
19、以下for循环的执行次数是()。

for(x=0,y=0;(y=123)&&(x<4);x++);
A.是无限循环
B.循环次数不定
C.执行4次
D.执行3次
20、语句while(!E);中的表达式!E等价于()。

A.E==0
B.E!=1
C.E!=0
D.E==1
21、若变量都已正确定义,则以下程序段的输出是()。

a=10;b=50;c=30;
if(a>B.a=b,b=c;
c=a;
printf("a=%db=%dc=%d\n".a,b,C.;
A.a=10 b=30 c=10
B.a=10 b=50 c=10
C.a=50 b=30 c=10
D.a=50 b=30 c=50
22、下面程序的运行结果是()。

#include <stdio.h>
int main()
{char str[]="SSSWLIA",c;int k;
for(k=2;(c=str[k])!=\o';k++)
{switch(C.
{case'I':++k;break;
case'L':continue;
default:putchar(C.;continue;
putchar('*’);
}
return 0;
}
A.SSW*
B.SW*
C.SW*A
D.SW
23、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。

请选择填空。

( )
#include<stdio.h>
int main()
{char s[80],c1,c2='';int i=0,num=0;
gets(s);
while(s[i]!='\o')
{ c1=s[i];
if(i==0)c2='';
else c2=s[i-1];
if(【】)num++;
i++;
printf("There are%d words.\n",num);
return 0;
}
A.c1==′′&&c2==''
B.cl!= ''&&c2==''
C.c1==''&&c2!=''
D.cl!=''&&c2!=''
24、以下程序的正确运行结果是()。

#include <stdio.h>
#define MAX10
void sub2(),sub1(),sub3(int*A.;
int a[MAX],i;
int main()
{printf("\n");subl();sub3(a);sub2();sub3(a);
return(O);
void sub2( )
{int a[MAX],i,max;
max=5;
for(i=0;i<max;i++)
a[i]=i;
}
void subl()
{for(i=0;i<MAX;i++) a[i]=i+i;
void sub3(int a[])
{int i; for(i=0;i<MAX;i++)
printf("%d",a[i]);
printf("\n");
}
A)0 2 4 6 8 10 12 14 16 18
0 1 2 3 4
B)0 1 2 3 4
0 2 4 6 8 10 12 1416 18
C)0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
D)0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
25、以下能正确计算1×2×3×…×10的程序段是()。

A) do B) do C) i=1;s=1; D) i=1;s=0;
{i=1;s=1; {i=1;s=0; { do; { do;
s=s*i; s=s*i; s=s*i; s=s*i;
i++; i++; i++; i++;
}while(i<=10); }while(i<=10); }while(i<=10); }while(i<=10);
三、读程序填空
26、以下程序的输出结果为_______。

#include<stdio.h>
int main()
{short i;
i=一4;
printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);return 0;
}
27、以下程序的运行结果是_______。

#include<stdio.h>
int main()
{int n=100;
char c;
float f=10.0;
double x;
x=f*=n/=(c=48);
printf("%d%d%3.1f%3.1f\n",n,c,f,x);
return 0;
}
28、以下程序的运行结果是输出如下图形。

请填空。

# include<stdio.h>
void a(int i)
{ intj,k;
for(j=0;j<=7-i;j++)
printf("");
for(k=0;k<_______;k++)
printf("x");
printf("\n");
}
int main()
{int i;
for(i=0;i<3;i++)_______;
for(i=3;i>=0;i--)_______;
return(0);
}
29、当输入的数值x为4,y为3时,以下程序运行后t的值是_______。

#include<stdio.h>
long fun(long x,long y)
{int i;longt=1;
for(i=1;i<=y;i++)
t=t*x%100;
return t;
}
int main()
{longx,y,t;
printf("\ninput xand y:\n");
scanf("%ld%ld",8&.x,8.y);
t=fun(x,y);
printf("\nx=%1d,y=%ld,last=%ld\n",x,y,t);
return(0);
}
30、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。

请填空。

#include <stdio.h>
int main()
{int day=0,x1=1020,x2;
while(_______){x2=_______;x1=x2;day++;} printf("day=%d\n",day);
return 0;
}
31、下面程序的运行结果是_______。

#include<stdio.h>
int main()
{int a[10]={1,2,2,3,4,3,4,5,1,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]);
return 0;
}
32、以下程序的功能是:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。

请填空。

#include <stdio.h>
int main()
{char ch;
scanf("%c",8&.ch);
if(_______)ch=ch+32;
else if(ch>='a′8.&ch<='z′)_______;
printf("%c",ch);
return 0;
}
33、若从键盘输入:2<回车>,则下面程序的运行结果是_______。

#include<stdio.h>
int main()
{char*b[]={"English","Physics","Maths","Pascal","Chemistry","End","Error"};int num;
printf("Enter a integer that should be between 0 to 9\n");
scanf("%d”,&.num);
if(num>=0&&num<=9)
if(num>=1&&num<=5)
printf("The chosen class is:%s.\n",b[num-1]);
else
printf("No class is chosen.%s!!\n",b[5]);
else
printf("Your input is:%s!!\n",b[6]);
return(0);
}
四、编程题
34、从键盘输入一个字符串,然后按照下面要求输出一个新字符串。

新串是在原
串中每两个字符之间插入一个空格,如原串为abcd,则新串为a□b□c□d(□代表
空格)。

要求在函数insert中完成新串的产生;并在函数中完成所有相应的输入和
输出。

35、已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next)。

请编写函数实现如图10-8所示链表的逆置。

若原链表为:
逆置后的链表应为:
参考答案
一、填空题
1、structs*next;
2、【1】编译【2】连接
3、内存中的一个存储单元
4、【1】10【2】6
5、【1】用户标识符【2】预定义标识符
6、00001111
7、i<=x
8、z,x,y或z,y,x
9、4
10、第3行
二、选择题
11、B
12、A
13、C
14、B
15、B
16、D
17、D
18、C
19、C
20、A
21、B
22、B
23、B
24、D
25、C
三、读程序填空
26、i:dec=-4,oct=177774,hex=fffc,unsigned=65532
27、24820.020.0
28、【1】2*i+1【2】a(i)【3】a(i)
29、64
(注:函数fun的功能是求整数x的y次方的低2位值。

例如,整数4的3次方低2位值为64。


30、【1】x1【2】x1/2-2
31、1 2 3 4 5
32、【1】ch>='A'&&.ch<='z'【2】ch=ch-32
33、The chosen class is:Physics.
四、编程题
34、#include<stdio.h>
#include <string.h>
void insert(char*p);
int main()
{char str[80];
printf("Input a string:\n");
gets(str);
insert(str);
printf("Result is:%s\n",str);
return(0);
}
void insert(char*p)
{int i;
for(i=strlen(p);i>0;i--)
{*(p+2*i)=*(p+i);
*(p+2*i-1)='';
}
}
35、typedef int datatype; typedef struct node {datatype data; struct node *next;
}linklist;

INVERT(linklist*head){linklist*p,*q;
p=head->next;if(p!=NULL){head->next=NULL;do
{q=p->next;
p->next=head->next;
head->next=p;
p=q;
}
while(p!=NULL);
}。

相关文档
最新文档