C语⾔程序设计模拟试题1(附答案)《C语⾔程序设计》模拟试卷⼀
⼀、单项选择题(每题2分,共30分)
1、下列有关C语⾔的叙述中错误的是(B)。
A) C语句必须以分号结束
B) 任何⼀个C程序中有且只有⼀个主函数
C) 复合语句在语法上可被看作⼀条语句
D) C程序中对数据的任何操作都可由运算符实现
2、以下不能定义为⽤户标识符的是(C)。
A) MAIN B) _HJ C) 2ong D) LINE1
3、下列符号中⽤来表⽰C语⾔中的回车换⾏的是(B)。
A) \r B) \n C) \b D) \t
4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运⾏结果为(B)。
A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1
5、已知ch为字符型变量,下⾯表达式中正确的是(A)。
A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ”
6、以下能正确定义⼀维数组的是(C)。
A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”;
C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5};
7、以下语句中能正确定义变量并赋初值的是(A)。
A) char c=65; B) float f=f+1.1;
C) double x=12.3e3.6; D) int m=n=2.0;
8、在执⾏下列程序时输⼊:1357924,则程序的运⾏结果为(C)。
main( )
{ int x, y;
scanf(“%2d%2d”,&x,&y);
printf(“%2d”,x*y); }
A) 13 B) 1357 C) 74 D) 741
9、执⾏下列程序段后输出的结果是(C)。
x = 9;
while (x > 7)
{ printf(“*”); x- -; }
A) **** B) *** C) ** D) *
10、设char str1[10] = “ABCDE”, str2[10] = “xyz”;
则执⾏语句printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是(D)
A) 9 B) 8 C) 5 D) 3
11、若⽤数组名作为函数调⽤的实参,则传递给形参的是(A)
A) 数组的⾸地址 B) 数组第⼀个元素的值
C) 数组中全部元素的值 D) 数组元素的个数
12、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为( A )
A)void B)double C)int D)char
13、下⾯不能正确进⾏字符串赋值操作的语句是(B )
A) char s[5]={"ABCD"}; B) char s[5]; s="ABCD";
C) char *s;s="ABCDEF"; D) char *s="ABCD";
14、设有说明int s[5]={1,3,5,7,9}; int *p=s; 则下列表达式中值为3的是 (C )
A)++p B)++(*p) C) *(++p) D) *(p+=2)
15、下⾯程序的输出结果是(B)
int m=13;
int fun( int x, int y)
{ int m=3;
return( x*y-m); }
main( )
{ int a=7,b=5;
printf(“%d\n”, fun(a,b)/m); }
A) 1 B) 2 C) 3 D) 10
⼆、判断(每空1分,共10分)
编程语言有哪几种类
1、C语⾔有三种结构化程序设计⽅法,分别为顺序结构、选择结构和循环结构。(对)
2、C语⾔规定:标识符应由字母、下划线和数字组成,且可以是上述字符的任意组合,其长度也是任意的。(错)
3、数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。(错)
4、if语句有多种使⽤⽅法,其中if⼦句和else ⼦句也都可以单独使⽤。(错)
5、for语句作为循环控制语句时,从语法上将其括号内各个表达式都可缺省,但表达式内的分号却不可以却省。(对)
6、字符串是C语⾔中⼀种基本数据类型,字符串总是以‘\n’作为结束标志。(错)
7、在C语⾔中,程序的最⼩编译单位是源⽂件,最⼩功能单位是函数。(对)
8、在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。(对)
9、结构体与数组⼀样,属于构造类型数据,且在结构体中的各个成员的类型也可不同。(对)
10、在发⽣函数调⽤时,主~被调函数中的参数可以是简单变量,也可以是数组名,当采⽤数组名作
为参数时其数据传递⽅式为单向值传递。(对)
三、程序填空(每⼩题2分,共12分)
1、以下程序可求出所有⽔仙花数(指3位正整数中各位数字⽴⽅和等于该数本⾝,如
153=13+53+33),请填空。
main( )
{ int x, y ,z, m;
printf(“shui xian huan shu :\n”);
for(m=100;m<1000;m++)
{ x=m/100;
y= (m-(x*100))/10 (1) ;
z=m%10;
if( x*x*x+y*y*y+z*z*z==m(2) )
printf(“%6d”,m ) ; } }
2、输⼊⼀个字符,如果是⼤写字母,则把其变成⼩写字母;如果是⼩写字母,则变成⼤写字母;其它字符不变。请补充()内缺省的内容。
#include
main( )
{ char ch;
ch=getchar( );
if (___ch>=’A’&& ch<=’Z’(3)
____) { ch=ch+32; putchar(ch); }
else if(__ch>=’a’&ch<=’z’(4)___) { ch=ch-32; putchar(ch);} else putchar(ch);
}
3、以下程序使⽤递归法求n!, 请填空。
main( )
{ int n, y;
printf(“input a integer number”);
scanf(“%d”,&n);
y=fac(n)(5);
printf(“%d!= %6d”, n, y );
}
int fac(int n)
{ int f;
if(n<0) {printf(“n<0” data error); f=-1;}
else if(n==0||n==1) f=1;
else f=(6)n*fac(n-1) ;
return( f ); }
四、读程序写出结果(本⼤题共5道⼩题,每⼩题4分,共20分)
1、写出下⾯程序的执⾏结果 x=3,a=2,b=3
#include
main( )
{ int a,b,x;
x=(a=3,b=a--);
printf(“x=%d,a=%d,b=%d”,x,a,b); } 2、以下程序的运⾏结果是 -1
#include
main( )
{ int a = 2, b = 3, c ;
c = a ;
if ( a>b ) c = 1 ;
else if ( a == b ) c = 0 ;
else c = -1 ;
printf ( “%d\n”, c ) ; }
3、以下程序的运⾏结果是
#include
main()
{ int i,j,k;
for(i=1;i<4;i++)
{ for(j=1;j<4-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("%c",'A'+i-1);
printf("\n");} }
A
B B B
C C C C C
4、以下程序的运⾏结果是
main( )
{ int a[5][5],i, j ;
for( i=0;i<5;i++)
{ a[i][0] =1; a[i][i] =1; }
for( i=2; i<5; i++ )
for(j=1; j
a[i][j] =a[i-1][j-1] + a[i-1][j];
for(i=0; i<5; i++)
{ for( j=1; j<=i; j++)
printf(“%5d”,a[i][j]);
printf(“\n”);} }
1
2 1
3 3 1
4 6 4 1
5、以下程序运⾏后,如果从键盘上输⼊ABCDE<;回车>,则输出结果为 5 #include #include
int func(char str[])
{ int num =0;
while(*(str+num)!='\0') num++;
return(num);
}
main( )
{ char str[10],*p=str;
gets(p);
printf("%d\n",func(p)); }
五、编程题(本⼤题28分,第⼀题8分,第⼆题9分,第三题11分)
1、请编程实现下列分段函数的值:
(1-x) 1/ 2(x≤0)
y= 1-x (x≤1)
(1-x)2 (x>1)
#include
#include
Void main()
{
double x,y;
printf(“请输⼊实数x\n”);
scanf(“%lf”,&x);
if(x<=0)
y=sqrt(1-x);
else if(x<=1)
y=1-x;
else

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。