C语言考试题库及答案(1),c语言考试题库及答案 2022年

C语言考试题库及答案(1),c语言考试题库及答案 2022年

1 .写入程序、输入的值、输出的值的函数。

#includestdio.h

int main ( ) )

{

int x,y;

scanf(\’%d \’,x );

if(x100||x0 ) )

y=-1;

ELSEif(x==0) ) ) )。

y=0;

else

y=1;

打印( % d ( n ),y );

返回0;

() ) ) ) )。

2 .输入三个实数a、b、c,并输出其中最小的数。

#includestdio.h

int main ( ) )

{

int a,min=32767,n=3;

wile(n—-) )。

{

scanf(\’%d \’,a );

是if(Amin )

min=a;

() ) ) ) )。

printf(%d(n ),min );

返回0;

() ) ) ) )。

3 .输入三角形的三条边a、b、c,判断a、b、c能否构成三角形,如果可以,计算面积。

#includestdio.h

#includemath.h

int main ( ) )

{

int a、b、c、s、d;

scanf(%d%d%d )、a、b和c );

if(aBCAcbbca ) )。

{

d=(abc )/2;

s=sqrt(d*(d-a ) ) d-b ) ) d-c );

printf(%d(n ),s );

() ) ) ) )。

else

printf (三边结构不变成三角形( n );

() ) ) ) )。

4 .输入4个整数,输出4个个数中的最大值、最小值。

#includestdio.h

int main ( ) )

{

int a,max=-32768,min=32767,n=4;

wile(n—-) )。

{

scanf(\’%d \’,a );

是if(amax )

max=a;

是if(Amin )

min=a;

() ) ) ) )。

printf(%d%d(n ),max,min );

返回0;

() ) ) ) )。

5 .要求根据成绩等级输出百分制分数段。 A等在90分以上,b等在80~89,c等在70~79,d等在60~69,e等在60分以下。 成绩等级通过键盘输入,输入a、b、c、d、e字符以外的等级时,将输出\” enter data error \”。

#includestdio.h

int main ( ) )

{

char a;

a=getchar (;

if(a==\’a \’ )

{

printf(90分以上( n );

() ) ) ) )。

elseif(a==\’b \’ ) ) )。

{

printf(80(89(n );

() ) ) ) )。

elseif(a==\’c \’ ) ) )。

{

printf(70(79(n );

() ) ) ) )。

elseif(a==\’d \’ )。

{

printf(60(69(n );

() ) ) ) )。

elseif(a==\’e \’ ) ) )。

{

printf(60分以下( n );

() ) ) ) )。

else

{

printf (企业数据错误( n ) );

() ) ) ) )。

返回0;

() ) ) ) )。

6 .有函数:

、程序、输入的值、输出的值。

#includestdio.h

int main ( ) )

{

int x,y;

scanf(\’%d \’,x );

是if(x1 )

{

y=x;

打印( % d ( n ),y );

() ) ) ) )。

ELSEif(x==10 ) ) )。

{

y=3*x-11;

打印( % d ( n ),y );

() ) ) ) )。

else

{

y=2*x-1;

打印( % d ( n ),y );

() ) ) ) )。

返回0;

() ) ) ) )。

7 .输入成绩,并要求输出成绩等级a、b、c、d、e或error。 90分以上分为‘a’,80~89分为‘b’,70~79分为‘c’,60~69分为‘d’,0~60分为‘e’。 输入成绩不足0分和100分以上时输出error。

#includestdio.h

int main ( ) )

{

int a;

scanf(\’%d \’,a );

if(a100 )。

printf (错误( n ) );

else

{

if(a90 ) )。

printf(a(n );

ELSEif(A80 )。

printf(b(n ) );

ELSEif(A70 ) )。

printf(c(n ) );

ELSEif(A60 )。

printf(d(n );

else

printf(e(n );

() ) ) ) )。

返回0;

() ) ) ) )。

8 .求一次二次方程ax2 bx c=0的解。

#includestdio.h

