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

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

2022年河海大学公共课《C语言》科目期末试卷B(有答案)
一、填空题
1、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、
cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为
_______。

2、C语言源程序的基本单位是________
3、结构化程序由________、________ 、________ 3种基本结构组成。

4、表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为_______。

5、C语言所提供的基本数据类型包括:单精度型、双精度型、_______、_______和_______。

6、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。

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

a=10;b=0;
do{b+=2;a-=2+b;}while(a>=0);
8、下面程序段的运行结果是_______。

int i=5;char c[6]="abcd";
do{c[i]=c[i-1];}while(--i>0);
puts(c);
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、下面程序可求出图中方括号内的元素之积,请填空。

# include<stdio.h>
int main()
{ int x[3][3]={7,2,1,3,4,8,9,2,6};
int s,*p;
p=_______;
s=*p*_______;
printf("product=%d",s);
return(0);
}
二、选择题
11、在C语言中,要求运算数必须是整型的运算符是( )。

(A) / B.++ C.!= D.%
12、表达式18/4*sqrt(4.0)/8值的数据类型为()
A.int
B.float
C.double
D.不确定
13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
14、一个C语言程序由( )。

A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
15、以下对一维整型数组a的正确说明是()。

A.int a(10);
B.int n=0,a[n];
C.int n;scanf("%d",&n); int a[n];
D.#define SIZE10;int a[SIZE];
16、以下不符合C语法的赋值语句是()。

A.m=(2+1,m=1);
B.m=n=0;
C.m=1,n=2
D.n++;
17、设char*s="\ta\017bc”;则指针变量s指向的字符串所占的字节数()
A.9
B.5
C.6
D.7
18、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
19、以下不是无限循环的语句为()。

A.for(y=0,x=1;x>++y;x=i++)i=x;
B.for(;;x++=i):
C.while(1){x++;}
D.for(i=10;;i-一)sum+=i;
20、执行语句for(i=1;i++<4;);后变量i的值是()。

A.3
B.4
C.5
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、定义如下变量和数组:
int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是()。

for(k=0;k<3;k++)printf("%d",a[k][2-k]);
A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
23、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。

请选择填空。

#include<stdio.h>
#include<string.h>
int main()
{char a[]="acegikm",b[]="bdfhjlnpq";
charc[80],*p;
int i=0,j=0,k=0;
while(a[i]!=\o'&&b[j]!='\o')
{if(a[i]<b[j]){ c[k]=a[i];i++}
else{【】}
k++;
}
c[k]='\o';
if(a[i]== '\0')p=b+j;
else p=a+i;
strcat(c,p);
puts(C.;
return 0;
}
A.c[k]=a[i];i++;
B.c[k]=a[j];i++;
C.c[k]=a[i];j++;
D.c[k]=a[j];j++;
24、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A',B’,C.;则符合程序段运行结果的选项是()。

void move(char getone,char putone)
{printf("%c——>%c\n",getone,putone);
void hanoi(int n,char one,char two,char three){if(n==1)move(one,three);
else
{hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
A)A-->C B)A-->C C)A-->C D)A-->C
A-->B A-->B A-->B A-->B
C-->B C-->A C-->B C-->B
B-->A A-->B A-->C A-->C
C-->B B-->C B-->A A—->B
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
25、下面程序的运行结果是( )。

#include<stdio.h>
int main()
{int y=10;
do{y--;}
while(--y);
printf("%d\n",y--);
return 0;
}
A)-1 B)1 C)8 D)0
三、读程序填空
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、已有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是_______。

printf("*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\n",dl,dl,d1);printf("*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\n",d2,d2,d2);28、下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的x的值。

请填空。

π2=1+
1
3
+
1
3

2
5
+
1
3

2
5

3
7
+⋯
# include<conio.h>
# include<math.h>
# include<stdio.h>
double pi(double eps)
{ double s=0.0,t=1.0; int n;
for(_______;t>eps;n++)
{s+=t;
t=n*t/(2*n+1);
}
return(_______);
}
int main()
{ double x=0.0005;
printf("\ neps=% lf, π =% If",x, pi(x));
return(0);
}
29、以下程序的功能是_______。

#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);
}
30、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

请填空。

int n=0,c;
c=getchar();
while(_______)
{if(_______)n++;
c=getchar();
}
31、下面程序的功能是求出矩阵x的上三角元素之积,其中矩阵x的行、列数和元
素值均由键盘输入。

请填空。

