您好,欢迎来到世旅网。
搜索
您的当前位置:首页2022年连云港师范高等专科学校公共课《C语言》科目期末试卷B(有答案)

2022年连云港师范高等专科学校公共课《C语言》科目期末试卷B(有答案)

来源:世旅网
2022年连云港师范高等专科学校公共课《C语言》科目期末试卷

B(有答案)

一、填空题

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

2、函数swap(arr,n)可对arr数组从第1个元素到第n个元素分别进行两两元素交换。在运行调用函数中的如下语句后,a[o]和a[1]的值分别为_______,原因是_______。

a[0]=1;a[1]=2;swap(a,2);

3、函数swap(int x,inty)可完成对x和y值的交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。 a[o]=1;a[1]=2; swap(a[o],a[1]);

4、在C语言中,&运算符作为单目运算符时表示的是_______运算;作为双目运算符时表示的是_______运算。 5、请读程序段: int a=1,b=2;

if(a&b)printf(\"***\\n\"); else printf(\"$$ $\\n\"); 以上程序段的输出结果是_______。

6、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_______。 7、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。

char cl,c2;

scanf(\"%4c%4c\",&cl,8&c2);

8、若有定义floata[3][5];则a数组所含数组元素个数是_______,a数组所占的字节数是_______。 9、设有以下宏定义: #define WIDTH 80

#define LENGTH WIDTH+40

则执行赋值语句:v=LENGTH*20;(v为int型变量)后,v的值是_______。 10、若想输出b数组的10个元素,则下面存在错误的程序行是_______。(每个程序行前面的数字代表行号。)

1 int main()

2 {int b[10]={1,3,5,7,9,2,4,6,8,10},k; 3 for(k=0;k<10;k++,b++) 4 printf(\"%4d\",*b); 5 return0; 6 }

二、选择题

11、下面正确的字符常量是( ) A.\"c\" B. \"\\\\\" C. 'w' D. \"

12、设变量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

13、已有定义intx;floaty;且执行scanf(\"%3d%f”,&x,&y);语句,若从第一列开始输入数据12345口678<回车>,则 y的值为( )。(注:口表示空格) A.无定值 B.45.000000 C.678.000000 D.123.000000

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、以下叙述不正确的是( )

A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面 16、下面是对数组s的初始化,其中错误的语句是( )。 A.char s[5]={\"abc\; B.chars[5]={'a','b','c'}; C.chars[5]=\"\"; D.char s[5]=\"abcde\"; 17、以下for循环的执行次数是( )。

for(x=0,y=0;(y=123)&&(x<4);x++); A.是无限循环 B.循环次数不定 C.执行4次 D.执行3次 18、若用数组名作为函数调用的实参,则传递给形参的是( )

A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数

19、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )

int main() {int*p,*q,a,b; p=&a;

printf(\"input a:\"); scanf(\"%d\",*p); }

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址 C.*p表示的是指针变量p的值 D.*p只能用来说明p是一个指针变量 20、设有以下定义:

char*cc[2]={\"1234\",\"5678\");则正确的叙述是( )。

A.cc数组的两个元素中各自存放了字符串”1234”和\"5678”的首地址 B.cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 C.cc是指针变量,它指向含有两个数组元素的字符型一维数组 D.cc数组元素的值分别是1234和5678 21、以下程序的输出是( )。

#include int main() {int x=1; if(x=2)

printf(\"OK\");

else if(x<2)printf(\"%d\\n\",x);

else printf(\"Quit\"); return 0; }

A.OK B.Quit C.1 D.无输出结果

22、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择填空( )。

#include int main() {char c;

while((c=getchar())!=\\n') { if(c>='a'8.&.c<='z/) c=c-32+2: if(c>'Z)【】; }

printf(\"%c\",C.; return 0;

}

A.c='B' B.c='A' C.c-=26 D.c=c+26

23、下面程序的功能是计算1~10之间的奇数之和及偶数之和。请选择填空( )。

#include int main()

{int a=0,b,c=0,i;

for(i=0;i<=10;i+=2) {a+=i; b=i+1; c+=b;

printf(\"The sum of even=%d\\n\",A.; printf(\"The sun of odd=%d\\n\",【】): return 0;

}

A.c-10 B.c C.c-11 D.c-b

24、以下程序可选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空( )。

#include int sub(int k,int n) {int al,a2;a2= k/10; al=k-【】;

if((k%3==0&&a2==5)|l(k%3==0&&al==5))

{printf(\"%d\",k); n++; return n; }

else return-1; }

int main(){int i,k,n,m; for(k=10 ;k<=99;k++) {m=sub(k,n); if(m!=-1)n=m; }

printf(\"\\nn=%d\",n); return(O); }

A.a2*10 B.a2 C.a2/10 D.a2%10 25、下面程序段的运行结果是( )。

char a[7]=\"abcdef\"; char b[4]=\"ABC\"; strcpy(a,B.; printf(\"%c\",a[5]);

A.口 B.\\0 C.e D.f(其中口表示1个空格)

三、读程序填空

26、有以下程序:

#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<回车>,则输出结果是_______。 27、以下程序的运行结果是_______。 #include int main() {int m=177; printf(\"%o\\n\ return 0; }

28、已定义一个含有30个元素的数组s,函数favl的功能是按顺序分别赋予各元素从2开始的偶数,函数fav2则按顺序每5个元素求一个平均值,并将该值存放在数组w中。请填空。

#include #define SIZE30 void favl(float s[])

{int i;float k=2.0;for(i=0;ivoid fav2(float s[],float w[]) {float sum;int k,i; sum=0.0;

for(k=0,i=0;iint main()

{float s[SIZE],w[SIZE/5];

int i;favl(s);for(i=0;iprintf(\"\\n\"); fav2(s,w);

for(i=0;i29、函数del的作用是删除已按升序排列的数组a中的指定元素x。已有调用语句n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请填空。

int del(int a[],int n,int x) {int p,i;p=0;

while(x>=a[p]& &p30、下面程序用“顺序查找法”查找数组a中与x相等的第一个数。请填空。

#include int main()

{int a[8]={25,57,48,37,12,92,86,33},i,x; scanf(\"%d”,x); for(i=0;i<8;i++)

if(x==a[i])

·{printf(\"Found!The index is:%d\\n\",--i);_______;} if(_______)

printf(\"Can't found!\"); return 0; }

31、若运行时输入:4.4<回车>,则以下程序的运行结果是_______。

#include int main()

{float costPrice,sellingPrice; printf(\"Enter costPrice$:\"); scanf(\"%f\",&costPrice); if(costPrice>=5)

{sellingPrice=costPrice+costPrice*0.25; printf(\"Selling Price(0.25)$%6.2f\ } else

(sellingPrice=costPrice+costPrice*0.30; printf(\"Selling Price (0.30)$%6.2f', sellingPrice); return 0;

}

32、下面程序的运行结果是_______。 #include int main() {int i=5;

do

{switch(i%2)

{case 4:i--;break; case 6:i--;continue; } i--;i--;

printf(\"%d\",i); }while(i>0); return 0; }

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

#include #include int main() {int*p[5]; int*ptr,i:

if((ptr=(int*)malloc(100*sizeof(int)))!=NULL)

{p[0]=ptr;

for(i=1;i<5;i++) p[i]=p[i-1]+1;

for(i=0;i<10;i++)*ptr++=i; for(i=0;i<5;i++) printf(\"%3d\",*p[i]); }

return(0); }

四、编程题

34、编写程序实现功能:输入整数a和b,若a2+b2>100,则输出a2+b2百位以上数字,否则直接输出a2+b2的和

35、编写程序实现功能:读入两个运算数(datal和data2)及一个运算符(op),计算表达式datal op data2的值,其中op可以为十、一、*、/四个符号中的任一种(用switch语句实现)。

一、填空题

1、【1】scanf【2】printf 2、【1】a[0]=2a[1]=1

【2】因实参是地址,已对指定地址中的内容进行了交换。 【1】3、a[0]=1 a[1]=2

【2】单向值传递,不能返回交换后的值。 4、【1】取地址【2】按位与 5、$$$ 6、26

7、A囗囗囗B囗囗囗<回车> 8、【1】15【2】60 9、880 10、第3行

二、选择题

11、C 12、B 13、B 14、D

15、D

16、D 17、C 18、A 19、B 20、A 21、A 22、C 23、C 24、A 25、D

三、读程序填空

26、55,,A 27、261

28、【1】s[i]=k【2】sum=0 29、【1】p=p+1【2】a[i]=a[i+1] 30、【1】break【2】i==8 31、Selling Price(0.30)$5.72 32、3 1 -1 33、0 1 2 3 4

四、编程题

34、#include int main() {int a,b,x,y;

scanf(\"%d%d\",&a,&.b); x=a*a+b*b; if(x>100)

{y=x/100;printf(\"%d\",y);} else printf(\"%d\",a+b); return 0 }

35、#include #include int main()

{float datal,data2,data3; char op;

printf(\"\\ nType in your expression:\");

scanf(\"%f%c%f\

{ case'+': data3=datal+data2; break;

case'-': data3=datal-data2; break;

case'*': data3=datal* data2; break; case'/': i f(data2==0)

{printf(\"\\ nDivision by zero!\"); exit(1);} data3=datal/data2; break;

printf(\"This is %6.2f%c%6.2f=%6.2f\\n\ return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务