1、求平均成绩: 1
2、输出100以内的平方根表。 2
3、找出所有的水仙花数 2
4、求出小球走过的路程和最后的落地高度。 3
1、求平均成绩:
#include <stdio.h>
void main( )
{
int i,n;
int sum=0,score;
float average=0.0;
printf("\n n=?");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("\n please input the score of the %d student\n",i);
scanf("%f",&score); /* 输入学生成绩 */
if((score<0.0 || score>100.0)) /* 判断成绩的合法性 */
{ --i;
continue;
} /*如果不加此次的错误成绩,i也不能计数,-1再+1相当于没有计数,所以先减,然后再继续下一次循环,本次的下一句没有执行*/
sum += score; /* 求成绩之和 */
}
average = (float)sum/n; /* 求平均成绩,在循环结束后 */
printf("\n average =%f",average);
}
下边的程序也可:(尤其注意对数据的合法性进行判断的改动)
#include <stdio.h>
void main( )
{
int i,n;
float sum=0,score,average=0.0;
printf("\n n=?");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ do
{ printf("\n please input the score of the %d student\n",i);
scanf("%f",&score); /* 输入学生成绩 */
}while(!(score<0.0 || score>100.0)); /* 判断成绩的合法性:不只判断一次,还判断多次,考虑到正确才停止输入,下边再加 */
sum += score; /* 求成绩之和 */
}
average = sum/n; /* 求平均成绩 */
printf("\n average =%f",average);
}
2、输出100以内的平方根表。
#include <stdio.h>
#include <math.h>
void main()
{
int m,n;
for (m = 0; m < 10; m++)
{
printf("%7d",m); /*打印表头*/
}
printf("\n");
for (n = 0; n < 10; n++) /*乘数n从1变化到9*/
{
printf("%d",n); /*输出每行的开头数字*/
for (m = 0; m < 10; m++) /*被乘数m从1变化到9*/
{
printf(" %4.3f ",sqrt(n * 10 + m));
} /*输出第m行n列中的值*/
printf("\n"); /*输出换行符,准备打印下一行*/
}
}
3、找出所有的水仙花数这是典型的穷举题,有两种方式:
一种是对所有数位进行穷举,例如:
#include<stdio.h>
void main()
{
int i,j,k,m,n;
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
{
m=100*i+10*j+k;/*得到一个三位数*/
n=i*i*i+j*j*j+k*k*k; /*求每一个数位的立方和*/
if(m==n)
printf("m=%d",m);

}
}
}
}
另一种就是对三位数穷举:
#include<stdio.h>
void main()
{
int i,j,k,m,n;
for(m=100;m<=999;i++)
{
I=m%10; /*得到m的个位*/
J=m/100; /*得到m的百位*/
K=(m-m/100*100)/10; /*得到m的十位*/
n=i*i*i+j*j*j+k*k*k;  /*求每一个数位的立方和*/
if(m==n)
printf("m=%d",m);
}
}
4、求出小球走过的路程和最后的落地高度。
/*编程实现:小球碰撞10次所经过的路程和最后一次上升的高度*/
#include<stdio.h>
#define N 10
void main()
{
int i;
float distance,height=100;
for(i=1,distance=100;i<N;i++)/*将第一次落地之前的距离存入到distance里,后边循环里计算从第1次落地到第10次落地所走过的路程,期间弹起了9次*/
{
height/=2; /*高度是原来的一半*/
distance +=2*height;/*将每一次弹起到下一次落地走过的距离计入总路程*/
}
printf("小球碰撞%d次所经过的路程:%.2f\n \n",N,distance);
printf("第%d次落地后上升的高度是%.2f\n",N,height/2);
}
下边是某同学交的作业:它是在循环中计算了10次,但初值刨去了下落之前的半次。
#include<stdio.h>
void main()
{
float sum=-100,h=100;
int i=1;
do
{
sum=sum+2*h;
h=h/2;
i++;
}
while(i<=10);
printf("sum=%f,h=%f",sum,h);
}