2022年浙江农林大学公共课《C语言》科目期末试卷A(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年浙江农林大学公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。
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、在C语言中,用关键字_______定义单精度实型变量,用关键字_______定义双
精度实型变量,用关键字_______定义字符型变量。
6、以下程序段通过移动指针变量m,将如图9-5所示连续动态存储单元的值,从
第一个元素起依次输出到终端屏幕。
请填空。
(假设程序段中的所有变量均已正确说明。
)
for(m=q;m-q<10;m++)printf("%d,",_______);printf("\n");
7、下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分
是_______,改正后为_______。
void add(float a,float b)
{float c;
c=a+b;
return c;
}
8、设有如下结构体说明:
struct ST
{int a;float b;
struct ST*c;
doublex[3];
}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。
_______
9、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、
cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为
_______。
10、下面程序段的运行结果是_______。
char ch[]="600";int a,s=0;
for(a=0;ch[a]>= '0'&&ch[a]<='9';a++)
s=10*s+ch[a]-'o';
printf("%d",s);
二、选择题
11、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值
为( )。
A.4
B.16
C.32
D.52
12、下面4个选项中,是正确的数值常量或字符常量的选项是( )
13、以下程序的运行结果是()。
#include <stdio.h>
int main()
{int m=5,n=10;
printf("%d,%d\n",m++,--n):
return 0;
}
A.5,9
B.6,9
C.5,10
D.6,10
14、设有说明: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));
15、下面程序段中有错误的行号是(每行代码前面的数字表示行号)。
1 int a[3]={1};
2 int i;
3 scanf("%d".8a);
4 for(i=1;i<3;i++) a[0]=a[0]+a[i]:
5 printf("a[0]=%d\n",a[0]);
A)1 B)4 C)5 D)3
16、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
17、下面程序段的运行结果是()。
a=1;b=2;c=2;
while(a<b<C.{t=a;a=b;b=t;c—一;}
printf("%d,%d,%d",a,b,C.;
A.1,2,0
B.2,1,0
C.1,2,1
D.2,1,1
18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()
A.extern
B.register
C.auto
D.static
19、若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为()。
A. *(a[i]+j)
B.(a+i)
C.*(a+j)
D.a[i]+j
20、若有函数max(a,B.,并且已使函数指针变量p指向函数max,当调用该函
数时,正确的调用方法是()
A.(*p)max(a,
B.; B.*pmax(a,B.;
C.(*p)(a,B.;
D.*p(a,B.;
21、以下程序的正确运行结果是()。
#include <stdio.h>
#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;i<max;i++)
a[i]=i;
}
void subl()
{for(i=0;i<MAX;i++) a[i]=i+i;
void sub3(int a[])
{int i; for(i=0;i<MAX;i++)
printf("%d",a[i]);
printf("\n");
}
A)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
22、当运行以下程序时,从键盘输入:
ab<回车>
C<回车>
def<回车>
则下面程序的运行结果是()。
#include <stdio.h>
#defineN6
int main()
{charc[N];
int i=0;
for(;i<N;c[i]=getchar(),i++);
for(i=0;i<N;i++)
putchar(c[i]);
return 0;
}
A.abcdef
B.a
C.b
D.ab
b c c
c d d
e
f
23、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。
请选择填空。
#include<stdio.h>
int main()
{char a[20]="cehikngtw",
s[]="fbla";
inti,k,j;
for(k=0;s[k]!=\0';k++)
{ j=0;
while(s[k]>=a[j]& &a[]!=\0)j++;
for(i=strlen(a);i>=j;i--)[2];
a[j]=s[k];
puts(a);
return 0;
}
A)a[i]=a[i+1] B)a[i+1]=a[i] C)a[i]=a[i-1] D)a[i-1]=a[i]
24、以下程序的运行结果是( )。
#include <stdio.h>
int main()
{int a,b,d=241;
a=d/100%9;
b=(-1)8&.8&(-1);
printf("%d,%d",a,B.;
return0;
}
A.6,1
B.2,1
C.6,0
D.2,0
25、下面程序的运行结果是()。
#include <stdio.h>
int main()
{int a=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,B.;
return 0;
A.a=3,b=11
B.a=2,b=8
C.a=1,b=-1
D.a=4,b=9
三、读程序填空
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、以下程序的运行结果是_______。
#include<stdio.h>
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、若运行以下程序时输入字符为Q,则程序的运行结果是_______。
#include <stdio.h>
int main()
{char ch;
scanf("%c",&ch);
ch=(ch>=′A'&&ch<='Z')?(ch+32):ch;
ch=(ch>='a'&&ch<='z')?(ch-32):ch;
printf("%c",ch);
return 0;
}
29、以下程序的功能是:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。
请填空。
#include <stdio.h>
int main()
{char ch;
scanf("%c",8&.ch);
if(_______)ch=ch+32;
else if(ch>='a′8.&ch<='z′)_______;
printf("%c",ch);
return 0;
}
30、下面程序的功能是从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。
请填空。
#include<stdio.h>
int main()
{inti,j,k;
printf("\n hong bai hei\n");
for(i=0;i<=3;i++)
for(_______;j<=5;j++)
{k=8-i-j;
if(_______)
printf("%3d%3d%3d\n",i,j,k);
}
return 0;
}
31、以下程序的运行结果是_______。
#include<stdio.h>
int max(int x,int y);
int main()
{int a=1,b=2,c;
c=max(a,b);
printf("max is%d\n",c);
return(0);
}
int max(int x,int y)
{int z;
z=(x>y)? x:y;
return(z);
}
32、下面程序的运行结果是_______。
#include <stdio.h>
int main()
{int a[10]={7,3,5,2,9,1,0,6,8,4},i=0,j=9,t;
while(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
i+=2;j-=2;
}
for(i=0;i<10:i+=2)
printf("%d",a[i]):
return 0;
}
33、下面程序的运行结果是_______。
#include <stdio.h>
int fun(char*s)
{char*p=s;
while(*p)p++;
return(p-s);
}
int main()
{char*a="123456789";
int i;
i=fun(a+2);
printf("%d",i);
return(0);
}
四、编程题
34、编写程序,统计d输入的命令行中第二个参数所包含的英文字符个数。
35、编写程序实现功能:输入一个复数,输出其共扼复数。
例如,输入2+3i<回车>时,输出2-3i;输入2-3i<回车>时,输出2+3i。
参考答案
一、填空题
1、10000010
2、函数
3、内存中的一个存储单元
4、【1】12【2】4
5、【1】float【2】double【3】char
6、*m
7、【1】void add(float a,float b)【2】float add(float a,float b)
8、struct ST
9、【1】scanf("%d%f%f%c%c”,&a,&.b,8.c1,8.c2);
【2】3囗6.5囗12.6aA<回车>
(注:答案中的囗代表空格)
10、600
二、选择题
11、C
12、D
13、A
14、D
15、D
16、C
17、A
18、D
19、D
20、C
21、D
22、D
23、B
24、B
25、B
三、读程序填空
26、i:dec=-4,oct=177774,hex=fffc,unsigned=65532
27、24820.020.0
28、Q
29、【1】ch>='A'&&.ch<='z'【2】ch=ch-32
30、【1】j=1【2】k>=0&&k<=6
31、max is 2
32、4 6 1 0 8
33、7
四、编程题
34、#include <stdio.h>
#include <ctype.h>
int main(int argc,char*argv[])
{char*str;
int num=0;
if(argc==2)
{str=argv[1];
while(*str)
if(isalpha(*str++))num++;
printf("\nThe count is:%d.\n",num); }
return 0;
}
35、#include <stdio.h>
int main()
{ int a,b;
char symbol;
printf("Please enter:");
scanf("%d%c% di\n",&.a,&. symbol,&.b);
printf("Original value:%d%c% di\n",a, symbol,b); if(symbol=='-')
symbol='+';
else symbol='-';
printf("New value:%d%c% di\n",a, symbol,b); return 0;
}。