C上机复习题及答案 (1)

  • 格式:doc
  • 大小:45.00 KB
  • 文档页数:8

百度文库 - 让每个人平等地提升自我

1 1有3个整数a,b,c,由键盘输入,输出其中最大的数.

#include

void main()

{

int a,b,c;

printf("输入三个数:");

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

if(a>b&&a>c)

printf("最大值为:%d",a);

else if(b>a&&b>c)

printf("最大值为:%d",b);

else

printf("最大值为:%d",c);

}

2给出一百分制成绩,要求输出成绩等级‘A’、‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89为‘B’,70~79为‘C’,60~69为‘D’,60分以下为‘E’。

#include

void main()

{

float grade;

scanf("%f",&grade);

if (grade>=90&&<=100)

printf("A");

else if(grade>=80&&<90)

printf("B");

else if("grade>=70&&grade<80)

printf("C");

else if(grade>=60&&<70)

printf("D");

else

printf(("E");

}

3. 输入两个正整数m和n,求其最大公约数和最小公倍数。(辗转相除法)

#include

main()

{

int a,b,m,n,temp;

printf("请输入两个整数:\n");

scanf("%d%d",&m,&n);

if(m

temp=m;

m=n;

n=temp;

}

a=m;b=n;

while(b!=0)

{

temp=a%b;

a=b;

b=temp;

}

printf("最大公约数是:%d\n",a);

printf("最小公倍数是:%d\n",n*m/a);

}

4、计算100至999之间有多少个数,其各位数字之和是5。例如:122、131是满足要求的数的两个例子。(穷举法)

#include

void main()

{

int num=100,s=0;

while (num<1000)

{

{

if((num/100+num%100/10+num%100%10)==5)

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

s=s+1;

num++;

}

}

printf("输出满足条件的数字的个数:%d\n",s);

}

5.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。

#include

#include

void main()

{ 百度文库 - 让每个人平等地提升自我

2 int number;

for(number=100;number<1000;number++)

{

if(pow(number/100,3)+pow(number%100/10,3)+pow(number%100%10,3)==number)

printf( “%d\n”,number);

}

}

6. 求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。

#include

void main()

{

int s=0,i,a,n;

printf("请输入两个数:");

scanf("%d%d",&a,&n);

for(i=1;i<=n;i++)

{

s=s+a;

a=10*a+a;

}

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

}

7 求100~200间的全部素数。

#include

#include

void main()

{

int m,k,i,n=0;

int num=0;

for(m=101;m<=200;m=m+2)

{

k=sqrt(m);

for(i=2;i<=k;i++)

{

if(m%i==0)

break;

}

if(i>=k+1)

{

printf("%d ",m);

n=n+1; num++;

if(n%5==0)

printf("\n");

}

}

printf("\n全部素数有:%d\n",num);

}

8. 定义一个2*3矩阵,输入/输出数值

#include

void main()

{

int i,j,a[2][3];

for(i=0;i<2;i++)

{

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

}

for(i=0;i<2;i++)

{

for(j=0;j<3;j++)

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

printf("\n");

}

}

9. 求一个3*3矩阵对角线元素之和。

#include

main()

{

int a[3][3],i,j,sum=0;

printf("请输入数组元素:(3*3)\n");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

printf("\n");

printf("数组为:\n");

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

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

printf("\n");

}

printf("\n");

printf("对角线的和:\n");

for(i=0;i<3;i++)

for(j=0;j<3;j++) 百度文库 - 让每个人平等地提升自我

3 if(i==j||2-i==j)

sum+=a[i][j];

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

}

10. 用二分法求下面方程在(-10,10)之间的根。

2x3-4x2+3x-6=0

#include

#include

void main()

{

float x0,x1,x2,f0,f1,f2;

do

{

printf("please enter x1 & x2:\n");

scanf("%f,%f",&x1,&x2);

f1=((2*x1-4)*x1+3)*x1-6;

f2=((2*x2-4)*x2+3)*x2-6;

}

while ((f1*f2)>0);

do

{

x0=(x1+x2)/2;

f0=((2*x0-4)*x0+3)*x0-6;

if ((f0*f1)<0)

{

x2=x0;

f2=f0;

}

else

{

x1=x0;

f1=f0;

}

}

while(fabs(f0)>=1e-5);

printf("the root of equation is :%f\n",x0);

}

11. 求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即:

F1=1 (n=1) F2=1 (n=2)

Fn=Fn-1+Fn-2 ( n>=3)

#include

void main()

{

int a[40],i;

a[0]=1;a[1]=1;

for(i=2;i<=40;i++)

{

a[i]=a[i-1]+a[i-2];

}

for(i=0;i<=40;i++)

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

}

12. 这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?

#include

void main()

{

int a[40],i;

a[0]=1;a[1]=1;

for(i=2;i<=40;i++)

{

a[i]=a[i-1]+a[i-2];

}

for(i=0;i<=40;i++)

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

}

13 用起泡法对十个数排序(由小到大)

#include

void main()

{

int a[10];

/*定义数组、变量,初始化*/

int i,j,t;

printf("input 10 numbers:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=0;j<9;j++)

/*开始进行排序*/