一.编写一个程序,依次输入5个学生的7门课程的成绩,每输入一个学生的7门课程成绩后,立即统计并输出该学生的总分和平均分。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int stu,i;
float score,ave,sum;
for (stu=1;stu<=5;stu++)
{
sum = 0;
printf("输入第%d名学生的7门成绩:\n",stu);
for (i=0;i<7;i++)
{
scanf("%f",&score);
sum+=score;
}
ave = sum/7.0;
printf("\n");
printf("输入第%d名学生的总分:%.2f",stu,sum);
printf("输入第%d名学生的平均分:%.2f",stu,ave);
printf("\n");
}
}
二.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float x=200;
int n=0;
do
{
x*=(1+0.045);
n++;
}while(x<500);
printf("%d年后该县年工业生产总值将超过500亿",n);
}
三.编写一个程序,求出所有各位数字的立方和等于1099的三位整数。
#include <stdio.h>
#include <stdlib.h>
//找出各位数字的立方和等于1099的3位整数
int main()
{
int i,j,k;//i个位,j十位,k百位
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
{
if(i*i*i+k*k*k+j*j*j==1099)
{
printf("%d\n",i*100+j*10+k);
}
}
}
}
}
四.有一个8层的灯塔,每层的灯数都是上一层的2倍,共有765盏灯,编程求最上层与最下层的灯数。
#include <stdio.h>
#include <stdlib.h>
//变量是每层塔的灯数
int main()
{
int top=1,bottom,i,sum;
while(1)
{
bottom=top;
//把最上层的数赋给其下一层,作为下一层是上一层的两倍数的计算基数
sum=0;
for(i=1;i<8;i++)\
{
bottom*=2;//使得bottom从第七层开始等于它的上一层*2
sum+=bottom;//计算除第八层外的其他层的总灯数
}
sum+=top;//计算1~8层的总灯数
if(sum==765)
{
//判断1~8层的总灯数是不是765
printf("top=%d",top);
printf("\nbottom=%d\n\n",bottom);
break;
}
top++;//如果不满足条件则第八层加一,继续穷举
}
}
五.用C语言打印一个空心圆
思路
每行打印两个点"*"。问题的关键是找到每行这两个"*"的位置,然后打印。
怎么找某行"*"的位置?
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
//利用x ^ 2 + y ^ 2 = R ^ 2可以算出圆上每一点行和列的对应关系。
void main()
{
double y; //y就是圆的方程中的y
int x,m;
for(y=10;y>=-10;y--) //设置圆的半径为10
{
//计算行y对应的列坐标m,
//2是屏幕纵横比调节系数
m=2.03*sqrt(100-y*y); //sqrt 求平方根 m是列坐标
for(x=1;x<30-m;x++)
{
printf(" ");
}
printf("*");
for(;x<30+m;x++)
{
printf(" ");
}
printf("*\n");
}
}