2022年西北农林科技大学公共课《C语言》科目期末试卷A(有答案)

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

2022年西北农林科技大学公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位
(右起为第1位),则b的二进制数是_______。

2、C语言的源程序必须通过【】和【】后,才能被计算机执行。

3、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数
________完成的。

4、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______
5、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值
为_______,n的值为_______。

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

Char a[]="123456789",*p;
inti=0;p=a;
while(*p)
{if(i%2==0)*p='*';
p++;i++;
}
puts(a);
7、下面add函数的功能是求两个参数的和,并将和值返回调用函数。

函数中错误的部分
是_______,改正后为_______。

void add(float a,float b)
{float c;
c=a+b;
return c;
}
8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。

请填空。

a+=_______;b=a-_______;a-=_______;
9、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。

struct s{char data;
_______
}node;
10、下面程序段的运行结果是_______。

int i=5;char c[6]="abcd";
do{c[i]=c[i-1];}while(--i>0);
puts(c);
二、选择题
11、下面4个选项中,是合法转义字符的选项是( )。

A.’\"
B. '\ '
C. ' \018'
D. '\\o'
'\\ ' ' \017' '\f' '\10l'
'\n' '\ " ' xab' ' xlf'
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、以下C程序的运行结果是。

(注:口表示空格)
#include <stdio.h>
int main()
{long y=-43456;printf("y=%-8ld\n",y);
printf("y=%-08ld\n",y);
printf("y=%08ld\n",y);
printf("y=%+8ld\n",y);
return 0;
}
A.y=囗囗-43456 y=-囗囗43456 y=-0043456 y=-43456
B.y=-43456 y=-43456 y=-0043456 y=+囗-43456
C.y=-43456 y=-43456 y=-0043456 y=囗囗-43456
D.y=囗囗-43456 y=-0043456 y=00043456 y=+43456
14、设有如下程序:
#include<stdio.h>
int main()
{char ch1='A',ch2='a';
printf("%c\n",(chl,ch2));
return 0;
}
则以下叙述中正确的是()。

A.程序的输出结果为大写字母A
B.程序的输出结果为小写字母a
C.运行时产生错误信息
D.格式说明符的个数少于输出项的个数,编译出错
15、对以下定义语句的正确理解是()。

int a[10]={6,7,8,9,10};
A.将6,7,8,9,10依次赋给a[1]~a[5]
B.将6,7,8,9,10个初值依次赋给a[o]~a[4]
C.将6,7,8,9,10个初值依次赋给a[6]~a[10]
D.因为数组长度与初值的个数不相同,所以此初始化语句不正确
16、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
17、在下面的程序段中()。

Int t,x;
for(t=1;t<=100;t++)
{scanf("%d”,&x);
if(x<0)continue;
printf("%3d",t);
}
A.当x<0时整个循环结束
B.x≥0时什么也不输出
C.printf函数永远也不执行
D.最多允许输出100个非负整数
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、若有定义:int(*p)[4];则标识符p()。

A.是一个指向整型变量的指针
B.是一个指针数组名
C.是一个指针,它指向一个含有四个整型元素的一维数组
D.说明不合法
20、若有以下定义和语句,则对a数组元素的正确引用为()。

int a[2][3],(*p)[3];
p=a;
A.(p+1)[0]
B.*(*(p+2)+1)
C.*(p[1]+1)
D.p[1]+2
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、下面程序的运行结果是()。

#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、有已排好序的字符串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、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是()。

if(a<B.
if(c<D.x=l;
else
if(a<C.
if(b<D.x=2;
else x=3;
else x=6;
else x=7;
A.1
B.2
C.3
D.6
25、若运行以下程序时,从键盘输入3.62.4<回车>,则下面程序的运行结果是()
# include<stdio.h>
# include<math.h>
int main()
{ float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(1)
if(fabs(z)>1.0){x=y;y=z;z=x/y;}
else break;
printf("%f\n",y);
return 0;
}
A)1.500000 B)1.600000 C)2.000000 D)2.400000
三、读程序填空
26、以下程序的输出结果是_______。

#include<stdio.h>
int main()
{int a=252;
printf("a=%oa=%#o\n",a,a);
printf("a=%xa=%#x\n",a,a);
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、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段。

请填空。

含有switch语句的程序段:
Int x,y,m;
y=(int)(x/10);
switch(y)
{case10:m=5;break;
case 9:m=4;break;
case 8:m=3;break;
case 7:m=2;break;
case 6;m=1;break;
default:m=0;
}
含有非嵌套if语句的程序段:
int x,m;
if(_______)m=5;
if(x<100)&&(x=90))m=4;
if(x<90)&&(x>=80))m=3;
if(×<80)&&(x>=70))m=2;
if(x<70)&&(x=60))m=1;
if(_______)_______;
29、以下程序的功能是:计算y年m1月d1日与同年的m2月d2日之间的天数
(m2>=m1),并打印计算结果。

