资源描述
一、选择题(40*1)
1 对用C语言编写的代码程序,以下叙述中正确的是(B)
A、可立即执行 B、是一个源程序
C、经过编译即可执行 D、经过编译解释才能执行
2 以下选项中正确的实型常量是(D)
A、0 B、 3. 1415 C、0.03*102 D、.32
3 C语言中不合法的字符串常量是(B)
A、"\121 " B、'y= ' C、"\n\n " D、"ABCD\x6d "
4 C语言中运算必须是整型的运算符是(B)
A、/ B、% C、* D、+
5 C语言中的简单数据类型有(C)
A、整型、实型、逻辑型 B、整型、字符型、逻辑型
C、整型、实型、字符型 D、整型、实型、逻辑型、字符型
6 以下选项中不合法的用户标识符是(D)
A、PRINTF B、file C、Main D、wb-1
7 以下非法的赋值语句是(C)
A、n=(i=2,++i) B、j++ C、++(i+1) D、x=i>0
8 C语言中不合法的常量是(D)
A、'\xff ' B、'\65 ' C、'& ' D、'\028 '
9 C语言中,字符(char)型数据在计算机内存中的存储形式是(D)
A、反码 B、补码 C、EBCDIC码 D、ASCII码
10 以下程序的输出结果是(D)
void main()
{ int x=10,y=3;printf("%d\n ",y=x/y);}
A、0 B、1 C、不确定的值 D、3
11 以下程序段的输出是(A)
int x=496;printf("*%-06d*\n ",x);
A、*496 * B、* 496* C、*000496* D、输出格式不合法
12 若变量已经正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是(D)
A、read(a,b,c); B、scanf("%d%d%d ",a,b,c);
C、scanf("%D%D%D ",&a,&b,&c) D、scanf("%d%d%d ",&a,&b,&c)
13 以下合法的C语言赋值语句是(D)
A、a=b=58 B、k=int(a+b); C、a=58,b=58 D、 - - i;
14 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是(A)
A、1 B、0 C、2 D、6
15 以下程序执行后输出结果是(B)
void main()
{ int i=10,j=1;printf("%d,%d\n ",i--,++j);}
A、9,2 B、10,2 C、9,1 D、10,1
16 设有语句char a= '\172 ';,则变量a(A)
A、包含一个字符 B、包含2个字符 C、包含个字符 D、说明不合法
17 若变量已经正确定义,要将a和b中的数据进行交换,下面不正确的语句是(C)
A、a=a+b,b=a-b,a=a-b; B、t=a;a=b;b=t
C、a=t;t=b;b=a; D、t=b;b=a;a=t;
18 若变量已经正确说明,要求用以下语句给c1赋值字符%,给c2赋值字符#,给a赋值2.0,给b赋值4.0,则正确的输入形式是(B)
scanf("%f%c%f%c ",&a,&c1,&b,&c2);
A、2.0 % 4.0 # B、2.0%4.0# C、2 % 4# D、2 % 4 #
19 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)
A、6.500000 B、7 C、5.500000 D、6.000000
20 以下程序执行后的输出结果是(D)
void main()
{int i=1,j=1,k=2;if((j++||k++)&& i++) printf("%d,%d,%d\n ",i,j,k);}
A、1,1,2 B、2,2,1 C、2,2,2 D、2,2,3
21 下列运算符中优先级最高的运算符是(A)
A、! B、% C、 -= D、&&
22 运行以下程序后,输出的结果是(A)
void main()
{ int k=-3;
if(k<=0)
printf("****\n ");
else
printf("&&&&\n ");
}
A、**** B、&&&& C、****&&&& D、有语法错误不能通过编译
23 以下程序段的输出结果是(B)
void main()
{ char x= 'A ';
x=(x> 'A ' && x< 'Z ')?(x+32):x; printf("%c\n ",x );
}
A、 a B、 A C、 Z D、 z
24 以下的程序执行后输出的结果是(A)
void main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n ",d);
else if((c-1>=d)==1)
printf("%d\n ",d+1);
else printf("%d\n ",d+2);
}
A、3 B、2 C、编译出错 D、4
25 若执行以下程序时从键盘上输入3和4(输入方式:3 4),则输出的结果是(C)
void main()
{ int a,b,s;
scanf("%d%d ",&a,&b);
s=a;
if(a<b) s=b;
s*=s;
printf("%d\n ",s);
}
A、14 B、18 C、16 D、20
26 设a、b和c都是int变量,且a=3,b=4,c=5,则以下的表达式中,值为0的表达式是(D)
A、a&&b B、a<=b C、a||b+c&&b-c D、 !((a<b)&&!c||1)
27 以下的程序运行结果是(D)
void main()
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf("%d\n ",c);
}
A、0 B、1 C、3 D、2
28 以下程序的输出结果是(C)
void main()
{ int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf("a=%d,b=%d\n ",a,b);
}
A、a=2,b=2 B、a=1,b=1 C、a=2,b=1 D、a=1,b=0
29 若x是int类型变量,以下程序段的输出结果是(D)
for(x=3;x<6;x++)
printf((x%2)?( "**%d "):( "##%d\n "),x);
A **3 B ##3 C ##3 D **3##4
##4 **4 **4##5 **5
**5 ##5
30 以下程序的输出结果是(A)
int n=10;
while(n>7)
{ n--;
printf("%d ",n);
}
A、987 B、1098 C、10987 D、9876
31 以下程序段的输出结果是(C)
int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4){m++;}
printf("%d\n ",m);
A、12 B、15 C、20 D、25
32 以下程序段的输出结果是(C)
int x=3;
do
{ printf("%3d ",x-=2);
} while(!(--x));
A、1 B、3 0 C、1 -2 D、死循环
33 以下的程序输出结果为(A)
void main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1:printf("%d",i);
case 2:printf("%d",i);
default: printf("%d",i);
}
}
A、011122 B、012 C、012020 D、120
34 以下程序的输出结果是(C)
# include<stdio.h>
void man()
{ int i;
for(i=1;i<5;i++)
{if(i%2) putchar('< ');
else continue;
putchar('> ');}
putchar('# ');
}
A、<><><># B、 ><><><# C、<><># D、><><#
35 若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是(B)
A、b=a B、strcpy(b,a) C、strcpy(a,b) D、strcat(b,a)
36 下面的程序输出结果是(A)
void main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));
}
A、3 B、4 C、1 D、2
37 以下对整型数组a的正确说法是(D)
A、int a(10); B、int n=10,a[n];
C、int n;sacnf("%d ",&n);int a[n] D、#define SIZE 10 int a[SIZE];
38 以下程序的输出结果是(B)
void main()
{ int i,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n ",sum);
}
A、15 B、不确定 C、16 D、0
39 以下程序的输出结果是(A)
void main()
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d, ",x[i][2-i]);
}
A、3,5,7 B、1,4,7 C、1,5,9 D、3,6,9
40 若fp是指向某文件的指针,且已经读到文件的末尾,则库函数feof(fp)的返回值是(A)
A、EOF B、-1 C、NULL D、非零值
二、填空题(20*1)
1、C语言中函数的组成部分包括 函数头 和 函数体 。
2、下列程序的功能判断一个输入整数是否是素数,若为素数输出1,否则输出0。
void main()
{ int i,x,y=1;
scanf("%d",&x);
for(i=2;i< x/2 ;i++)
if( x%i==0 ) {y=0;break;}
printf("%d\n",y);
}
3、下面的程序功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩。当输入为负数时结束输入,请填空:
void main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x;amin=x;
while( x>=0 )
{ if(x>amax) amax=x;
if( x<amin ) amin=x;
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
4、以下程序计算公式,请填空
long f(int n)
{ int i;long s;
s=1L;
for(i=1;i<=n;i++) s= s*i ;
return s;
}
void main()
{ long s;int k,n;
scanf("%d",&n);
s=0;
for(k=0;k<=n;k++)
s=s+ f(k) ;
printf("%d\n",s);
}
5、下面的函数功能是,根据以下公式返回满足精度eps要求的PI值
double pi(double eps)
{ double s=0.0,t=1.0;
int n;
for( n=1 ;t>eps;n++)
{ s+=t;
t=n*t/(2*n+1);
}
return (2.0* s )
}
6、由“/*”和“*/”之间的内容是 它的作用是 。
7、若x为double型变量,请写出运算x=3.2,x++后表达式的值 和变量的值 。
8、复合语句在语法上被认为是 。空语句的形式是 ; 。
9、若定义int a[3][4]={1,2,3,4,5,6,7,8,9};则a[1][3]= 8 a[2][3]= 0 。
10、模块化程序设计的设计原则是 和 。
三、判断题(10*1)
1、在C语言中无论是整数还是实数,只要在允许的范围内都能准确无误的表示(F)
2、正常执行一个名为“C001.c”的源程序后,在当前的目录不会产生C001.dat文件(T)
3、一个算法具有包括“零个或多个输出”在内的5个特性(F)
4、C语言的源程序不必通过编译就可以直接运行(F)
5、由结构化程序的三种基本结构组成的算法可以完成任何复杂的任务(T)
6、在C程序中,函数可能嵌套定义,也可以嵌套调用(F)
7、int i,*p=&i;是正确的C说明(T)
8、因为&&运算和||运算都是双目运算,所以它们优先级相同(F)
9、do-while语句构成的循环不能用其它语句构成的循环来代替(F)
10、数组名是一个常量(F)
四、程序填空题(2*5)
1、求两个非负数的最大公约数和最小公倍数
# include<stdio.h>
void main()
{
int m,n,r,p,gcd,lcm;
scanf("%d%d ",&m,&n);
if(m<n){p=m,m=n,n=p;}
p=m*n;
r=m%n;
while( )
{ m=n;n=r; ;
}
gcd= ;
lcm=p/ ;
printf("gcd=%d,lcm=%d\n ", );
}
2、输出正整数m和n(不包含m、n)之间的所有素数,要求每行输出8个数。
# include<math.h>
# include<stdio.h>
main()
{ int I,m,n,k=0,j;
double s;
printf("请输入正整数m,n(m<n):");
scanf("%d,%d ",&m,&n);
for(i=m+1;i<n;i++)
{
s= ;
for( ;j<s;j++)
if( ) break;
if( )
{ printf("%6d ",i);k++;
}
if( ) printf("\n ");
}
printf("\n\n ");
}
五、程序设计(2*10)
1 编写函数f(int n),用于计算如下公式的值:y=1/2+1/4+1/5+.....+1/2n
# include<stdio.h>
double fun(int n)
/******************** Begin *****************/
/******************** End *****************/
void main()
{
int n;
printf("Enter n: ");
scanf("%d",&n);
printf("\nThe result is %lf\n",fun(n));
}
2 编一个函数void convert(int a[][3]),求3*3矩阵的转置矩阵
# include<stdio.h>
# define N 3
void convert(int a[][N])
void main()
{
int i,j,array[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
array[i][j]=i*3+j+1;
printf("转置前:\n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%4d",array[i][j]);
printf("\n");
}
convert(array);
printf("转置后:\n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%4d",array[i][j]);
printf("\n");
}
}
void convert(int a[][N])
{
/**************** Begin ******************/
/**************** End ******************/
}
展开阅读全文