namespace q1
{
class Program
{
static void Main(string[] args)
{
ulong s = 0 //麦粒总数
ulong n = 4 //每格麦粒的数量,第一格为4粒
double g,v,a,h
//循环累计,64格,累加64次
for(int i = 0 i < 64 ++i)
{
s += n
//每格麦粒比前一格增加1倍
n *= 2
}
//输出麦粒总数
Console.WriteLine("统治者要向发明者奖励的麦粒总数:" + s + "粒")
//小麦重量
g = s * 5e-8 //每粒小麦50毫克 = 0.05克 = 0.00005千克= 0.00000005吨
Console.WriteLine("小麦的重量为:" + g + "吨")
//输入区域面积
Console.Write("输入区域面积(平方千米):")
a = double.Parse(Console.ReadLine())
//计算小麦的体积(立方千米),每立方米小麦重量约0.75吨,换算为立方千米则为0.75e9吨
v = g * 0.75e9
//小麦的深度为(千米)
h = v / a
Console.WriteLine("深度:" + h + "千米")
Console.ReadKey()
}
}
}
#include<stdio.h>#include<math.h>
int main()
{
unsigned double sum
int a,b
sum=0
b=0
scanf("%d",&a)
do
{
sum=sum+pow(2,b)
b++
}while(b<a)
printf("%d\n", sum)
return 0
}
for语句后多写了一个零,这样整个循环会变成空循环;当i等于n时循环才结束,再运行t=t*i和s=s+t这两条语句,最后s会等于n+1的值。最后的输出应该是s,不应该是n吧?循环的次数也少一次,当格数为2时,循环应该运行1次对吧?但是在这个程序中一次都没有运行。综合上述整个程序可以改为:
#include "stdio.h"
void main()
{
int t,s,i,n
printf("请输入格数\n")
scanf("%d",&n)
t=1,s=1
for(i=2i<=ni++)
{
t=t*i
s=s+t
}
printf("%d\n",s)
}