您的当前位置:首页正文

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

来源:爱站旅游
导读2022年湖北工业大学公共课《C语言》科目期末试卷B(有答案)
2022年湖北工业大学公共课《C语言》科目期末试卷B(有答案)

一、填空题

1、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+=_______;b=a-_______;a-=_______;

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、假设变量a、b均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_______。

6、若x=0123,则表达式(5+(int)(x))&(~2)的值是_______。 7、执行下面程序段后,k的值是_______。 k=1;n=263;

do{k*=n%10;n/=10;} while(n);

8、若有定义:doublex[3][5];,则x数组中行下标的下限为_______,列下标的上限为_______。

9、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0);

puts(c);

10、以下程序的运行结果是_______。

#include int main()

{char s[]=\"ab\\'cdefg\\\",*p=s+1; printf(\"%c”,*(p++)); printf(\"%s\",p+2); return(0); }

二、选择题

11、下面4个选项中,是非法常量的选项是( )。

12、sizeof(float)是( )。

A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用 D.一个不合法的表达式 13、以下叙述不正确的是( )

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

D.在C程序中,注释说明只能位于一条语句的后面

14、以下叙述正确的是

A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句

D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误15、以下对二维数组a的正确说明是( )。

A.inta[3][];B.float a(3,4);C.double a[ ][4];D.float a(3)(16、设有以下程序:

#include int main()

{int a=201,b=012;

printf(\"%2d,%2d\\n\",a,B.; return 0; .}

程序执行后的输出结果是( )。

A.01,12 B.201,10 C.01,10 D.20,01 17、若有说明语句,则以下不正确的叙述是( )。

char a[]=\"It is mine\";char*p=\"It is mine\"; A.a+1表示的是字符t所在存储单元的地址 B.p指向另外的字符串时,字符串的长度不受限制 C.p变量中存放的地址值可以改变

4); D.a中只能存放10个字符

18、若用数组名作为函数调用的实参,则传递给形参的是( ) A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 19、以下描述中正确的是( )

A.while、do-while、for循环中的循环体语句都至少被执行一次 B.do-while循环中,while(表达式)后面的分号可以省略

C.while循环体中,一定要有能使while后面表达式的值变为“假”的操作 D.do-while 循环中,根据情况可以省略 while 20、设有程序段:

int k=10;while(k=0)k=k-1; 则下面描述中正确的是( )。

A.while循环执行10次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次

21、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是( )。

if(aif(belse x=6; else x=7;

A.1 B.2 C.3 D.6 22、下面程序段的运行结果是( )。

int a[6],i;

for(i=1;i<6;i++)

{a[i]=9*(i-2+4*(i>3))%5; printf(\"%3d\; }

A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0

23、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。请选择填空。

#include 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、折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个有序整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选择填空。

int binary(int a[10],int m) {int low=0,high=9,mid; while(low<=high) {mid=(low+high)/2; if(ma[mid])【】; else return(miD.; return(一1); }

A.high=mid-1 B.low=mid+1 C.high=mid+1 D.low=mid-1 25、下面程序的运行结果是( )。 #include int main() {inti,j,x=0;

for(i=0;i<2;i++) {x++;

for(j=0;j<=3;j++) {if(j%2)continue; x ++; } x++ }

printf(\"x=%d\\n\",x);

return0; }

A)x=4 B)x=8 C)x=6 D)x=12

三、读程序填空

26、以下printf语句中的负号的作用是_______,该程序的输出结果是_______。

#include int main() {int x=12;

double a=3.1415926; printf(\"%6d##\\n\",x); printf(\"%一6d##\\n\",x);

printf(\"%14.101f##\\n\",a); printf(\"%-14.101f##\\n\ return 0; }

27、以下程序的输出结果是_______。

#include int main() {int a=252;

printf(\"a=%oa=%#o\\n\",a,a); printf(\"a=%xa=%#x\\n\",a,a); return 0; }

28、以下程序的运行结果是_______。

#include int func(int a[][3] int main()

{int a[3][3]={1,3,5,7,9,11,13,15,17}; int sum; sum=func(a);

printf(\"\\nsum=%d\\n\",sum); return(0);

}

int func(int a[][3]) {int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) {a[i][j]=i+j;

if(i==j)sum=sum+a[i][j]; }

return(sum); }

29、以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,则返回此元素的下标;若仍未找到,则返回值一1。请填空。

#include

int search(int a[10],int m) {int i;for(i=0;i<=9;i++) if(_______) return(i); return(-1); int main() {int a[10],m,i,no;

no=search(_______); if(_______)

printf(\"\\nOK FOUND!%d\",no+1); else printf(\"\\nSorry Not Found!\"); return(0); }

30、下面程序段的运行结果是_______。 i=1;a=0;s=1;

do{a=a+s*i;s=-s;i++;}while(i<=10); printf(\"a=%d\",a);

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

#include int main()

{chars[]=\"ABCCDA\";int k;charc; for(k=1;(c=s[k])!='\\0';k++) {switch(c)

case'A':putchar('%');continue; case'B’:++k;break; default:putchar('*’);

case'C':putchar('&');continue;

}

putchar(‘#’); } return 0; }

32、以下程序的功能是:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。请填空。

#include int main() {char ch;

scanf(\"%c\",8&.ch); if(_______)ch=ch+32;

else if(ch>='a′8.&ch<='z′)_______; printf(\"%c\",ch); return 0;

}

33、以下程序的输出结果是_______。

#include int main()

{char*str[]={\"ENGLISH\",\"MATH\",\"MUSIC\",\"PHYSICS\",\"CHEMISTRY\;char**q; int num;

q=str;

for(num=1;num<5;num+=2) printf(\"%s\\n\",*(q++)); return(0); }

四、编程题

34、从键盘输入一个字符串,然后按照下面要求输出一个新字符串。新串是在原串中每两个字符之间插入一个空格,如原串为abcd,则新串为a□b□c□d(□代表空格)。要求在函数insert中完成新串的产生;并在函数中完成所有相应的输入和输出。

35、数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。试编程。

参考答案

一、填空题

1、【1】b【2】b【3】b 2、【1】.c【2】.obj【3】.exe 3、主函数(或main函数) 4、【1】12【2】4 5、9

6、0130或88或0x58 7、36

8、【1】0【2】4 9、aabcd 10、'bdefg'

二、选择题

11、A 12、B

13、D 14、C

15、C 16、B 17、D

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

三、读程序填空

26、【1】输出数据左对齐 【2】囗囗囗012##

12口囗囗囗## 囗囗3.141592600## 3.141592600囗囗## (注:答案中的囗代表空格) 27、a=374囗囗a=0374 a=fc囗囗a=0xfc

(注:答案中的囗代表空格) 28、sum=6

29、【1】a[i]==m【2】a,m【3】no>=0 30、a=-5

31、#&*&%

32、【1】ch>='A'&&.ch<='z'【2】ch=ch-32

33、ENGLISH MATH

四、编程题

34、#include #include void insert(char*p); int main() {char str[80];

printf(\"Input a string:\\n\"); gets(str); insert(str);

printf(\"Result is:%s\\n\",str); return(0); }

void insert(char*p) {int i;

for(i=strlen(p);i>0;i--)

{*(p+2*i)=*(p+i); *(p+2*i-1)='';

} }

35、#include int main()

{int a[10],b[10],i;

for(i=0;i<10;i++)scanf(\"%d\",&a[i]); for(i=1;i<10;i++)b[i]=a[i]/a[i-1]; for(i=1;i<10;i++) {printf(\"%3d\",b[i]); if(i%3==0)printf(\"\\n\"); }

return 0; }

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