1.分别用while语句、do-while语句、for语句编写程序,计算e≈1+1/1!+1/2!+…+1/n!

for循环示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//计算e≈1 + 1 / 1!+ 1 / 2!+ ... + 1 / n!
#include <stdio.h>
int main()
{
printf("用for循环计算e的值:");
printf("请输入n的值");
int n,i,a;
int k = 1;
float num = 0;
scanf_s("%d", &n);
for (i = 1;i <= n;i++) {
for (a = i;a >= 1;a--) {
k*= a;
}
num =num+ 1.0/ k;
}
printf("e的值为%f",num+1);
return 0;
}

While循环示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main()
{
int a=1,n;
double sum=1, b = 1;
scanf_s("%d", &n);
while (a<=n)
{
sum *= a;
b+= 1.0 / sum;
a++;
}

printf("%lf",b);
return 0;
}

do while 循环示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main()
{
int a = 1, n;
double sum = 1, b = 1;
printf("请输入n的值:");
scanf_s("%d", &n);
do
{
sum *= a;
b += 1.0 / sum;
a++;
} while (a <= n);

printf("%lf", b);
return 0;
}
//注意我用的是VS编辑器,使用其他的需要你改一下scanf_s

2.如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数及这些完数的和。

解析题目任务:

  1. 先教会代码判断一个数是否是完数
  2. 让代码将完数相加,并输出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
int pangDuan(int h);
int main()
{
int i,a,sum=0,n=0,j=0;
for (i = 1;i <= 1000;i++)
{
/*for (a = 1;a < i;a++)
{
if (i % a == 0)
{
sum += a;
}
}
if (sum - 1 == i)
{
printf("%d是完数 ", i);
n += i;
}*/
j+=pangDuan(i);
}
printf("\n");
printf("1000以内所有的完数之和为%d", j);
return 0;
}

//主函数不知道错在哪里了,我在外面写一个新的调用函数先用着。
//功能:判断一个数是否是完数
int pangDuan(int h)
{
int a, sum = 0, i = 0,g;
for (a = 1;a < h;a++) {
if (h % a == 0)
{
sum += a;//1,3,6
}
}
if (sum == h)
{
printf("%d是完数 ", h);
g = h;
}
else g = 0;
return g;

}

等我找出主函数错误再更新正确答案

正确答案

1

3、输入并运行下面的程序,观察程序的运行结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//输入并运行下面的程序,观察程序的运行结果。
#include <stdio.h>
int main()
{
int n;
while (1)
{
printf("Enter a number:");
scanf("%d",&n);
if (n%2==1)
{
printf("I said");
continue;
}
break;
}
printf("Thanks. I needed that!");
}

运行报告:

根据运行后的结果:

可以判断这是一个筛选偶数的程序,当输入的是奇数时会让用户继续进行输入,直到用户输入的是偶数为止。

根据程序本身:

  1. 我尝试对while的限制条件进行修改,发现把括号里的1改成2,程序照样正常运行,由此可以猜测它只是为了满足while循环运行规则的一个无关紧要的数,因此可以得出结论,表达式可以是一个整形。
  2. 这个程序将while循环的作用进行拓展,我们可以把这个小窍门用在任何程序的外面就可以让一个程序不断地重复运行,不需要重复启动。
  3. continue是直接回到循环的开始处,不是回到if条件语句的开始处