#includemath.h

int main ( ) )

{

double a、b、c、d、e、x1、x2、I;

scanf(\’%lf%lf%lf )、a、b、c );

d=b*b-4*a*c;

e=-b/(2*a );

if(D1E-6 ) )。

{

x1=esqrt(d )/)2*a );

x2=e-sqrt(d )/)2*a );

printf(\’%.2lf ).2lf )、x1、x2 );

() ) ) ) )。

elseif(d==1e-6 ) ) )。

{

x1=x2=e;

printf(\’%.2lf ).2lf )、x1、x2 );

() ) ) ) )。

else

{

printf(\’%.2lf ).2lf-%.2lfi(n )、e、sqrt(-d )/(2* a )、e、sqrt )-d )/(2* a );

() ) ) ) )。

返回0;

() ) ) ) )。

9 .输入某年某月的某一天,判断这一天是该年的第几天?

#includestdio.h

int main ( ) )

{

int i,n=0,year,math,day,s [ 12 ]={ 31,28,31,30,30,31,31,31,31,31,31,31,31,30 }

Sanf(\’%d%d%d )、year、math和day );

if ( ) year%4==0year0!=0)||(year@0==0) )

s[1]=29;

for(I=0; imath-1; I )

n=n s[i];

n=n day;

打印( % d ( n ),n );

返回0;

() ) ) ) )。

10 .公司规定,男职工退休到60岁,女职工退休到55岁。 输入员工的性别和年龄,以创建确定员工是“已退休”还是“在职”的程序。 请参阅。

#includestdio.h

int main ( ) )

{

char a;

int b;

a=getchar (;

scanf(\’%d \’,b );

if(a==\’m \’ ) )。

{

if(b=60 ) )。

printf (已退休( n );

else

printf (在职( n );

() ) ) ) )。

elseif(a==\’f \’ )。

{

if(b=55 ) )。

printf (已退休( n );

else

printf (在职( n );

() ) ) ) )。

返回0;

() ) ) ) )。

11 .输入数字,判断该数字是否为素数。

#includestdio.h

int main ( ) )

{

int a,b;

scanf(\’%d \’,a );

for(b=2; ba; b )

if(a%b==0) break;

if(ba ) printf(\’%disnotaprimenumber.\\n”,a );

else printf ( \’ % disa prime number.\\ n \’,a );

返回0;

() ) ) ) )。

12 .编程实现求解s=1*2 2*3 3*4 … 20*21,并输出结果。

#includestdio.h

int main ( ) )

{

int a,s=0;

for(a=1; a=20; a )

s=sa*(a1;

printf(%d(n ),s );

返回0;

() ) ) ) )。

13 .求Fibonacci数列的前20个,每行输出5个。

#includestdio.h

int main ( ) )

{

int f1=1,f2=1,a,f3;

printf(%d%d )、f1、f2 );

for(a=3; a=20; a )

{

f3=f1 f2;

printf(\’%d \’,f3 );

if(a%5==0) ) )

打印( ( n );

f1=f2;

f2=f3;

() ) ) ) )。

返回0;

() ) ) ) )。

求14.13! 5!十九! 来删除它。

#includestdio.h

int main ( ) )

{

双精度s,c=0;

int a,b;

for(a=1; a=19; a=2)

{

s=1;

for(b=1; b=a; b )

s=s*b;

c=c s;

() ) ) ) )。

printf(%lf(n ),c );

返回0;

() ) ) ) )。

15 .有求前30项之和的分数序列。

#includestdio.h

int main ( ) )

{

int i;

double a=1,b=2,s=0,t;

for(I=1; i=30; I )

{

s=s a/b;

t=b;

b=a b;

a=t;

() ) ) ) )。

printf(%lf(n ),s );

返回0;

() ) ) ) )。

16.133233……编写计算并输出310值的程序。

#includestdio.h

#includemath.h

int main ( ) )

{

int a=0,I;

for(I=0; i=10; I )

a=apow(3,I );

printf(%d(n ),a );

返回0;

() ) ) ) )。

