2022年江西工商职业技术学院公共课《C语言》科目期末试卷B(有
答案)
一、填空题
1、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
2、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。
for(x=0;x<=30;x++) {y=30一x;
if(_______)printf(\"%d,%d\\n\",x,y); }
3、下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是_______,改正后为_______。 void add(float a,float b) {float c; c=a+b; return c; }
4、把int类型变量low中的低字节及变量high中的高字节放入变量s中的表达式是_______。
5、若x=0123,则表达式(5+(int)(x))&(~2)的值是_______。 6、把以下多项式写成只含7次乘法运算,其余皆为加、减运算的C语言表达式为_______。
5x7+3x6-4x5+2x1+x3-6x2+x+10
7、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;
scanf(\"%4c%4c\",&cl,8&c2); 8、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0); puts(c);
9、下面程序段将输出computer。请填空。
char c[]=\"It is a computer\"; for(i=0;_______;i++) {_______;printf(\"%c\",c[j]);} 10、若有以下定义和语句: int*p[3],a[6],i; for(i=0;i<3;i++) p[i]=8&a[2*i];
则*p[0]引用的是a数组元素_______,*(p[1]+1)引用的是a数组元素_______。
二、选择题
11、设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。
A.n=(n*100+0.5)/100.0 B.m=n*100+0.5,n=m/100.0 C.n=n*100+0.5/100.0 D.n=(n/100+0.5)*100.0
12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A.7 B.8 C.6 D.2
13、以下程序的运行结果是( )。
#include 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、已有如下定义和输入语句,若要求al,a2,c1,c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是。(注:口表示空格) int a1,a2; char c1,c2;
scanf(\"%d%c%d%c”, &a1,&c1,&a2,&c2); A.10A□20B<回车> B.10□A□20□B<回车> C.10A□20B<回车> D.10A20□B<回车>
15、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
16、有字符数组a[80]和b[80],则正确的输出形式是( ) A.puts(a,B.; B.printf(\"%s,%s\",a[],b[]);C.putchar(a,B.; D.puts(A.,puts(B.; 17、下列程序段不是死循环的是( )。 A) inti=100;
while(1)
{i=i%100+1;if(i>100)break; B.for(;;);
C.int k=0;do{++k;}while(k>=0); D.int s=36;while(s);--s;
18、以下程序有语法性错误,有关错误原因的正确说法是(#include 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、设有以下程序段:
char str[4][10]={first\",\"second\",\"third\",\"fourth\"), *strp[4];int n; for(n=0;n<4;n++) strp[n]=str[n];
若k为int型变量且0≤k<4,则对字符串的不正确引用是( )。 A.strp B.str[k] C.strp[k] D.*strp
21、若w、x、y、z、m均为int型变量,则执行下面语句后的m值是( )w=1;x=2;y=3;z=4: m=(w。m=(mA.1 B.2 C.3 D.422、有一堆零件(100~200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件的总数,请选择填空( )。
# include int main() { int i;for(i=100;i<200;i++) if((i-2)%4==0) if(!((i-3)%7)) if([ ])
printf(\"%d\
return 0; }
A)i%9=5 B)i%9!=5 C)(i-5)%9!=0 D)i%9==5
23、下面程序的功能是计算正整数2345的各位数字的平方和,请选择填空( )#include int main(){int n=2345,sum=0; do
{sum=sum+【1】;
。
n= n/10; }while(n);
printf(\"sum=%d\",sum); return 0; }
A.n%10 B.(n%10)*(n%10) C.n/10 D.(n/10)*(n/10) 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 int main(){char ch[7]={\"12ab56\; int i,s=0; for(i=0;ch[i]>= '0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'o'; printf(\"%d\\n\",s); return0; }
A.1 B.1256 C.12ab56 D.15
三、读程序填空
26、以下程序的运行结果是_______。
#include int main() {int n=0; n+=(n=10); printf(\"%d\\n\",n); return 0;}
27、有以下程序:
#include int main() {int k=0; char c1='a', c2='b';scanf(\"%d%c%c”,&k,&c1,&c2); printf(\"%d,%c,%c\\n\",k,c1,c2); return 0; }
若运行时从键盘输入:55AB<回车>,则输出结果是_______。
28、函数gongyue的作用是求整数num1和num2的最大公约数,并返回该值。请填空。
int gongyue(int num1,int num2) {int temp,a,b; if(num1_______num2)
{temp=num1;num1=num2;num2=temp;} a=num1;b=num2; while(_______)
{temp=a%b;a=b;b=temp;} return(a);
}
29、以下程序的运行结果是_______。
#include void f(inta[]) {int i=0;while(a[i]<=10) {printf(\"%d\",a[i]); i++; int main()
{int a[]={1,5,10,9,11,7}; f(a+1); return(0); }
30、下面程序的运行结果是_______。
#include int main() {int i;char a[]=\"Time\",b[]=\"Tom\";
for(i=0;a[i]!=\\0'8.8.b[i]!=\\0';i++) if(a[i]==b[])
if(a[i]>= ′a′&&a[i]<='z')
printf(\"%c\",a[i]-32); else printf(\"%c\",a[i]+32); else printf(\"*\"); return 0;
}
31、下面程序的功能是:根据表4-3中给定的函数关系,对输入的每个x值计算出相应的y值。请填空。
函数关系
x 2<𝑥≤10 −1<𝑥≤2 𝑥≤−1 # include int main() { intx,y; scanf(\"%d\ if (_______)y=x*(x+2); else if (_______) y=2*x; else if(x<=-1) y=x-1; else(_______) ;if(y!=-1) printf(\"%d\ else printf(\"error\"); return 0;
y x(x+2) 2x x-1 }
32、下面程序的功能是从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。请填空。
#include 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; }
33、下面程序的运行结果是_______。
#include char*strc(char*strl,char*str2); int main()
{char*strc(char*strl,char*str2);
char sl[80]=\"computer\",s2[]=\"language\",*pt; pt=strc(s1,s2);
printf(\"%s\\n\",pt); return(0); }
char*strc(char*strl,char*str2) {char*p;
for(p=strl;*p!='\\0';p++); do(*p++=*str2++;} while(*str2!='\\o'); *p='\\0'; return(str1); }
四、编程题
34、已有变量定义语句doublea=5.0,p;int n=5;和函数调用语句p=mypow(a,n);用以求a的n次方。请编写double mypow(double x,inty)函数。
double mypow(double x,int y) {
}
35、已有变量定义和函数调用语句int x=57;isprime(x);函数isprime()用来判断一个整型数a是否为素数;若是素数,则函数返回1,否则返回0。请编写isprime函数。
int isprime(int a) { }
参
一、填空题
1、【1】scanf【2】printf 2、2*x+4*y==90
3、【1】void add(float a,float b)【2】float add(float a,float b) 4、s=high& 0xff00| low&0x00ff 或s=high&.0177400|low&0377 或s=high&65280| low&255 5、0130或88或0x58
6、X*(X*(X*(X*(X*(X*(5*X+3)一4)+2)+1)-6)+1)+10 7、A囗囗囗B囗囗囗<回车> 8、aabcd
9、【1】i<=7【2】j=i+8 10、【1】a[0]【2】a[3]
二、选择题
11、B 12、B 13、A 14、A
15、D
16、D
17、C 18、C 19、B 20、A 21、A 22、D 23、B 24、C 25、A
三、读程序填空
26、20 27、55,,A
28、【1】>【2】b!=0 29、5 10 9 30、t*M
31、【1】x>28.8.x<=10【2】x>-18.8.x<=2【3】y=-1 32、【1】j=1【2】k>=0&&k<=6 33、computerlanguage
四、编程题
34、double mypow(double x,int y)
{int i;double p; p=1.0;
for(i=1;i<=y;++i)p=p*x; return p; }
35、int isprime(int a) {int i;
for(i=2;i