您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页2022年北京科技大学公共课《C语言》科目期末试卷B(有答案)

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

来源:华佗小知识
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 int main()

{int y=2456;

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 int main()

{int G=5,k; 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 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 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 #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;ia[i]=i; }

void subl()

{for(i=0;iA)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 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 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 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

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

int main()

{int day=0,x1=1020,x2;

while(_______){x2=_______;x1=x2;day++;} printf(\"day=%d\\n\",day); return 0; }

31、下面程序的运行结果是_______。

#include 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 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 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、

(注:函数fun的功能是求整数x的y次方的低2位值。例如,整数4的3次方低2位值为。)

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

#include 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); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务