搜索
您的当前位置:首页正文

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

来源:知库网
2022年湖南师范大学公共课《C语言》科目期末试卷B(有答案)

一、填空题

1、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。请填空。 _______;a=b;b=c;_______;

2、在C语言源程序中,一个变量代表【 】。

3、C语言的源程序必须通过【 】和【 】后,才能被计算机执行。 4、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_______。 5、若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是_______

6、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。 7、执行下面程序段后,k的值是_______。 k=1;n=263;

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

8、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。 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、设以下变量均为int类型,则值不等于7的表达式是( )。 A.(x=y=6,x+y,x+1) B.(x=y=6,x+y,y+1) C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1) 12、下面4个选项中,是合法整型常量的选项是( )。 A.160 B.-0xcdf C.-01 D.-0x48a -0xffff 01a 986 0122e5 011 0xe 066 80x 13、以下叙述不正确的是( )

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

D.在C程序中,注释说明只能位于一条语句的后面 14、C语言规定:在一个源程序中,main函数的位置( ) A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 15、下面程序段的运行结果是( )。

charc[]=\\\\\\\\\owil\\n\"; printf(\"%d\",strlen(C.);

A.14 B.3 C.9 D.字符串中有非法字符,输出值不确定

16、设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y和z的值是( )。

A.x=10 B.x=10 C.x=10 D.x=10

y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10

17、以下与库函数strcmp(char*s,char*t)的功能相等的程序段是( )。 A.int strcmpl(char*s,char*t)

{for(;*s++==*t+十;) if(*s=='\\0')return O; return(*s-*t); }

B.int strcmp2(char*s,char*t)