17 .从键盘上任意输入4位x,用程序将x的各位数字相加计算。 例如,如果输入1234,则千位数为1,百位数为2,十位数为3,个位数为4,计算1 2 3 4=10并输出10。

#includestdio.h

int main ( ) )

{

int m,n,s=0;

scanf(\’%d \’,m );

while(m!=0)

{

n=m;

m=m/10;

s=s n;

() ) ) ) )。

printf(%d(n ),s );

返回0;

() ) ) ) )。

18 .输入八进制数,并将其转换为十进制数。

#includestdio.h

#includemath.h

int main ( ) )

{

int a,b=0,m=0;

scanf(\’%d \’,a );

while(a!=0)

{

m=m(a ) * ) int ) pow ) 8,b );

b;

a=a/10;

() ) ) ) )。

printf(%d(n ),m );

返回0;

() ) ) ) )。

19 .输入两个正整数m和n,求出其最大公约数和最小公倍数。

#includestdio.h

int main ( ) )

{

int a、b、c、d、p;

scanf(\’%d%d ),a,b );

是if(ab )

{

c=a;

a=b;

b=c;

() ) ) ) )。

p=a*b;

while(b!=0)

{

d=a%b;

a=b;

b=d;

() ) ) ) )。

printf(%d%d(n ),a,p/a );

返回0;

() ) ) ) )。

20 .一球从100米高度自由落下,每次落地后反弹至原来高度的一半; 进一步坠落,第10次落地时,要求总共通过多少米? 第十个篮板球有多高?

#includestdio.h

int main ( ) )

{

int i;

float h=50,a=100;

for(I=2; i=10; I )

{

a=a 2*h;

h=h/2;

() ) ) ) )。

printf(%f%f(n ),a,h );

返回0;

() ) ) ) )。

21 )输出倒三角形式的9*9口战术表,要求循环实现。

9 *1=99 *2=189*3=279*4=36……9 *9=81

8*1=8 8*2=16 8*3=24 8*4=32 8*8=6

1*1=1

#includestdio.h

int main ( ) )

{

int a、b、s;

for(a=9; a0; a—-)

{

for(b=1; b=a; b )

{

s=a*b;

printf(%d*%d=%d )、a、b、s );

() ) ) ) )。

打印( ( n );

() ) ) ) )。

() ) ) ) )。

22 .输出菱形图案。

#includestdio.h

int main ( ) )

{

int a、b、c;

for(a=1; a=5; a )

{

for(b=1; b=5-a; b )

printf ( \’ );

for(c=1; c=2*a-1; c )

打印( * );

打印( ( n );

() ) ) ) )。

for(a=1; a=4; a )

{

for(b=1; b=a; b )

printf ( \’ );

for(c=1; c=9-2*a; c )

打印( * );

打印( ( n );

() ) ) ) )。

返回0;

() ) ) ) )。

23 .如果一个数正好等于该因子之和,则该数称为“完全数”。 例如,6的因子为1、2、3,但由于6=1、2、3,因此6是完全数。 编写程序以找到500内的所有完全数,并使用以下格式输出系数:

6 itsfactorsare 1、2和3

#includestdio.h

int main ( ) )

{

int a、b、c;

for(a=2; a500; a )

{

b=0;

for(c=1; ca; c )

if ( ) a%c )==0) b=c;

if(b==a ) )。

{

printf(\’%d,its factors are \’,a );

for(c=1; ca; c )

if(a%c==0) printf )、c );

打印( ( n );

() ) ) ) )。

() ) ) ) )。

返回0;

() ) ) ) )。

24 .编程输出以下形式的九九乘法表

1 2 3 4 5 6 7 8 9

————

1

2 4

3 6 9

……

8 16 24 32 40 48 56 64

9 18 27 36 45 54 63 72 81

#includestdio.h

int main ( ) )

