西南民大C语言试卷及答案

发布时间:2020-01-25 06:27:52   来源:文档文库   
字号:


一、请判断下列说法的是否正确:(10,每小题1)

1)一个C程序由多个函数组成,且必须有一个main )函数,要求main( )函数必须放到最前面。( x

2所有的变量在使用前都必须予以声明。( v

3Cdouble类型数据可以精确表示任何实数。( x

4a是一维数组名,数组元素a[1]还可以写作“*(a++)”。( x )

5break语句只能用于switch语句和循环控制语句中。 ( v )

6C语言中的数组下标从0开始,当引数组元素超过所定义的范围,将出来编译错误。( x

7)一个for循环语句,一定可以使用while语句来替换。( v

8)函数原型为“void sort(float a[], int n)”,调用该函数时,形参数组a被创建,实参数组各元素的值被复制到a数组各元素中。( x

(9) 一个结构类型的变量,在内存中占的字节数,为各成员数据类型所占内存的总和。( v

例如:

struct example

{ int I;

float f;

char s[20];

} x ;

(10)语句 y=*(p++); y=(*p)++; 是等价的 x

二、填空(15分,每小题1分)

(1) C语言的基本数据类型分为 型、     型、    型和

枚举型。

(2)A不等于BC语言中应使用表达式 来表示。

(3)写出数学表达式d3e2a53ebd268115860a0b8209c6c939.png 对应的C表达式 ___________ ___

(4)出判断字符变量ch是(’0’~’9’)数字符的C表达式 ________

(5) s=’d’,执行语句s=(s>=’a’&&s<=’z’)?s-32:s;后,字符变量s的值为 __d__

(6int b=5;执行赋值表达式a=5+(b+=6) 后,ab的值依次是_16___11_

(7) C语言程序中,如果对函数f的类型未加显说明,则函数f的隐含类型是_int___

8)定义语为char a[10] ="john\0ni";,语句printf("%d",strlen(a));输出结果是__4________

9所有的程序都可以用三种控制结构编写。这三种控制结构是

(10)要使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=67.8,用下面的语句输入:

scanf(“%5d%5d%c%c%f%f%*f%f”,&a,&b,&c1,&c2,&x,&y,&z);

键盘上输入数据的正确形式为:  10 20Aa 1.5 -3.75 2.2,67.8回车  

11)函数调用时,若形、实参数均为数组,则其传递方式是______________

12)表达式(5==5==5)的值为____0__________

13)设int x[]={1,2,3,4},y,*p=&x[1]; 则执行语句y=(*- -p)++;后变量y的值为__1_______

14‘a’“a”是有区别的,‘a’在内存中占_1___个字节,“a”在内存中占__2__个字节。

三、选择题(每题2分,共20分)

1)算法具有五个特性,以下选项中不属于算法特性的是( b

(A)有穷性  (B)简洁性 ( C)可行性  (D)确定性 

(2)以下选项中可作为C语言合法常量的是( b

(A)-80.  (B)-080  (C)-8e1.0  (D)-80.0e 

3)以下不能定义为用户标识符是  d  

(A) Main  (B)_0  (C) _int  (D)sizeof 

4在下列各程序段中,没有构成死循环的是( a )

Aint i=100 B int y=1;

while (1) for(; y<=10;y++)

{i=i%100+1; y- -;

if(i=100) break;

}

Cint k=1000; Dint s=36;

do{++k} while (k>=1000) ; while(s);- -s;

5)设变量定义为“int a[4]={1,3,7,9}, *p=a+2;”,则*p的值是( a )。

A7 B3 C4 D&a[0]+2

(6)下面程序段求两个数中的大数, d 不正确。

Amax =x>y?x:y; Bif (x>y) max = x; else max=y;

Cmax=x; Dif (y>=x ) max=y;

if (y>=x) max =y; max = x;

(7)给出以下定义:

char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'};

则正确的叙述为 b

(A)数组X和数组Y等价 (B) 数组X的长度大于数组Y的长度

(C)数组x和数组Y的长度相同 (D)数组X的长度小于数组Y的长度

(8))对于以下的变量定义,表达式___ ___是正确的。

struct node

{ char s[10];

int k;

} p[4];

Ap->k=2 Bp[0].s=“abc” Cp[0]->k=2 Dp->s=‘a’

(9)说明语句int (*p) ( ); 的含义是 c

A) p是一个指向一维数组的指针变量

B) p是指针变量,它指向一个整型数据的指针

C) p是一个指向函数的指针变量,该函数的返回值为整型数

D) p是一个指指针函数,该函数的返回值为指针值

10下列函数fun的功能是

fun(char *s)

word/media/image2.gif{

char *t=s;

while(*t++) ;

return (t-s-1);

}

A) 求两个串的长度差 B) 比较两个串的大小

C) 将串s复制到串t D) s所指向的字符串长度

四、程序填空题(10空,每空2分,共20分)

1.下程序是使用递减法求两自然数mn的最大公约数。

void main()

