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、若有定义语句:inte=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_______。

5、表达式pow(2.8,sqrt(double(x))值的数据类型为_______。

6、请读程序段:
int x=1;
printf("%d\n",~x);
上面程序段的输出结果是_______。

7、下面程序段中循环体的执行次数是_______。

a=10;b=0;
do{b+=2;a-=2+b;}while(a>=0);
8、设有如下定义:
#define SWAP(T,X,Y){T=X;X=Y;Y=T;}
以下程序段将通过调用宏实现变量x和y内容的交换,请填空。

Double x=2.5,y=6.4,z;SWAP(_______);
9、下面程序段将输出computer。

请填空。

char c[]="It is a computer";
for(i=0;_______;i++)
{_______;printf("%c",c[j]);}
10、下面程序段的运行结果是_______。

char*s1="AbcdEf", *s2="aB";
int t;s1++;
t=(strcmp(s1,s2)>0);
printf("%d\n",t);
二、选择题
11、以下正确的叙述是( )。

A.在C程序中,每行中只能写一条语句
B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C.在C程序中,无论是整数还是实数,都能被准确无误地表示
D.在C程序中,%是只能用于整数运算的运算符
12、已知字母A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2='A'+'6'-'3';后,c2中的值为( )。

A.D
B.68
C.不确定的值
D.C
13、C语言规定:在一个源程序中,main函数的位置( )
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
14、一个C语言程序由( )。

A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
15、下面程序段(每行代码前面的数字表示行号)。

1 int a[3]={0},i;
2 for(i=0;i<3;i++)scani("%d",&a[i]);
3 for(i=1;i<4;i++)a[0]=a[0]+a[i];
4 printf("%d\n",a[0]);
A.没有错误
B.第1行有错误
C.第2行有错误
D.第3行有错误
16、设有说明:double y=0.5,z=1.5;int x=10;则能够正确使用C语言库函数的赋值语句是()。

A.z=exp(y)+fabs(x);
B.y=log10(y)+pow(y);
C.z=sqrt(y-z);
D.x=(int)(atan2((double)x,y)+exp(y-
0.2));
17、以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是()。

A)v oid strcpyl(char xpl,char*p2)
{while((*p1++=*p2++)!=\0');}
B)void strcpy1(char *pl,char *p2)
{while((*pl=*p2)!=\0){p1++;p2++;}}
C)void strcpy1(char *pl,char *p2)
{while(*p2)*p1++=*p2++;}
D)void trcpyl(char *p1,char *p2)
{while((*pl++=*p2++);)*p='\0';}
18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()
A.extern
B.register
C.auto
D.static
19、下面的程序段( )。

x=3;
do
{y=x--;
if(!y){printf("x");continue;}
printf(“#”);
}while(1<=x<=2);
A.将输出##
B.将输出并## *
C.是死循环
D.含有不合法的控制表达式
20、设有程序段:
int k=10;while(k=0)k=k-1;
则下面描述中正确的是()。

A.while循环执行10次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
21、以下程序的输出是( )。

#include<stdio.h>
int main()
{int a=100,x=10,y=20,okl=5,ok2=0;
if(x<y)
if(y!=10)
if(!ok1)
a=1;
else
if(ok2)a=10;
a=-1;
printf("%d\n",A.;
return 0;
}
A.1
B.0
C.-1
D.值不确定
22、下面程序的运行结果是()。

#include <stdio.h>
#include <string.h>
int main()
{char a[80]="AB',b[80]="LMNP";inti=0;
strcat(a,B.;
while(a[i++]!=‘\o’)b[i]=a[i];
puts(B.;
return 0;
}
A.LB
B.ABLMNP
C.AB
D.LBLMNP
23、下面程序的运行结果是()。

#include<stdio.h>
int main()
{chara[]="morming",t;int i,j=0;
for(i=1;i<7;i++)
if(a[j]<a[ ]) j=i;
t=a[j];a[j]=a[7];
a[7]=a[j]; puts(a);
return 0;
}
A)mogninr B)mo C)morning D)mornin
24、以下程序的正确运行结果是()。

#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
25、下面程序的功能是将从键盘输入的偶数写成两个素数之和。