{

int a、b、s;

for(a=1; a=9; a )

{

for(b=1; b=a; b )

{

s=a*b;

printf(\’%d”,s );

() ) ) ) )。

打印( ( n );

() ) ) ) )。

() ) ) ) )。

25 .一个偶数总是被表示为两个素数之和。 要求:输入偶数,表示为两个素数之和,直到输入的数变为0。

#includestdio.h

int main ( ) )

{

int i,j,n,k;

printf ( \’请输入偶数( n );

scanf(\’%d \’,n );

if(n!=0)

{

for(I=2; i=n/2; I )

{

for(j=2; ji; j )

if(I%j==0) ) ) ) ) ) )。

黑;

if(j==I ) )。

{

for(k=2; kn-i; k )

if ( ) n-I ) %k==0) ) ) ) ) ) ) if ) ) ) n ) ) n ) n ) n ) n ) n ) n ) n ) ) n ) n ) n ) ) ) n ) n ) n ) n ) n ) n ) n ) n )0) n )0) n )0)0)0) n )0)0)0) )

黑;

if(k==) n-I ) )

{

printf(%d%d(n ),I,k );

() ) ) ) )。

() ) ) ) )。

() ) ) ) )。

() ) ) ) )。

返回0;

() ) ) ) )。

26 .输入10个整数,用鼓泡法将这10个进行排序,按照从小到大的顺序输出到画面。

#includestdio.h

int main ( ) )

{

int a、b、c、s[10];

for(a=0; a10; a )

scanf(\’%d \’,s[a] );

打印( ( n );

for(b=0; b9; b )

for(a=0; a9-b; a )

if(s(a ) s ( a1 ) ) ) ) )。

{

c=s[a];

s[a]=s[a 1];

s[a 1]=c;

() ) ) ) )。

for(a=0; a10; a )

printf(\’%d \’,s[a] );

打印( ( n );

返回0;

() ) ) ) )。

27 .输入10个整数,按选择方法对这10个进行排序,按从大到小顺序输出到画面。

#includestdio.h

int main ( ) )

{

int a[10],I,j,t,min;

for(I=0; i10; I )

scanf(\’%d \’,a[i] );

for(I=0; i10; I )

{

min=i;

for(j=I1; j=10; j )

if(a[min]a[j] ) min=j;

t=a[i];

a[i]=a[min];

a[min]=t;

() ) ) ) )。

for(I=0; i10; I )

printf(\’%d \’,a[i] );

打印( ( n );

返回0;

() ) ) ) )。

28 .按相反顺序重新存储数组中的值。 例如,将原始顺序更改为8、6、5、4、1,然后变为1、4、5、6、8。

#includestdio.h

int main ( ) )

{

int i;

char a[5];

scanf(\’%s \’,a );

for(I=4; i=0; I—-)

printf(\’%c \’,a[i] );

打印( ( n );

返回0;

() ) ) ) )。

29 .给定6位以下的正整数,求出它是几位分别输出各位的数字按相反顺序输出各位的数字。 例如,原始数量为158,需要输出851。

#includestdio.h

#includestring.h

int main ( ) )

{

int m,I,j;

char a[50];

scanf(\’%s \’,a );

m=Strlen(a );

printf(%d(n ),m );

for(I=0; im; I )

{

printf(\’%c \’,a[i] );

() ) ) ) )。

打印( ( n );

for(j=m-1; j=0; j—-)

{

printf(\’%c \’,a[j] );

() ) ) ) )。

打印( ( n );

返回0;

() ) ) ) )。

30 .用筛选法求出100以内的素数。

#includestdio.h

#includemath.h

int main ( ) )

{

int a[101],I,j,n;

for(I=0; i100; I )

a[i]=i;

a[0]=1;

for(I=2; Isqrt(100; I )

for(j=I1; j=100; j )

{

if(a[I]!=0a[j]!=0)

if(a(j ) ) a ) I )==0) ) ) ) ) )

a[j]=0;

() ) ) ) )。

for(I=2,n=0; i100; I )

