2022年成都理工大学工程技术学院公共课《C语言》科目期末试卷A(有答案)

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

2022年成都理工大学工程技术学院公共课《C语言》科目期末试卷
A(有答案)
一、填空题
1、请读程序段:
int x=1;
printf("%d\n",~x);
上面程序段的输出结果是_______。

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

3、一个C语言源程序由若干函数组成,其中至少应含有一个________
4、若x和a均是int型变量,则执行表达式(1)后的x值为_______,执行表达式(2)后的x值为_______。

(1)x=(a=4,6*2)(2)x=a=4,6*2
5、若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是
_______
6、请填空:
建立如图所示存储结构所需的说明语句是_______。

建立如图所示为变量a输入数据的输入语句是_______。

建立如图所示存储结构所需的赋值语句是_______。

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

x=2;
do{printf("*");x--;)while(!x==0);
8、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。

struct s{char data;
_______
}node;
9、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1='A'、c2='a',正确的数据输入形式是_______。

#include <stdio.h>
int main()
{int a,b;
float x,y;
char cl,c2;
scanf("a=%d b=%d",&.a,&.b);
scanf("x=%f y=%",8.x,8.y);
scanf("c1=%cc2=%c”,8.cl,8.c2);
printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c",a,b,x,y,cl,c2);
return0;
}
10、设有如下定义:
#define SWAP(T,X,Y){T=X;X=Y;Y=T;}
以下程序段将通过调用宏实现变量x和y内容的交换,请填空。

Double x=2.5,y=6.4,z;SWAP(_______);
二、选择题
11、以下正确的叙述是( )。

A.在C程序中,每行中只能写一条语句
B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C.在C程序中,无论是整数还是实数,都能被准确无误地表示
D.在C程序中,%是只能用于整数运算的运算符
12、下面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
13、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是()。

A.int a=b=c=5;
B.int a,b,c=5;
C.a=5,b=5,c=5;
D.a=b=c=5;
14、以下程序的输出结果是()。

(注:口表示空格)
#include<stdio.h>
int main()
{printf("\n*s1=%15s*","chinabeijing");
printf("\n*s2=%-5s*","chi");
return 0;
}
A.*s1=chinabeijing囗囗囗* *s2=**chi*
B.*s1=chinabeijing囗囗囗* *s2=chi囗囗*
C.*s1=*囗囗chinabeijing* *s2=囗囗chi *
D.*s1=囗囗囗chinabeijing* *s2=chi囗囗*
15、若有说明:int a[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小()
A.2
B.3
C.4
D.无确定值
16、一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
17、以下描述中正确的是( )
A.while、do-while、for循环中的循环体语句都至少被执行一次
B.do-while循环中,while(表达式)后面的分号可以省略
C.while循环体中,一定要有能使while后面表达式的值变为“假”的操作
D.do-while 循环中,根据情况可以省略 while
18、以下程序有语法性错误,有关错误原因的正确说法是()。

#include <stdio.h>
int main()
{int G=5,k;
void prt_char();
-----
k=prt_char(G);
---
}
A.语句void prt_char();有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下划线
19、若有说明:char*language[]={"FORTRAN","BASIC","PASCAL",JAVA","C");则language[2]的值是()。

A.一个字符
B.一个地址
C.一个字符串
D.一个不定值
20、下面程序段的运行结果是()。

char*s="abcde";
s+=2;printf("%d',s);
A.cde
B.字符c
C.字符c的地址
D.无确定的输出结果
21、以下程序的正确运行结果是()。

#include <stdio.h>
void num()
{extern int x,y;int a=15,b=10;
x=a-b;y=a+b;
int x,y;
int main()
{int a=7,b=5;
x=a+b;y=a-b;
num();
printf("%d,%d\n",x,y);
return(0);
}
A.12,2
B.不确定
C.5,25
D.1,12
22、下面程序段的运行结果是()。

int a[6][6],i,j;
for(i=1;i<6;i++)
for(j=1:j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{for(j=1;j<6;j++)
printf("%2d",a[i][j]);
printf("\n")
}
A)11111 B)00001 C)10000 D)10001
11111 00010 01000 01010 11111 00100 00100 00100 11111 01000 00010 01010 11111 10000 00001 10001 23、当运行以下程序时,从键盘输入:
aa bb<回车>
ccdd<回车>
则下面程序的运行结果是()。

#include<stdio.h>
int main()
{char al[5],a2[5],a3[5],a4[5];
scanf("%s%s",al,a2);
gets(a3);gets(a4);
puts(a1);puts(a2);
puts(a3);puts(a4);
return 0;
}
A)aa B)aa C)aa D)aa bb
bb bb bb cc
cc cc dd dd cc dd dd ee
24、以下程序的输出是()。