#include<stdio.h>
#define M10
main()
{int x[M][M],n,i,j;
longs=1;
printf("Enter a integer(<=10):\n");
scanf("%d",8&.n);
printf("Enter%d data on each line for the array x\n",n);
for(_______)
for(j=0;j<n;j++)
scanf("%d",&x[i][j]); for(i=0;i<n;i++)
for(_______)
_______
printf("%ld\n",s);
return 0;
}
32、以下程序的功能是_______。

#include<stdio.h>
int main()
{int x,y,sum,product;
printf("Enterxand y:");
scanf("%d,%d",&x,&y);
sum=x+y;
product=x*y;
if(sum>product)
printf("(x+y)>(x*y)");
else
printf("(x*y)>=(x+y)");
return 0;
}
33、以下程序把x插到a数组中的下标为k的元素中。

请填空。

#include<stdio.h>
int main()
{int a[51],k,x,i,n;
printf("Enter n(n<50):");
scanf("%d",&n);
printf("Enter%2d integers:\n",n);
for(i=1;i<=n;i++)scanf("%d",a+i);
printf("Enter a location value for inserted number:\n");
scanf("%d”,&k);
printf("Enter a inserted number:\n");
scanf("%d”,8.x);
if((k>0)&&(k<=n+1))
{for(_______)*(a+i+1)=*(a+i);
*(_______)=x;
_______;
}
for(i=1;i<=n;i++)printf("%4d",*(a+i));
printf("\n");
return(0);
}
四、编程题
34、从键盘输入若干整数(数据个数应少于50),其值在0~4的范围内,用-1作为输入结束的标志;统计同一整数的个数。

试编程。

35、请编写程序:主函数从命令行读入一个文件名,然后调用函数getline从文件中读入一个字符串放到字符数组str中(字符个数最多为100个);函数返回字符串的长度。

在主函数中输出字符串及其长度。

参考答案
一、填空题
1、【1】scanf("%d%f%f%c%c”,&a,&.b,8.c1,8.c2);【2】3囗6.5囗12.6aA<回车>
(注:答案中的囗代表空格)
2、函数
3、【1】顺序结构【2】选择结构【3】循环结构
4、整型(或int型)
5、【1】整型【2】字符型【3】枚举型
6、a &040或a&0×20或a&32
7、3
8、aabcd
9、4
10、【1】&x[0][0]【2】(*(p+4))*(*(p+8))
二、选择题
11、D
12、C
13、C
14、B
15、D
16、D
17、C
18、A
19、A
20、C
21、C
22、A
23、D
24、C
25、D
三、读程序填空
26、i:dec=-4,oct=177774,hex=fffc,unsigned=65532
27、*d(1)=3.50000e+00*d(2)=3.500e+00*d(3)=囗3.500e+00*
*d(4)=一3.50000e+00*d(5)=-3.50000e+00*d(6)=-3.5000e+00囗x (注:答案中的囗代表空格)
28、【1】n=1【2】2.0*s
29、输出1~5的阶乘
30、[1]c!='\n' [2]c>=1018&&c<='9'
31、【1】i=0;i<n;i++【2】j=i;j<n;j++【3】s*=x[il[j];
32、输入两个数x、y,比较x+y和x*y哪个大。

33、【1】i=n;i>=k;i--【2】a+k【3】n++
四、编程题
34、#include <stdio.h>
#define M50
int main()
{int a[M],c[5],i,n=0,x;
printf("Enter 0 or 1 or 2 or 3 or 4,to end with-1\n");scanf("%d",8&x);
while(x!=-1)
{if(x>=0&&x<=4)
{a[n]=x;n++;}
scanf("%d",&.x);
}
for(i=0;i<5;i++)c[i]=0;
for(i=0;i<n;i++)c[a[i]]++;
printf("The result is:\n");
for(i=0;i<=4;i++)
printf("%d:%d\n",i,c[i]);
return 0;
}
35、#include <stdio.h>
FILE fp;getline(char str){int i;char c;
i=0;
c=getc(fp);
while(c!='\n&&c!=EOF){str[i]=c;
i++;
c=getc(fp);
}
str[i]=0;
if(c==EOF)return(-1);
else return(i);
}
int main(int argc,char*argv[]){char str[101];
int len;
if(argc!=2)
printf("Error!\n"); else
{fp=fopen(argv[1],"r");
do
{len=getline(str);
puts(str);
printf("len=%d\n",len);
}
while(len>=0); fclose(fp);
}
return 0;
}。

相关文档
最新文档