请选择填空()
#include<stdio.h>
#include<math.h>
int main()
{int a,b,c,d;
scanf("%d",&.A.;
for(b=3;b<=a/2;b+=2)
{for(c=2;c<=sqrt(B.;c++)
if(b%c==0)break;
if(c>sqrt(B.)d=【】;
else break;
for(c=2;c<=sqrt(D.;c++)
if(d%c==0)break;
if(c>sqrt(D.)printf("%d=%d+%d\n",a,b,D.;
}
return 0;
}
A.a+b
B.a-b
C.a*b
D.a/b
三、读程序填空
26、若要求下列程序的输出结果为8.00,则[]中应填入的是_______。

#include <stdio.h>
int main()
{int k=2,m=5;
float s,x=1.2,y=[];
s=2/3+k*y/x+m/2;
printf("%4.2f\n",s);
return 0;
}
27、已有定义int d=-2;执行以下语句后的输出结果是_______。

printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);printf("*d(4)=%x*d(5)=%6x*d(6)=%-6x*\n",d,d,d);
28、以下程序可计算1门课程中10名学生成绩的平均分。

请填空。

#include <stdio.h>
float average(float array[10])
{int i;float aver,
sum=array[o];
for(i=1;_______;i++)
sum+=_______;
aver=sum/10;
return(aver);
}
int main()
{float score[10],aver;int i;
printf("\ninput 10 scores:");
for(i=0;i<10;i++)scanf("%f",&.score[i]);
aver=_______;
printf("\naverage score is%5.2f\n",aver);
return(0);
}
29、以下程序的运行结果是_______。

#include<stdio.h>
int func(int a[][3]
int main()
{int a[3][3]={1,3,5,7,9,11,13,15,17};
int sum;
sum=func(a);
printf("\nsum=%d\n",sum);
return(0);
}
int func(int a[][3])
{int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{a[i][j]=i+j;
if(i==j)sum=sum+a[i][j];
}
return(sum);
}
30、下面程序的运行结果是_______。

#include<stdio.h>
int main()
{int i;
for(i=1;i<=5;i++)
switch(i%2)
{case 0:i++;printf("#");break;
case 1:i+=2;printf("*");
default:printf("\n");
}
return 0;
}
31、若有以下输入,则下面程序的运行结果是_______。

5<回车>
97531<回车>
5<回车>
#include<stdio.h>
#define M10
int main()
{int a[M],x,i,n;
printf("Enter n(n<10):");scanf("%d",8.n);
for(i=1;i<=n;i++)scanf("%d",a+i);
printf("Enter x:");scanf("%d",8.x);
a[0]=x;i=n;
while(x>a[i]){a[i+1]=a[i];i-一;}
a[i+1]=x;
n++;
for(i=1;i<=n;i++)printf("%3d",a[i]);
return 0;
}
32、以下程序段的输出结果是_______。

int x=1,y=0;
switch(x)
{case1:
switch(y)
{case 0:printf("**1**\n");break;
case1:printf("**2**\n");break;
case 2:printf("**3**\n");
}
33、以下程序给方阵a中所有边上的元素和两个对角线上的元素置1,其他元素置0。

要求对每个元素只置一次值,最后按矩阵形式输出a。

请填空。

#include <stdio.h>
int main()
{int a[10][10];
int i,j=9;
for(i=0;i<10;_______)
{a[i][i]=1;*(*(a+i)+j)=1;}
for(i=1;i<9;i++)*(*a+i)=1;
for(i=1;i<9;i++)*(_______)=1;
for(i=8;i>0;i-一)*(*(a+9)+_______)=1;
for(i=8;i>0;i-一)*(*(a+i)+9)=1;
for(i=1;i<=8;i++)
for(j=1;j<=8;j++)
if(*(*(a+i)+j)!=1)*(*(a+i)+j)=0;
for(i=0;i<10;i++)
{for(j=0;j<10;j++)
printf("%2d",*(*(a+i)+j));
printf("\n");
}
return(0);
}
四、编程题
34、以下程序的功能是用牛顿法求解方程f(x)=cosx-x=0。

已有初始值
x0=3.1415/4,要求绝对误差不超过0.001,函数f用来计算迭代公式中x n的值,请编写f函数。

牛顿迭代公式是:
X n+1=x n-f(x n)/f’(x n)

X n+1=x n-(cosx n-x n)/(sinx n-1)
#include <stdio.h>
#include<math.h>
#define Pl3.1415
float f(float xo)
double f(double xo)
{
}
int main()
{intt=0,k=100,n=0; double x0=Pl/4,x1;
while(n<k)
{x1=f(x0);
if(fabs(x0-x1)<0.001)
{t=1;break;}
else{x0=xl;n=n+1;}
if(t==1)printf("\nFangcheng geng is%10.5f",xl);
else printf("\nSorry,not found!");
return 0
}
35、已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next)。

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

若原链表为:
逆置后的链表应为:
参考答案
一、填空题
1、structs*next;
2、【1】.c【2】.obj【3】.exe
3、内存中的一个存储单元
4、13.700000
5、双精度型(或double型)
6、-2
7、3
8、z,x,y或z,y,x
9、【1】i<=7【2】j=i+8
10、1
二、选择题
11、D
12、A
13、C
14、B
15、D
16、D
17、D
18、D
19、C
20、C
21、C
22、D
23、B
24、D
25、B
三、读程序填空
26、3.6
27、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=fffe*d(5)=囗囗fffe*d(6)=fffe囗*
(注:答案中的囗代表空格)
28、【1】i<10【2】array[i]【3】average(score)
29、sum=6
30、*
#
31、9 7 5 5 3 1
32、60~69
<60
error!
33、【1】++,j--【2】*(a+i)【3】i
四、编程题
34、double f(float xo)
{double x1;
x1=(cos(x0)-x0)/(sin(x0)+1);
x1=x1+xo;
return x1;
}
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);}。

相关文档
最新文档