C程序设计模拟试卷3
一.单项选择题
1.制C语言程序的步骤是( D )
A)编译、编辑、运行、连接B)编译、编辑、连接、运行
C)编辑、编译、运行、连接D)编辑、编译、连接、运行
2.C语言中函数开始和结束的标志是( A)
A)一对花括号B)一对方括号
C)一对圆括号 D) 一对双引号
3.设x为一个四位数的int型变量,能够取出该数的百位数字表达式的是( B )
A)x%1000 B)x%1000/100 C)x/1000 D)x/1000%100
4.设x为int型变量,下列选项中能够判定x值为偶数的表达式是( C)
A)x%2=0 B)x/2=0 C)x%2==0 D) x/2==0
5.设a、b、c、d均为int型变量,且初始值都为2,则执行语句“c=(b,a+2,d=6)”后,变量c的值为( D )
A)2 B) 3 C) 4 D) 6
6.下面关于switch语句和break语句的结论中,正确的是( B )
A)break语句是switch语句的一部分
B)在switch语句中,可以根据需要确定使用或不使用break语句
C)在switch语句中,必须使用break语句
D)break语句只能用在switch语句中
7.下列条件语句中,功能与其它语句不同的是( D )
A) if(a) printf("%d\n", x);else printf("%d\n", y);
B) if(a= =0) printf("%d\n", y);else printf("%d\n", x);
C) if(a!=0) printf("%d\n", x);else printf("%d\n", y);
D) if(a= =0) printf("%d\n", x);else printf("%d\n", y);
8.有以下程序:
#include
int main( )
{
int i=1,j=2,k=3;
if(i++ = = 1&&( ++ j = = 3 || k ++ = =3))
printf("% d % d % d\n",i,j,k);
}
程序运行后的输出结果是( D )
A)1 2 3 B)2 3 4 C)2 2 3D)2 3 3 9.若执行以下程序时从键盘输入5,则输出结果是( A )
#include
int main( )
{
int x;
scanf("%d ",&x);
if(x-- <5) printf("%d\n" ,x);
else printf("%d\n", --x);
}
A) 3 B) 4 C) 5 D) 6
10.下列程序段运行后x的值是( A)
#include
int main( )
{
int a = 0, b = 0,c = 0,x=35;
if(!a)x--;
else if(b)
if(c)x = 3;
else x = 4;
printf("%d\n",x);
}
A) 34 B) 4 C) 35 D) 3
11.下面的while循环,执行次数是( A)
i=4;
while( --i)
printf("%d,i);
A)3次 B)4次 C) 0次 D)无数次
12.下列语句中,可以输出26个大写英文字母的是( C )
A) for(a='A';a<='Z';printf("%c", ++a));
B) for(a='A';a<'Z';printf("%c", a++));
C) for(a='A';a<='Z';printf("%c", a++));
D) for(a='A';a<'Z';printf("%c", ++a));
13.以下对二维数组a不正确的定义是( C )
A) char a[10] [5];B) int a[2] [3];
C) int k=5,a[k] [k-2]; D) int a[3] [4]={{1},{5},{9}};
14.以下语句的输出结果是( A)
printf("%d\n",strlen("\t\"\065\xff\n"));
A) 5 B) 14 C) 8 D)输出项不合法,不能输出
15.以下叙述中不正确的是( D )
A) 在不同的函数中可以使用相同名字的变量
B) 函数中的形式参数是局部变量
C) 在一个函数内定义的变量只在本函数范围内有效
D) 在一个函数内的复合语句中定义的变量在本函数范围内有效
16.在C语言程序中以下正确的描述是( B )
A) 函数的定义可以嵌套,但函数的调用不可以嵌套
B) 函数的定义不可以嵌套,但函数的调用可以嵌套
C) 函数的定义和函数的调用均不可以嵌套
D) 函数的定义和函数的调用均可以嵌套
17.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为( A )
A) 静态变量B) 动态变量
C) 外部变量D) 内部变量
18.以下程序的输出结果是( C )
#include
int main( )
{int I,x[3][3]={9,8,7,6,5,4,3,2,1}, *p=&x[1][1];
for(I=0;I<4;I+ =2) printf ("%d",p[I]);
}
A)5 2 B)5 1 C)5 3D)9 7
19.不能把字符串“Hello!”赋给数组b的语句是( B )
A)char b[10]={'H','e','l','l','o','!'};
B)char b[10];b=“Hello!”;
C)char b[10];strcpy(b,“Hello!”);
D)char b[10]=“Hello!”
20.以下程序的输出结果是( D )
#include
int main( )
{ char a[10]={9,8,7,6,5,4,3,2,1,0}, *p=a+5;
printf("%d",*--p);
}
A)非法B)a[4]的地址C)3D)5
二、判断题
1、定义一个自动变量后若未初始化,其初值为一不可预测的数据。(√)
2、整型、实型、字符型数据之间不可以进行混合运算。(×)
3、在C语言中,实数是补码形式存放在存储单元中的。(×)
4、在定义字符型变量时既不加signed又不加unsigned,C语言是默认按signed 处理。(×)
5、在C语言的函数声明中形参名可以省写。(√)
6、外部变量的作用域是从一个程序文件的开头到本程序文件的末尾。(×)
7、实参数组名是指针常量,形参数组名是指针变量。(√)
8、不能对共用体变量名赋值。(√)
9、枚举元素可以用来作判断比较。(√)
10、赋值运算符是按照“自左而右”的结合顺序。(×)
三、填空题
1.设x和a为int型变量,则执行“x=a=6,4*a”之后,变量x的值为 6。
2.当x=2,y=8,z=5时,执行下面的if语句后,x、y、z的值分别
为: 5 、8 、8
#include
int main( )
{
int x=2,y=8,z=5;
if(x>z)
y=x;x=z;z=y;
printf("%d, %d, %d \n",x,y,z) ;
}
3.输入n个实数,输出其中的最大值、最小值。请将程序补充完整。
#include
int main( )
{ int n,i;
float num,nmax,nmin;
scanf("%d",&n);
scanf("%f",&num);
nmax= num;
nmin= num;
for(i=2;i<=n;i++)
{ scanf("%f",&num );
if(num >nmax)
nmax= num;
if( num nmin=num ; } printf("MAX = %f MIN = %f\n",nmax,nmin); } 3.输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,请将程序补充完整。 #include int main( ) { char ch; int s1,s2; s1=s2=0; while((ch=getchar( )) != '\n') { if(ch>='0' &&ch<='9') s1++; if(ch>='a' &&ch<='z' || ch>='A' &&ch<='Z') s2++; } printf("数字个数是:%d\n", s1 ); printf("字母个数是:%d\n", s2 ); 5.一个指针变量p和数组a的定义如下: int a[10], *p; 则p=&a[2]+3的含义是指针p指向数组a的第6个元素。 四、请给出下列程序的运行结果 1.下面程序的输出结果是: 0 #include int main( ) { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d \n",d); } 2.当输入abAB$时,下面程序的输出结果是:ABAB #include int main( ) { char c; while((c=getchar( ))! = '$') { if(c>='A' && c<='Z') putchar(c); else if(c>='a' && c<='z') putchar(c-32); } } 3.下面程序的输出结果是:1 3 7 15 #include int main( ) { int i,n[ ]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf("%d ",n[i]); } } 4. 下面程序的输出结果是:2 6 #include int x =3; void incre( ) { static int x=1; x*=x+1; printf("%d ",x); } int main( ) { int i; for(i=1;i } 5.下面程序的输出结果是:10 #include #define N 10 f (int s[],int n) { int k,p; for(p=0,k=p;p if(s[p]>s[k]) k=p; return(k); } int main( ) { int a[N]={1,2,3,4,5,6,7,8,9,10}; printf("%d\n",a[f (a,N)]); } 五、编程题 1.给出一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。(4_8) 2.写一个函数,使给定的一个3×3的二维整型数组行列互换。(7_4) 3. 输入3个字符串,按由小到大的顺序输出。要求用指针方法处理。 (8_2)