C语言考试题库及答案 2

sw

1.有一个函数,写一段程序,输入的值,输出的值。

intmain()

{

inta,min=32767,n=3;

while(n--)

{

scanf("%d",a);

if(amin)

min=a;

}

printf("%d\n",min);

return0;

}

3.输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,若能,计算面积。

intmain()

{

inta,b,c,s,d;

scanf("%d%d%d",a,b,c);

if(a+bca+cbb+ca)

{

d=(a+b+c)/2;

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

printf("%d\n",s);

}

else

printf("三边构不成三角形\n");

}

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

intmain()

{

chara;

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("enterdataerror\n");

}

return0;

}

6.有一个函数:

,写一段程序,输入的值,输出的值。

intmain()

{

inta;

scanf("%d",a);

if(a100)

printf("error\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");

}

return0;

}

8.求一元二次方程ax2+bx+c=0的解。(考虑b2-4ac三种情况)

intmain()

{

doublea,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=e+sqrt(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+%.2lfi%.2lf-%.2lfi\n",e,sqrt(-d)/(2*a),e,sqrt(-d)/(2*a));

}

return0;

}

9.输入某年某月某日,判断这一天是这一年的第几天?(注意是否为闰年)

intmain()

{

chara;

intb;

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");

}

return0;

}

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

intmain()

{

inta,s=0;

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

s=s+a*(a+1);

printf("%d\n",s);

return0;

}

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

intmain()

{

doubles,c=0;

inta,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);

return0;

}

15.有一分数序列,求其前30项的和。

intmain()

{

intm,n,s=0;

scanf("%d",m);

while(m!=0)

{

n=m%10;

m=m/10;

s=s+n;

}

printf("%d\n",s);

return0;

}

18.输入一个八进制数,并将其转换为十进制。(要求使用循环实现)

intmain()

{

inta,b=0,m=0;

scanf("%d",a);

while(a!=0)

{

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

b++;

a=a/10;

}

printf("%d\n",m);

return0;

}

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

intmain()

{

inti;

floath=50,a=100;

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

{

a=a+2*h;

h=h/2;

}

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

return0;

}

21.输出倒三角形式的9*9口诀表,要求用循环实现。

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

8*1=88*2=168*3=248*4=328*8=6

1*1=1

intmain()

{

inta,b,c;

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

{

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

printf("");

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

printf("*");

printf("\n");

}

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

{

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

printf("");

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

printf("*");

printf("\n");

}

return0;

}

23.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是完数。编写程序找出500以内的所有完数,并按下面的格式输出其因子:

6itsfactorsare1,2,3

intmain()

{

inta,b,s;

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

{

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

{

s=a*b;

printf("%d",s);

}

printf("\n");

}

}

25.一个偶数总能表示为两个素数之和。要求:输入一个偶数,将其表示成两个素数之和,直到输入的数为0。

intmain()

{

inta,b,c,s[10];

for(a=0;a10;a++)

scanf("%d",s[a]);

printf("\n");

for(b=0;b9;b++)

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

if(s[a]s[a+1])

{

c=s[a];

s[a]=s[a+1];

s[a+1]=c;

}

for(a=0;a10;a++)

printf("%d",s[a]);

printf("\n");

return0;

}

27.输入10个整型整数,用选择法对这10个数排序,并该由大到小顺序在屏幕上输出。

intmain()

{

inti;

chara[5];

scanf("%s",a);

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

printf("%c",a[i]);

printf("\n");

return0;

}

29.给一个不多于6位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为158,应输出851。(利用数组知识)

intmain()

{

intm,i,j;

chara[50];

scanf("%s",a);

m=strlen(a);

printf("%d\n",m);

for(i=0;im;i++)

{

printf("%c",a[i]);

}

printf("\n");

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

{

printf("%c",a[j]);

}

printf("\n");

return0;

}

30.用筛选法求100之内的素数。(利用数组知识)

intmain()

{

inta[101],i,j,n;

for(i=0;i100;i++)

a[i]=i;

a[0]=1;

for(i=2;isqrt(100);i++)

for(j=i+1;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]);

}

printf("\n");

return0;

}

31.编程实现:输入任意一个不超过5位的十进制整数,取出该数中的所有奇数数字,按原来的顺序组成一个新的数。

intmain()

{

inti,b;

chara[10];

gets(a);

b=strlen(a);

for(i=0;ib;i++)

{

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

printf("%c",a[i]);

}

puts("");

}

32.有一个已升序排列的数组,要求输入一个数后,按原来排序的规律将它插入数组中。(在同一数组中实现)

intmain()

{

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

for(i=0;i2;i++)

{

for(j=0;j3;j++)

{

printf("%5d",a[i][j]);

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

}

printf("\n");

}

for(i=0;i3;i++)

{

for(j=0;j2;j++)

printf("%5d",b[i][j]);

printf("\n");

}

return0;

}34.在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。

intmain()

{

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;break;}

}

if(c==1)

{

printf("鞍点为:%d\n",a[i][j-1]);

break;

}

}

}36.输入一行字符,分别统计出其中的英文字符、数字和其他字符的个数。

intmain()

{

chara;

intb=1;

a=getchar();

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

{

if(a=='')

b++;

}

printf("%d\n",b);

return0;

}

40.编一个程序,将两个字符串连接起来,不要用strcat函数。

intmain()

{

chara[100],b[100];

gets(a);

gets(b);

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

return0;

}41.有一篇文章,共有4行文章,每行有20个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。

intmain()

{

intj,n;

charch[80],tran[80];

gets(ch);

printf("%s\n",ch);

j=0;

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

{

if((ch[j]='A')(ch[j]='Z'))

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

elseif((ch[j]='a')(ch[j]='z'))

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

else

tran[j]=ch[j];

j++;

}

n=j;

for(j=0;jn;j++)

putchar(tran[j]);

printf("\n");

return0;

文章版权声明:除非注明,否则均为机床资讯库原创文章,转载或复制请以超链接形式并注明出处。

上一个 自组公路车,车店师傅不会告诉你的十大注意和技巧(上)

下一个 中企承建科特迪瓦可可加工厂正式交付