{ int m,n, div;

scanf(“%d,%d”,&m,&n);

div=m;

if (n1________;

while ( m%div !=0 || n%div !=0 )

_______2________;

printf ( “最大公约数=%d\n”,div);

}

(1) (A) div=0; Bdiv=n; C{div=m; m=n;n=div;} Dm=n;

(2) (A) div++; B++div; Cdiv--; Ddiv=m-n;

2. 下面的程序是打印所有的水仙花数。水仙花数是指一个3位数,其各位数字立方和等于该数本身。如:153=13+53+33

main()

{ int i,temp,bai,shi,ge;

printf("\n all the shuixianhuashu are:\n");

for(i=100;i<1000;i++) /*三位数的范围:100~999*/

{ bai=i/100, /*分别求出百位、十位、个位 上的数字*/

shi= ------(3)----- ;

ge=i%10;

temp=------(4)-------

if(----(5)-------) printf("%5d",i);

}

}

3 A i/10 %10 Bi%10/10

Ci-i\10*10 D(i-bai*100)%10

4 Abai^3+shi^3+ge^3 Bbai*100+shi*10+ge

Cbai*bai*bai+shi*shi*shi+ge*ge*ge; Dbai,shi,ge

5)(A i==temp B i!=temp Ci>=temp Di=temp

3.输入1 个正整数 n, 计算并输出 s 的前n项的和。

S = 1 -1/2 + 1/3 - 1/4 + 1/5 -1/6 + ……1/n

void main( )

{ int k, flag=1, n;

float s;

-----(6)----;

scanf("%d", &n);

for (k=1 ; k<=n; k++)

{ s=-----(7)----;

-----(8)----;

}

printf("sum=%f\n", s);

}

6 A n=0 B s=0

Ck=1 Dprintf(“Enter a number\n”)

7 A s+flag/n B s+1/k

Cs+1.0*flag/k Dflag/k

8 A n++ B flag=-flag Cflag++ Dk++;

4. 函数sort使用选择法将一维整型数组中个元素按值从大到小排序。

void sort(int a[],int n)

{ int i,j,k ,temp;

for(i=0;i

{ k=i;

for(j=i+1;j

if(-----(9)---- ) k=j;

temp=a[k]; -----(10)---- ;

}

}

9 A a[i]>a[j] B a[j]>a[j+1] Ca[k]>a[j] Da[k]

10)(A a[k]=a[i]; a[i]=temp Ba[i]=a[k]; a[k]=temp

Cflag++ Dk++;

五、程序阅读题(5小题,每题4分,共20分)

认真阅读程序,写出程序运行结果,注意输出数据的格式)

1)在执行以下程序时,如果从键盘上输入:ABC123def<回车>,则输出为

void main( )

{ char ch;

while((ch=getchar( ))!=’\n’)

{ if(ch>=’A’ && ch<=’Z’)ch=ch+32;

else if(ch>=’a’ && ch<’z’)ch=ch-32;

printf(“%c”ch);

}

printf(“\n”);

}

2、下列程序的输出结果是

main()

{ int a[ ]={1,2,3,4},i,j,s=0;

j=1;

for (i=3; i>=0;i--)

{ s=s+a[i]*j;

j=j*10;

}

printf(s=%d\n,s);

}

3、以下程序运行后的输出结果是


f(int a)

{ auto b=0;

static c=3;

b=b+1;

c=c+1;

return(a+b+c);

}

main()

{

int a=2,i;

for( i=0; i<3; i++)

printf(“%d ”, f(a));


4、以下程序运行后的输出结果是

#include "stdio.h"

fun(char *w)

{char t,*s1,*s2;

for (s1=w,s2=w+strlen(s1)-1;s1

{t=*s1;

*s1=*s2;

*s2=t;

}

}

main()

{char *p="12345";

fun(p);

puts(p);

}

5、以下程序的执行结果是        。

#include

main( )

{

char ch[2][5]={"6934","8254"},*p[2];

int i,j,s=0;

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

p[i]=ch[i];

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

for (j=0;p[i][j]>'0'&&p[i][j]<='9';j+=2)

s=10*s+p[i][j]-'0';

printf("%d\n",s);

}

六、程序设计题(2小题,共15分)

1.求出101000之内能同时被237整除的数,并输出。(7分)

2、编一程序,输入15个整数存入一维数组,再按逆序重新存放后输出(用函数完成逆置,形参用指针变量完成)。(8分)


一、判断题(每题1分,共10分)

二、填空题(每空1分,共15分)

1 整型、实型、字符型 2 0

3 (b-sqrt(b*b-4*a*c))/(2*a) (4) 结束本次循环

5 ‘D’ 6 16 ,11

7 整型(int) 8 4

9 顺序结构、选择结构、循环结构 10 10 0Aa 1.5 -3.75 ,67.8

11 地址传递 12 0

(13) 1 14 1

15 1 2

、单选题(每题2分,共20分)

四、程序填空题(每空2分,共20

、程序阅读题(每题4分,共20分)

六、程序设计题(2题,共15)参考答案

1main( )

{ int i;

for (i=10;i<=1000;i++)

if (i%3==0&&i%7==0&& i%2==0) printf(“%3d”i);

}

2void inv(int *x, int n)

{int *p,m,t,*i,*j;

m=(n-1)/2;

i=x;j=x+n-1;p=x+m;

for (;i<=p;i++,j--)

{t=*i;

*i=*j;

*j=t;

}

}

main()

{int i,arr[10],*p=arr;

printf("The original array:\n");

for (i=0;i<10;i++,p++)

scanf("%d",p);

printf("\n");

p=arr;

inv(p,10);

printf("The array has been inverted:\n");

for (p=arr;p

printf("%d ",*p);

printf("\n");

}

本文来源:https://www.2haoxitong.net/k/doc/8bf8f2cf30b765ce0508763231126edb6e1a76ce.html

《西南民大C语言试卷及答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式