{

if(a[I]!=0)

printf(\’%d \’,a[i] );

() ) ) ) )。

打印( ( n );

返回0;

() ) ) ) )。

31 .编程实现:输入任意5位以下的十进制整数,取出该数中所有奇数的数字,按原顺序构成新数。

#includestdio.h

#includestring.h

int main ( ) )

{

int i,b;

char a[10];

gets(a );

b=Strlen(a );

for(I=0; ib; I )

{

if ( ) int ) a[i]%2!=0)

printf(\’%c \’,a[i] );

() ) ) ) )。

puts ( \’ );

() ) ) ) )。

32 .有一个按升序排列的数组,输入数字后,需要按照原排序规律插入数组中。

#includestdio.h

int main ( ) )

{

int i,j,s;

chara [ 10 ]={ 1,2,4,9,32,41,64,88,91,98 };

scanf(\’%d \’,s );

for(I=0; i10; I )

{

if(sa[I] ) )。

printf(\’%d \’,a[i] );

else break;

() ) ) ) )。

printf(\’%d”,s );

for(j=I; j )

{

printf(\’%d \’,a[j] );

if(a ) j )==a(9) ) break;

() ) ) ) )。

打印( ( n );

返回0;

() ) ) ) )。

33 .调换一个二维排列a的行和列的要素,保存在另一个二维排列b中。

#includestdio.h

int main ( ) )

{

int i,j,a [2] [3]={ 1,2,3 }、{ 4,5,6 }、b[3][2];

for(I=0; i2; I )

{

for(j=0; j3; j )

{

printf ( )、a ) I )、j );

b[j][i]=a[i][j];

() ) ) ) )。

打印( ( n );

() ) ) ) )。

for(I=0; i3; I )

{

for(j=0; j2; j )

printf ( )、b ) I )、j );

打印( ( n );

() ) ) ) )。

返回0;

}在}34.3*4的二维数组a中,求出其中值最大的要素的值,要求程序输出该位置的行号和列号。

#includestdio.h

int main ( ) )

{

int i,j,a=0,b=0,s [3] [4]={ 1,2,3,4,5,6,7,8,9,10,11,12 },max;

max=s[0][0];

for(I=0; i3; I )

for(j=0; j4; j )

if(s(I ) ( j ) max ) ) ) ) ) ) ) ) ) )。

{

max=s[i][j];

a=i;

b=j;

() ) ) ) )。

printf(%d%d%d(n ),max,a,j );

返回0;

() ) ) ) )。

35 .找到在该位置的元素在该行中最大、在该列中最小的二维阵列中的鞍点。

#includestdio.h

int main ( ) )

{

inta [3] [4]={ 1,13,9,10,3,2,7,6,4,11,8,15 }、I,j,max,k,b,c;

for(I=0; i3; I )

{

max=a[i][0];

for(j=0; j4; j )

{

if(MAXA(I ) ( j ) ) ) ) ) )。

{

max=a[i][j];

b=j;

() ) ) ) )。

() ) ) ) )。

c=1;

for(k=0; k3; k )

{

if(a(k ) ) b ) max ) )。

{ c=0; 黑; () ) ) ) )。

() ) ) ) )。

if(c==1) )。

{

printf ( )鞍点是%d(n ),a[i][j-1];

黑;

() ) ) ) )。

() ) ) ) )。

输入6536.1行的文字,分别计数文字、数字和其他文字的个数。

#includestdio.h

int main ( ) )

{

char d;

int a=0,b=0,c=0;

while((d=getchar ) )!=\’\\n \’ )

{

if(d=\’a\’d=\’z\’|d=\’a\’d=\’z \’ )

a;

elseif(d=\’0\’d=\’9\’ )

b;

else

C;

() ) ) ) )。

printf(%d%d%d(n ),a,b,c );

返回0;

() ) ) ) )。

37按相反顺序排列输入的字符串。 例如,输入ABCD,输出DCBA。

#includestdio.h

#includestring.h

int main ( ) )

