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++)
/*开始进行排序*/