若ml=m2且d1=d2则算1天。

在闰年时,2月有29天。

闰年的年号由以下方式确定:该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年。

例如:输入1997,2,27,3,10
<回车>时,输出为12。

表明从1997年2月27日到3月10日共有12天。

请填空。

#include<stdio.h>
int main()
{int y,ml,d1,m2,d2;
int i,d;
scanf("%d,%d,%d,%d,%d",&y,&m1,&d1,&m2,&d2);
y=(y%4==0_______y%100!=0_______y%400==0)?1:0;
d=0-d1;
for(i=ml;i<m2;i++)
switch(i)
{case 1:case 3:case 5:case 7:
case 8:case 10:case 12:
d+=31;
break;
case 2:d=d+28+y; break;
case 4:case 6:case 9:case 11:
_______;
printf("%d",d+d2+1);
return 0;
}
30、当运行以下程序时,从键盘键入“right?<回车>”,则下面程序的运行结果是_______。

#include<stdio.h>
int main()
{char c;
while((c=getchar())!=?)
putchar(++c);
return 0;
}
31、函数yanghui能够按以下形式构成一个杨辉三角形。

请填空。

1
11
1 2 1
1 3
2 1
1 4 3
2 1
# include <stdio.h>
# define N 1
void yanghui(int a[] [N])
{ int i,j;
for(i=0;i<N;i++){a[i][1]=1;a[i][i]=1;}
for(_______;i<N;i++)
for(j=2;_______;j++) a[i][j]=_______+a[i-1][j];
}
32、下面程序的运行结果是_______。

#include <stdio.h>
#define LEN4
int main()
{int j,c;
char n[2][LEN+1]={"8980","9198"};
for(j=1EN-1;j>=0;j--)
{c=n[o][j]+n[1][j]-2*'0';
n[o][j]=c%10+'0';
}
for(j=0;j<=1;j++)puts(n[j]);
return0;
}
33、以下程序在a数组中查找与x值相同的元素的所在位置。

请填空。

#include <stdio.h>
int main()
{int a[11],x,i;
printf("Enter 10 integers:\n");
for(i=1;i<=10;i++)scanf("%d",a+i);
printf("Enterx:");
scanf("%d",&x);
*a=_______;i=10;
while(x!=*(a+i))
_______;
if(_______)printf("%5d's position is:%4d\n",x,i);
else printf("%d Not been found!\n",x);
return(0);
}
四、编程题
34、编写程序,统计d输入的命令行中第二个参数所包含的英文字符个数。

35、编写程序判断输入的正整数是否既是5又是7的整倍数。

若是,则输出yes;否则输出no。

参考答案
一、填空题
1、10000010
2、【1】编译【2】连接
3、【1】scanf【2】printf
4、1
5、【1】10【2】6
6、*2*4*6*8*
7、【1】void add(float a,float b)【2】float add(float a,float b)
8、【1】b【2】b【3】b
9、structs*next;
10、aabcd
二、选择题
11、A
12、D
13、C
14、B
15、B
16、D
17、D
18、C
19、C
20、C
21、D
22、D
23、B
24、B
25、B
三、读程序填空
26、a=374囗囗a=0374
a=fc囗囗a=0xfc
(注:答案中的囗代表空格)
27、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=fffe*d(5)=囗囗fffe*d(6)=fffe囗*
(注:答案中的囗代表空格)
28、【1】1【2】2【3】2
29、【1】&&【2】||【3】d+=30
30、sjhiu
31、【1】i=1【2】j<=i-1【3】a[i-1][j-1]
32、7078
9198
33、【1】x【2】i--【3】i>0
四、编程题
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 x;
scanf("%d",&x);
if(x%5==08&.&x%7==0)
printf("yes");
else
printf("no");return 0;
}。

相关文档
最新文档