当前位置:文档之家› C试卷1

C试卷1

一、单选题:(40分)1.设有int x=11; 则表达式( 1/3 * ++ x ) 的值是A) 0 B) 3 C) 11 D) 122.定义int x=9 , y=4 , *p ; 执行p=&y ; y=x+++*p ; 后,则*p 的值为:(A)4 B)9 C)13 D)143. 当C只包含一个函数时,函数名必须是( ) .A) scanf B) printf C) main D) return4.与y=(x>0?1:x<0?-1:0);的功能相同的if语句是A) if (x>0) y=1; B) if(x)else if(x<0) y=-1; if(x>0) y=1;else y=0; else if(x<0) y=-1;else y=0;C) y=-1 D) y=0;if(x) if(x>=0)if(x>0) y=1; if(x>0) y=1;else if(x==0) y=0; else y=-1;else y=-1;5.阅读程序#include<stdio.h>main(){int i=4,a;a=i++;printf(“a=%d,i=%d”,a,i);}A) a=4,i=4 B) a=5,i=4 C) a=4,i=5 D) a=5,i=5 6.以下循环体的执行次数是main(){ int i, j;for(i=0, j=1; i<=j+1; i+=2, j--) printf("%d \n", i);}A) 3 B) 2 C) 1 D) 07.以下叙述中不正确的是A) 在不同的函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效8.设float m=2.3,n=2.8;int i=10; 表达式m+i%3*(int)(m+n)%2/8的值是( )A) 1.5 B) 0.5 C) 2.3 D) 2.89.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是A) k=*P1+*P2; B) p2=k; C) P1=P2; D) K=*P1 * (*P2);10. 假设struct student{ int num;float score;}stu_1;欲输入结构成员num的值,下列函数调用中正确的是( ).A) scanf(“%d”,stu_1.num); B) scanf(“%d”,&student.num);C) scanf(“%d”,&num); D) scanf(“%d”,&stu_1.num);11.定义int str[12][9] ; 关于str[9] 下面哪个说法是错误的:A)str[9] 与&str[9][0] 相等B)str[9] 与++*(str+8) 相等C)str[9] 与*(str+9) 相等D)str[9] 与(str+9) 相等12.下面关于字符数组str的输入语句中,正确的是( )A) scanf(“%c”,&str[0]); B) scanf(“%s”,&str);C) scanf(“%s”,str[0]); . D) scanf(“%c”,str[0]);13.函数mult 定义如下,若要求3*5*7*9 的值可调用().int mult(int x,int y){return (x*y);}A) mult(3,5,7,9) B) mult(mult(mult(9,7),3),5)C) mult((3,5),(7,9)) D) mult(mult(mult(3,5,7,9)))14.下述程序的输出结果是()#include<stdio.h>main(){ int a =2;a%=4-1;a+=a*=a-=a*=3;printf(“%d”,a);}A) 2, 0 B) 1,0 C)-1, 12 D)2, 1215.若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;则不能表示a数组元素的表达式是A) *p B) a[10] C) *a D) a[p-a]16.下列程序片段中不正确的字符串赋值或初始化方式是()A) char *str; B) char str[10];str=”string”; str=”string”;C) char str[7]={…s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟,‟\0‟};D)char str[]=”string”;17. 下述语言句中,()可以在字符串s1和s2相等是显示“ abcd“。

A) if(s1==s2) puts(“abcd”);B) if(!strcmp(s1,s2))puts(“abcd”);C) if(*s1==*s2)puts(“abcd”);D) if(strcmp(s1,s2))puts(“abcd”);18.以下叙述正确的是A) do-while语句构成的循环不能用其它语句构成的循环来代替。

B) do-while语句构成的循环只能用break语句退出。

C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。

19. 若已定义x为int 类型变量,则下面说明指针变量pb的语句()是正确的。

A) int pb=&x ; B) int *pb=x;C) int *pb=&x; D) *pb=*x;20. C语言的说明语句“ char *line[5];”的含义是指()。