#include <stdio.h>
int main()
{int a=5,b=8,c=3,max;
max=a;
if(c>B.
if(c>A.
max=c;
else
if(b>A.
max=b;
printf("max=%d\n",max);
return 0;
}
A.max=8
B.max=5
C.max=3
D.无输出结果
25、下面程序的运行结果是()。

#include <stdio.h>
int main()
{int x,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
return 0;
}
A.39 81
B.42 84
C.26 68
D.28 70
三、读程序填空
26、以下程序的运行结果是_______。

#include <stdio.h>
int main()
{int m=177;
printf("%o\n",m);
return 0;
}
27、以下程序的输出结果是_______。

#include <stdio.h>
int main()
{int x=10;float pi=3.1416;
printf("(1)%d\n",x);
printf("(2)%6d\n",x);
printf("(3)%f\n",56.1);
printf("(4)%14fNn", pi);
printf("(5)%e\n",568.1);
printf("(6)%14e\n", pi);
printf("(7)%g\n", pi);
printf("(8)%12g\n", pi):
return 0;
}
28、以下程序的功能是:输入3个整数,按从大到小的顺序进行输出。

请填空。

#include<stdio.h>
int main()
{int x,y,z,c;
scanf("%d%d%d",8.x,&y,8.z);
if(_______)
{c=y;y=z;z=c;)
if(_______)
{c=x;x=z;z=c;}
if ( [3] )
{c=x;x=y;y=c;}
printf("%d,%d,%d",x,y,z);
return 0;
}
29、以下程序的运行结果是_______。

#include<stdio.h>
int main()
{intx=1,y,z;
x*=3+2;
printf("%d\t",x);
x*=y=z=5;
printf("%d\t',x);
x=y= =z;
printf("%d\n",x);
return 0;
}
30、下面程序段的运行结果是_______。

i=1;a=0;s=1;
do{a=a+s*i;s=-s;i++;}while(i<=10);printf("a=%d",a);
31、以下程序的功能是_______。

#include <stdio.h>
int fac(int n)
{static int f=1;
f=f*n;
return(f);
}
int main()
{int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
return(0);
}
32、下面程序的运行结果是_______。

#include <stdio.h>
int main()
{int a[5][5],i,j,n=l;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=n++;
printf("The result is:\n");
for(i=0;i<5;i++)
{for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return0;
}
33、以下程序的运行结果是_______。

#include <stdio.h>
int find(int*a,int n,int x)
{int*p=a;
while(p<a+n 8.8*p!=x)p++;
if(p<a+n)return p-a;
else return-1;
int main()
{int a[10]={1,2,3,4,5,6,7,8,9,10};
int x=4;
printf("\n%d\n",find(a,10,x));
return(0);
}
四、编程题
34、编写程序实现功能:对于给定的一个百分制成绩,改用相应的五级分成绩表示。

设:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下
为E(要求用switch语句实现)。

35、已有变量定义语句doublea=5.0,p;int n=5;和函数调用语句p=mypow (a,n);用以求a的n次方。

请编写double mypow(double x,inty)函数。

double mypow(double x,int y)
{
}
参考答案
一、填空题
1、-2
2、内存中的一个存储单元
3、主函数(或main函数)
4、【1】12【2】4
5、-16
6、【1】char a,*p;【2】scanf("%c",8.a);【3】p=8.a;
7、**
8、structs*next;
9、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车>
(注:答案中的囗代表空格)
10、z,x,y或z,y,x
二、选择题
11、D
12、B
13、A
14、D
15、B
16、A
17、C
18、C
19、B
20、C
21、D
22、C
23、A
24、B
25、D
三、读程序填空
26、261
27、(1)10
(2)口口口囗10
(3)56.100000
(4)口口口口口口3.141600(5)5.68100e+02
(6)口口口3.14160e+00
(7)3.1416
(8)口口口口囗囗3.1416
(注:答案中的囗代表空格)28、【1】y<z【2】x<z【3】x<y
30、a=-5
31、输出1~5的阶乘
32、The result is:
1
6 7
11 12 13
16 17 18 19
21 22 23 24 25
33、3
四、编程题
34、#include <stdio.h>
int main()
{int score,temp,log;
char grade;
log=1;
while(log)
{printf("enter score:");
scanf("%d”,8.score);
if((score>100)|l(score<0))printf("\n error,try again!\n");
if(score==100)temp=9;
else temp=(score-score%10)/10;switch(temp){case 0:case 1:case 2:
case 3:case 4:
case 5: grade='E';break;
case 6:grade='D';break;
case 7:grade='C';break;
case 8:grade='B';break;
case 9:grade='A';
printf("score=%d,grade=%c\n",score,grade);
return 0;
}
35、double mypow(double x,int y)
{int i;double p;
p=1.0;
for(i=1;i<=y;++i)p=p*x;
return p;
}。

相关文档
最新文档