C语言程序设计试卷2(含答案)

更新时间:2024-03-05 07:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

O?绍兴文理学院2010学年01学期

?? 信计 专业 09 级《C语言程序设计》期末试卷 (编号9)

??

O??请把答案写在答题卷上

??(考试形式:闭卷 )

.O ?一、选择题(共30分,每小题2分)

? ?1、一个C程序的执行是从( )。

?A. 本程序的main函数开始,到main函数结束

O B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 ? C. 本程序的main函数开始,到本程序文件的最后一个函数结束 ? ?D. 本程序文件的第一个函数开始,到本程序main函数结束 :?O2、请读下面程序

号学?? #include main()

? ? { int *p1,*p2,*p; 线 int a=5, b=8; O p1=&a;p2=&b;

? ? if(a

名? 程序的输出结果为( )。 姓? A. 8,5,5,8 B. 5,8,8,5 C. 5,8,5,8 D. 8,5,8,5

? 装3、若x和y都是int型变量,且x=100,y=200,则语句printf(\的输出结果是( OA. 100 200 B. 100 C. 200 D.输出格式符不够,输出不确定 ? 4、请读程序片段: ? ? int x=2,y=2; ? y=x++ -1;

O :? printf(\

级? 上面程序片段的输出结果是( )。 班?? A. 3 2 B. 2 2 C. 3 1 D. 2 1 O?5、请读下面程序

? #include ? main() ?O { int i;

? int *int_ptr; ?? int_ptr=&i; ? *int_ptr=5;

O

)。

1

printf(\

程序的执行结果是( )。

A. i=0 B. i为不定值 C.程序有错误 D. i=5 6、已知下列函数定义

setw(int *b,int m,int n,int dat) { int k;

for(k=0;k

假设变量a的说明为 int a,求调用此函数的正确写法是( )。

A. setw(*a,5,8,1); B. setw(&a,5,8,1); C. setw((int *)a,5,8,1); D. setw(a,5,8,1); 7、请读程序: #include main( )

{int a,b,c,i,j,k,l;

a=3; b=2; c=0;i=a&&b; j=a&&c; k=b||c;l=c||0;

printf(\ printf(\ printf(\ }

上面程序的输出结果( )。

A. 101001 B. 001001 C. 111001 D. 101101 8、请读程序

#include #include main( )

{ float x,y,z;

scanf(\ z=x/y; while(1)

{ if (fabs(z>1.0))

{ x=y;y=z;z=x/y;} else break; }

printf(\ }

若运行时从键盘上输入3.6 2.4, 则输出结果是( )。 A. 1.500000 B. 1.600000 C. 2.000000 D. 2.400000 9、若有说明int a[3][4]={0};则下面正确的叙述是( )。

A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确

C. 数组a中各元素都可得到初值,但其值不一定为0 D. 数组a中各元素都可得到初值0 O main( )

10、请读下面程序 #include main()

{ static int a[10]={ 1,2,3,4,5,6,7,8,9,0}; int *p;

for (p=a;p<(a+10);p++) printf(\

程序的输出结果( )。 A. 1234567890 B. 0987654321 C.无确定值 D.输出数组a的地址 11、请读程序

#include #define abc(x) x*5 main( ) { int a=20;

printf(\ }

上面程序的输出结果是( )。

A. 150 B.100 C. 70 D.50 12、阅读下列程序

#include #include main()

{ char *a=\ a=a+8;

printf(\ }

程序的输出结果( )。

A.2 STUDY B. C LANGUAGE C. C D. LANGUAAGE 13、请读下面程序段 reverse (char *s) { int c,k; char *p; k=strlen(s);

for (p=s+k-1;s

若串s为\则调用reverse(buf)后,buf的值为( )。 A.pcs389%+-ac B. 5 C. ca-+?3scp D. 12 14、若x和y都是float型变量,x=3.6,y=5.8,则程序片段: printf(\的输出结果是( A. 3.6 B. 5.8 C. 3.6 5.8 D.输出格式符不够,输出不确定的值. 15、请读程序: #include

)。

2

{int a=3,b=2; int i,j; i=a>b; j=a == b;

printf(\

printf(\ 上面程序的输出结果是( )。 A. 1,0,1,0,0 B. 1,0,1,0,1 C. 1,0,0,0,1

D. 0,0,1,0,1

二、判断题(对的打“√”,错的打“×”。共10分 每空1分)

1、在C源程序中,/*与*/之间的注释信息也被编译,但对程序运行运果不发生影响。( ) 2、C语言中没有依存于硬件的I/O语句。( ) 3、在C语言中,字母的大小写不被区分。( ) 4、字符型数据和整数之间是不可以通用的。( ) 5、转义字符是一种常量。( )

6、空函数没有返回值,除此之外,有些函数可以带回一个或一个以上的返回值。( ) 7、函数不可以嵌套定义,但可以嵌套调用。( ) 8、静态局部变量只在本函数内可用。( )

9、宏替换就是字符替换,不能进行任何计算。( )

10、以数组名作函数参数时,数据传递的方向是“双向的”,因此我们可以说,在此情况下,函数带回的返回值可能不止一个。( )

三、问答题(共44分)

1、写出以下程序运行的结果。(4分)

#include main( ) { int i,x,y; i=x=y=0; do {++i;

if(i%2!=0) { x=x+i;i++;} y=y+i++;

}while(i<=7); printf(“x=%d,y=]\\n”,x,y); }

2、写出以下程序运行的结果。(5分) #include main( ) { int i,r;

char s1[80]=”bus”;

?????O???? .O ? ? ? ? O ? ? ? :?O号学?? ? ? 线 O ? ? ? 订 :O名?姓? ? 装 O ? ? ? ? O :?级?班??O????O????O char s2[80]=”book”;

O for(i=r=0;s1[i]!=?\\0?&& s2[i]!=?\\0?;i++) ?? if(s1[i]==s2[i]) i++; ? else { r=s1[i]-s2[i]; break;} ? printf(“%d”,r); ?O } ?

??3、下面程序的功能是输入三个整数,按从大到小的顺序进行输出,请填(2)空使程序完整。(5分) ? main( )

.O { int x,y,z,c;

? scanf(“%d %d %d”,&x,&y,&z);

? ? if( (1) ) { c=y; y=z; z=c;} ? if( (2) ) { c=x; x=z; z=c;} O if( (3) ) { c=x; x=y; y=c;} ? ? printf(“%d, %d, %d”, x, y, z); ? } :?O号

学??4、有十个字符串。下面程序的功能是在每个字符串中,找出最大字符按一一对应的顺序放入一维 ?数组a中,即第i个字符串中的最大字符放入a[i]中,输出每个字符串中的最大字符,请填(2)空 ?使程序完整。(5分) 线 #include O ?main( )

? { char s[10][20]; ? int a[10],i,j;

订 :O for(i=0;i<10;i++) gets(s[i]); 名? for(i=0;i<10;i++)

姓? { (1) ; ? 装 for(j=1;s[i][j]!=?\\0?;j++)

O if(a[i]

:?5、以下程序将输入的一个小写字母,将字母循环后移5个位置后输出。如‘a’变成‘f’,‘w’

级?班?变成‘b’。请填(2)空使程序完整。(5分) ? #include “stdio.h” O? main( ) ? { char c;

?? c=getchar( );

O if(c>=?a?&&c<=?u?) (1) ; ?? else

? if(c>=?v?&&c<=?z?) (2) ;

?O

putchar(c); }

6、写出以下程序运行的结果。(5分) #define MUL(z) (z)*(z) main()

{ printf(“%d\\n”,MUL(1+2)+3); }

7、写出以下程序运行的结果。(5分) 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); } main( )

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

printf(“\\nsum=%d\\n”,sum); }

8、以下程序能找出数组中的最大值和该值所在的元素下标,数组元素值从键盘输入。请选择(2)答案使程序完整。(5分) main( )

{ int x[10],*p1,*p2, k;

for(k=0; k<10;k++) scanf(“%d”,x+k); for(p1=x,p2=x;p1-x<10;p1++) if(*p1>*p2) p2= (1) ;

printf(“MAX=%d, INDEX=%d\\n”,*p2, (2) ); }

(1) A) p1 B) p2[p1] C) x[p2] D) x-p1 (2) A) p1-x B) p1 C) p2-x D) x-p2

9、下面程序的功能是输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一

个小写字母,则把它变成大写字母;其它字符不变,请填(2)空使程序完整。(5分) main( ) { char ch;

scanf(“%c”,&ch);

if( (1) ) ch=ch+32;

else if(ch>=?a?&&ch<=?z?) (2) ;

3

四、编程题(共16分,每题8分)

1、已知整型数组a、b中已经存放了由小到大的有序数,试编程把两个数中的数按由小到大的顺序归并到c数组中。

2、编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,即结果为cmue。请用指针完成。

四、编程题(共16分,每题8分)

1、#include void main()

{ int a[5]={1,45,56,78,98}; int b[5]={2,46,79,100,123},c[10],i=0,j=0,k=0; 2分 ???O?????O printf(“%c”,ch); } 1 ch>=’A’&&ch<=’Z’ 2 ch=ch-32; 参考答案及评分标准

一、选择题(共30分,每小题2分)

题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 A A C C D B A B D A C B C B B 二、判断题(对的打“√”,错的打“×”。共10分 每空1分)

1、(x) 2、 (√) 3、 (x) 4、(x) 5、 (√) 6、(x) 7、 (√) 8、 (√) 9、 (√) 10、 (x)

三、问答题(共44分)

1、(4分) x=1,y=20 2、(5分) 4 3、(5分)

1 y

1 a[i]=s[i][0]; 2 a[i]=s[i][j]; 5、(5分) 1 c=c+5; 2 c=c-21; 6、(5分) 12 7、(5分)sum=6 8、(5分) 1 A 2 C 9、(5分)

while(i<5&&j<5) { if(a[i]

2、#include main() { static char x[]=”computer”; char *p; for(p=x;p

4

5分 6分 7分 8分 1分 2分 7分 8分 ? .O ? ? ? ? O ? ? ? :?O号学?? ? ? 线 O ? ? ? 订 :O名?姓? ? 装 O ? ? ? ? O :?级?班??O????O????O

本文来源:https://www.bwwdw.com/article/vjoa.html

Top