2022年运城学院公共课《C语言》科目期末试卷A(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年运城学院公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、请读程序段:
int x=1;
printf("%d\n",~x);
上面程序段的输出结果是_______。
2、C语言的源程序必须通过【】和【】后,才能被计算机执行。
3、在C语言源程序中,一个变量代表【】。
4、若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_______
5、C语言中的标识符只能由3种字符组成,它们是_______、_______和_______
6、下面程序段的运行结果是_______。
char s[20]="abcd";
char*sp=s;
sp++;
puts(strcat(sp,"ABCD"));
7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。
请填空。
for(x=0;x<=30;x++)
{y=30一x;
if(_______)printf("%d,%d\n",x,y);
}
8、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union
{int n;doublex;}num;
num.n=10;
num.x=10.5;
printf("_______",_______);
9、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。
struct s{char data;
_______
}node;
10、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。
二、选择题
11、下面4个选项中,是非法常量的选项是( )。
12、设有说明语句:int k=7,x=12;则以下能使值为3的表达式是( )。
A..x%=(k%=5)
B..x%=(k-k%5)
C..x%=k-k%5
D..(x%=k)-(k%=5)
13、以下针对scanf函数的叙述中,正确的是()。
A.输入项可以为一实型常量,如scanf("%f",3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf
("%4.2f",&f);
D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);
14、以下C程序的运行结果是。
(注:口表示空格)
#include<stdio.h>
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
15、有两个字符数组a、b,则以下正确的输人格式是()。
A.gets(a,
B.; B.scanf("%s%s",a,B.;
C)scanf("%s%s",&a,&b); D)gets("a"),gets("b");
16、一个C语言程序由( )。
A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
17、以下描述中正确的是( )
A.while、do-while、for循环中的循环体语句都至少被执行一次
B.do-while循环中,while(表达式)后面的分号可以省略
C.while循环体中,一定要有能使while后面表达式的值变为“假”的操作
D.do-while 循环中,根据情况可以省略 while
18、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
19、下面程序段的运行结果是()。
char*s="abcde";
s+=2;printf("%d',s);
A.cde
B.字符c
C.字符c的地址
D.无确定的输出结果
20、以下正确的叙述是()
A.C语言允许main函数带形参,且形参个数、类型和形参名均可由用户指定
B.C语言允许main函数带形参,形参名只能是argc和argv
C.当main函数带有形参时,传给形参的值只能从命令行中得到
D.若有说明:main(int argc,char*argv),则形参argc的值必须大于1
21、以下程序的运行结果是()。
#include<stdio.h>
void fun(int x)
{if(x/2>0)fun(x/2-2);
printf("%d”,x);
}
int main()
{ fun(20);
printf("\n");
return(0);
}
A.2082-1
B.2820
C.8
D.-12820
22、对两个数组a和b进行如下初始化:
char a[]="ABCDEF";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是()。
A.a与b数组完全相同
B.a与b长度相同
C.a和b中都存放字符串
D.a的长度比b长
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>
int main()
{int a=5,b=0,c=0;
if(a=b+C.printf("***\n");
else printf("$$$\n");
return 0;
}
A.有语法错不能通过编译
B.可以通过编译但不能通过连接
C.输出***
D.输出$$$
25、下面程序的运行结果是()。
#include <stdio.h>
int main()
{int i;
for(i=1;i<=5;i++)
{if(i%2)printf(”x");
else continue;
printf("#");
printf("$\n");
return 0;
}
A.*#*#*#$
B.#*#*#*$
C.*#*#$
D.#*#*$
三、读程序填空
26、已有定义int d=-2;执行以下语句后的输出结果是_______。
printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);printf("*d(4)=%o*d(5)=%7o*d(6)=% 7o*\n",d,d,d);
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、以下程序的功能是判断输入的某个年份是否是闰年。
请填空。
#include <stdio.h>
int main()
{int y,f;
scanf("%d",&y);
if(y%400==0)f=1;
else if(_______)f=1;
else_______;
if(f)printf("%d is",y);
else printf("%d is not",y);
printf("a leap year\n");
return 0;
}
29、以下程序的功能是:根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型。
请填空。
#include<math.h>
main()
{float a,b,c;float s,area;
scanf("%f%f%f”,8&.a,8&b,8.c);
if(_______)
{s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c)):
printf("%f,area);
if(_______)
printf(“等边三角形”);
else if(_______)
printf("等腰三角形”);
else if((a*a+b*b==c*c)||(a*a+cxc==b*b)||(b*b+c*c==a*a))printf("直角三角形”);
else printf(“一般三角形”):
else printf(“不能组成三角形”);
return 0;
}
30、下面程序的功能是求1000以内的所有完全数。
请填空。
(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数。
例如:6=1+2+3,6为完全数)
#include <stdio.h>
int main()
{ int a,i,m;
for(a=1;a<=1000;a++)
{ for(_______;i<=a/2;i++)if(!(a % i))_______;
if(m==a)printf("%4d",a);
}
return 0;
}
31、为使以下程序顺利运行,请在_______中填写正确的内容;当输入的数值为57时,该程序的运行结果是_______。
# include <stdio.h>
_______
int main()
{ double x,y;
scanf("%11% lf",8.x,8.y);
printf("% If\n", max(y,x));
return(O);
}
double max(double a, double b)
{return(a>b?b-a:a-b):}
32、下面程序中的数组a包括10个整型元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素的形式输出数组b。
请填空。
#include <stdio.h>
int main()
{ int a[10],b[10],i;
for(i=0;_______;i++)
scanf("%d",8.a[i]);
for(i=1;_______;i++)
b[i]=a[i]一a[i-1];
for(i=1;i<10;i++)
{printf("%3d",b[i]);
if(_______)printf("\n");
}
return 0;
}
33、下面程序的功能是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串称为“回文”,如level)。
请填空。
#include<stdio.h>
#include<string.h>
int main()
{chars[81],*pl,*p2;
int n;
gets(s);
n=strlen(s);
pl=s;p2=_______;
while(_______)
{if(*pl!=*p2)break;
else{pl++;[3];}
if(pl<p2)
printf("No\n");
else printf("Yes\n");
return(0);
}
四、编程题
34、试利用结构体类型编制一个程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。
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、【1】编译【2】连接
3、内存中的一个存储单元
4、3.500000
5、【1】字母【2】数字【3】下划线
6、bedABCD
7、2*x+4*y==90
8、【1】%If【2】num.x
9、structs*next;
10、double a[M][M]={0};
二、选择题
11、A
12、D
13、D
14、D
15、B
16、B
17、C
18、A
19、C
20、C
21、D
22、D
23、B
24、D
25、A
三、读程序填空
26、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=177776*d(5)=囗177776*d(6)=177776囗*
(注:答案中的囗代表空格)
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%4==0&&y%100!=0【2】f=0
29、【1】a+b>c&&b+c>a &&a+c>b
【2】a==b&&b==c
【3】a==b||a==c||b==c
30、【1】m=0,i=1【2】m+=i
31、【1】double max(double,double);【2】-2.000000
32、【1】i<10【2】i<10【3】i%3==0
33、【1】s+n-1【2】pl<p2【3】p2
四、编程题
34、#include<stdio.h>
int main()
{struct study int mid;
int end;
int average;
}math;
scanf("%d%d",&math.mid,&.math.end);
math.average=(math.mid+math.end)/2;
printf("average=%d\n",math.average);
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;
}。