{for(;*s++==*t++;)

if(!*s) return O; return(*s-*t);

C.int strcmp3(char*s,char*t)

{for(;*t==*s;)

{if(!*t)return0;t++;s++;} return(*s-*t);· }

D.int strcmp4(char*s,char*t)

{for(;*s==*t;s++,t++) if(!*s) return 0; return(*t-*s); }

18、若用数组名作为函数调用的实参,则传递给形参的是(A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 19、设有以下程序段:

int x=0,s=0;

while(!x!=0)s+=++x; printf(\"%d”,s);则( )

) A.运行程序段后输出0 B.运行程序段后输出1 C.程序段中的控制表达式是非法的D.程序段执行无限次 20、若i为整型变量,则以下循环执行次数是( )。 for(i=2;i==0;)printf(\"%d\",i--); A.无限次 B.0次 C.1次 D.2次

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

if(aif(bA.1 B.2 C.3 D.6

22、下面程序的功能是将字符串s中所有的字符c删除。请选择填空( )。

#include int main() {char s[80];inti,j; gets(s);

for(i=j=0;s[i]!= '\\o';i++)

if(s[i]!='c)[ ]; s[j]='\\o'; puts(s); return 0; }

A)s[j++]=s[i] B)s[++j]=s[i] C)s[j]=s[];j++ D)s[j]=s[i] 23、定义如下变量和数组:

int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( )。

for(k=0;k<3;k++)printf(\"%d\",a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7

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、以下程序段的功能是计算一个整数的各位数字之和,请选择填空(int n,m=1;

scanf(\"%d\",&n);for(;nl=0;) {m【】; n/=10; }

printf(\"%d',m);

A.+=n%10 B.=n%10 C.+=n D.=n/10

三、读程序填空

26、若要求下列程序的输出结果为8.00,则[]中应填入的是_______。

#include int main() {int k=2,m=5;

)。

float s,x=1.2,y=[]; s=2/3+k*y/x+m/2; printf(\"%4.2f\\n\",s); return 0; }

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

#include int main() {charc='x';

printf(\"c:dec=%d,oct=%o,hex=%x,ASCIl=%c\\n\",c,c,c,c); return 0; }

28、若输入的值是-125,则以下程序的运行结果是_______。

#include #include void fun(int n) int main() {int n;

scanf(\"%d\",8.n); printf(\"%d=\",n); if(n<0)printf(\"-\");

n=abs(n); fun(n): return(0); }

void fun(int n) {int k,r;

for(k=2;k<=sqrt(n);k++) {r=n%k; while(r==0) {printf(\"%d\ n=n/k;

if(n>1) printf(\"*\"); r=n%k; }

if(n!=1)printf(\"%d\\n\ }

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

#include #include int fun(int n)

{int i,m=0;long s=1; for(i=1;i<=n;i++)s=s*n;

s=s%1000; do

{m=m+s%10; s=s/10; }while(s); return m; int main() {int d; d=fun(5);

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

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

#include int main() {int i,j;

for(i=4;i>=1;i--)

{for(j=1;j<=i;j++)putchar('#’); for(j=1;j<=4-i;j++)putchar('*'); putchar(\\n’); }

return 0; }

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

char x[]=\"the teacher\"; inti=0;

while(x[十+i]!='\\o')

if(x[i-1]==t)printf(\"%c\",[i]); int i=0;while(x[十+i]!='\\o') if(x[i-1]=='t')printf(\"%c\",x[]);

32、若运行以下程序时输入字符为Q,则程序的运行结果是_______。

#include 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; }

33、设有以下main函数,它所在的文件名为filel。

#include

#include

int main(int argc,char*argv[]) {char*str; int num=0;

if(argc<2)return(0); str=argv[1]; while(*str)

if(isalpha(*str++))num++; printf(\"\\nThe count is:%d.\\n\",num);

return(0);若输入的命令行参数为: file1 1234abc<回车> 则执行以上命令行后得到的输出结果是_______。

四、编程题

34、编写程序实现功能:根据表中的函数关系,对输入的每个x值,计算出相应的y值。

函数关系

x x<0 0-0.5x+20

35、以下程序的功能是应用弦截法求方程x3-5x2+16x-80=0的根,其中f函数可根据指定的x的值求出方程的值;函数xpoint可根据x1和x2求出f(x1)和f(x2)的连线与x轴的交点;函数root用来求区间(x1,x2)的实根。请编写root函数。

#include #include

float root(float xl,float ×2) {

}float f(float x)/*略*/ { }

float xpoint(float x1,floatx2)/*路*/ { }

int main()

{float xl,x2,fl,f2,x;

do

{printf(“input xl,x2:\\n\"); scanf(\"%f%,8&x1,8.x2);

printf(\"xl=%5.2f,x2=%5.2f\\n\",xl,x2); f1=f(x1); f2=f(×2); }while(fl*f2>=0); x=root(x1,x2);

printf(\"A root of equation is%8.4f\",x); return(0); }

参考答案

一、填空题

1、【1】t=a【2】c=t 2、内存中的一个存储单元 3、【1】编译【2】连接 4、26 5、-16 6、10000010 7、36

8、double a[M][M]={0}; 9、880 10、第3行

二、选择题

11、C 12、A

13、D 14、C

15、B 16、A 17、C

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

三、读程序填空

26、3.6

27、c:dec=120,oct=170,hex=78,ASCII=x 28、-125=-5*5*5 29、sum=8

(注:函数fun的功能是计算数值5°其个位、十位、百位上数字之和。) 30、#### ###* ##** #*** 31、he 32、Q

33、The count is:3.

四、编程题

34、#include int main() {int x;float y; scanf(\"%d\",&x); if(x<0)y=0;

else if(x>0&&x<=10)y=x; else if(x>10&&x<=20)y=10; else if(x>20&.8.x<40)y=-0.5*x+20; else y=-1;

if(y!=-1)printf(\"%f\",y); else printf(\"error\\n\"); return 0; }

35、float root(float x1,float x2) {int i;floatx,y,y1; y1=f(x1); do

{x=xpoint(x1,x2); y=f(x);

if(y*y1>0){y1=y;x1=x;} Else x2=x;

} while(fabs(y)>=0.0001); return(x); }

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

Top