B)line是一个指针,指向一个数组,数组的元素为字符型;C)A和B均不对,但它是C语言正确的语句;D)C语言不允许这样的说明语句。

二、分析下列程序的输出结果:(20分)1.程序如下:#include “stdio.h”int b[ ]={ 2, 4, 6, 8, 10, 12, 14 };main( ){int *pt;pt=b+4;printf(“%d\n”, *pt++ );printf(“%d\n”, (*pt)++, );printf(“%d\n”, *pt );printf(“%d,%d\n”, pt[-2], *(b+4));}该程序执行后的输出结果为:_______________________2. 程序如下:main(){ static int a[ ]={4,5,6};int s,i,*p;s=1;p=a;for(i=0;i<3;i++)s*=*(p+i);printf(“%d”,s);}该程序执行后的输出结果为:______________________3.阅读程序,。

#include<stdio.h>three( ){ extern int x,y;int a=25, b=10;y=a+b;return;}int x,y;main( ){ int a=9, b=5;x=a+b;y=a-b;three();printf(“%d”,%d,\n”,x,y);}该程序执行后的输出结果为:_______________________4.有以下程序#include "stdio.h"int abc(int u, int v);main (){ int a=24, b=16, c;c=abc(a, b);printf(“%d\n", c);}int abc(int u, int v){ int w;while(v){ w=u%v; u=v; v=w;}return u;}该程序执行后的输出结果为:_______________________三、程序完型填空:(20分)1.下面的程序的功能是从键盘输入一个字符串,按逆序显示出来,请填空:#include <string.h>{char str[100];scanf(“%s”, ); (1)inverse(str);printf(“%s\n”, str );}inverse(char str[ ]){ char t;int i, j;for(i=0,j=strlen(str);i< ; i++,j--) (2){ t=str[i];; (3)=t; (4)}}2.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。

#include <stdio.h>main(){ int i;for( i=0; ; i++ ) (5){if( i % 3 ) continue; (6)printf(" % ", i ); (7)}}3.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。

#include <stdio.h>#include (8){ char a[]="clanguage", t;int i, j, k;k=strlen( a );for( i=0; i<=k-2; i+=2 )for( j=i+2; j<=k; ) (9)if( ) (10){ t=a[i]; a[i]=a[j]; a[j]=t; }puts( a );printf("\n");}四、程序设计:(20分)201.求∑n!(即求1!+2!+3!+4!+……+20!)n=12.试编写函数fun(),该函数的功能是:判断m是否为素数,若是素数,返回值1;若不是素数,返回值0。

在主函数中输出该数是否是素数的判断。

m的值有主函数从键盘读入。

标准答案一、1.A;2. C;3. C;4. A;5. C;6. C;7. D;8. C;9. B;10. D;11. B;12. A;13. B;14. A;15. B;二、1.1012138,102.1203.15 353.8三、1.(1) str (2) i<strlen(str)/2 (3) str[i]=str[j] (4) str[j]2.(5) i<100 (6)||i%10!=6 (7) d3.(8) “string.h”(9) j+=2 (10) a[i]>a[j]四.a)#include”stdio.h”float fac(int n){ float f;if(n<0){printf(“n<0,dataerror!”);}else if(n==0||n==1)f=1;else f=fac(n-1)*n;return(f);}main(){int m=20, n;float sum=0;for(n=1;n<=20;n++)sum+=fac(n);printf(“1!+2!+…+20!=%f”,sum);}2.#include<stdio.h>#include<math.h>main(){ int fun(int a);int m,c;printf(“\nPlease enter a number:”);scanf(“%d”,&m);c=fun(m);if(c= =1)printf(“%d is a prime.” c);else}int fun(int a){ int k,i;k=sqrt(a);for( i=2; i<=k;i++)if(m%I= =0) break; if(i>k)return(1);else return(0);}。

相关主题