{

int b,I;

char a[100];

gets(a );

b=Strlen(a );

for(I=B-1; i=0; I—-)

{

printf(\’%c \’,a[i] );

() ) ) ) )。

打印( ( n );

返回0;

() ) ) ) )。

38 .有三个字符串,要求找到其中最大的。

#includestdio.h

#includestring.h

int main ( ) )

{

int t;

char a[50]、b[50]、c[50]、d[50];

gets(a );

gets(b );

gets(c );

t=strcmp(a,b );

if(t==1) )。

strcpy(d,a );

else

strcpy(d,b );

t=strcmp(d,c );

if(t==1) )。

printf(%s(n ),d );

else

printf(%s(n ),c );

返回0;

}请输入}39.1行文字,计算其中有多少个单词,并使用空格分隔单词。

#includestdio.h

int main ( ) )

{

char a;

int b=1;

a=getchar (;

while((a=getchar ) )!=\’\\n \’ )

{

if(a==\’ \’ )

b;

() ) ) ) )。

printf(%d(n ),b );

返回0;

() ) ) ) )。

40 .编写连接两个字符串的程序以避免使用strcat函数。

#includestdio.h

#includestring.h

int main ( ) )

{

char a[100],b[100];

gets(a );

gets(b );

printf(%s%s(n ),a,b );

返回0;

}41 .共有4行文章,每行20个字符。 必须分别计算其中的英文大写字母、小写字母、数字、空格和其他字符的个数。

#includestdio.h

int main ( ) )

{

int x,s,k,other,I,j,d=0;

char a[20];

for(I=0; i4; I )

{

gets(a );

d=x=s=k=other=0;

j=0;

while(a[j]!=\’\\0 \’ )

{

if(a(j )=\’a\’a ) j )=\’z \’ )

d;

elseif(a(j )=\’a\’a ) j )=\’z ) )

x;

elseif(a[j]=\’0\’a[j]=\’9\’ )

s;

elseif(a[j]==\’ \’ )

k;

else other;

j;

() ) ) ) )。

printf (第%d行\\n大写=%d\\n小写=%d\\n数字=%d\\n空格=%d\\n \’,i 1,d,x,s,k,other );

() ) ) ) )。

() ) ) ) )。

42 .编程实现:输入任意字符串,依次取出字符串中所有数字字符生成新字符串,替换为原字符串输出。

#includestdio.h

#includestring.h

int main ( ) )

{

char a[100];

int i;

gets(a );

for(I=0; I=Strlen(a ); I )

{

if(a(I )=\’0) a ) I )=\’9) ) ) ) ) ) )。

printf(\’%c \’,a[i] );

() ) ) ) )。

打印( ( n );

返回0;

} 43 .编写不使用strcpy函数将字符s2的所有字符复制到字符数组s1的程序。

#includestdio.h

#includestring.h

int main ( ) )

{

char s1[80],s2[80];

int i;

scanf(\’%s \’,s2 );

for(I=0; I=Strlen(S2; I )

s1[i]=s2[i];

printf(s1:%s(n ),S1 );

返回0;

() ) ) ) )。

44 .有电文。 按照以下规则翻译成了密码。

AZ az

BY by

CX cx

也就是说,第一个字符成为第26个字符,第I个字符成为第一个字符。 字母以外的符号不变。 要求程序将密码翻译成原文,并输出密码和原文。

#includestdio.h

int main ( ) )

{

int j,n;

char ch[80],tran[80];

gets(ch;

printf(%s(n ),ch );

j=0;

while(ch[j]!=\’\\0 \’ )

{

if ( ) ch[j]=\’Z \’ ) ch[j]=\’Z \’ )

tran[j]=155-ch[j];

elseif ( ) ch[j]=\’z \’ ) ch[j]=\’z \’ ) )

tran[j]=219-ch[j];

else

tran[j]=ch[j];

j;

() ) ) ) )。

n=j;

for(j=0; jn; j )

putchar(tran[j];

打印( ( n );

返回0;