目录
实验五 循环结构程序设计【-4】
1.最大公约数和最小公倍数【X】
3.百钱白鸡问题【X】
5.2提高实验任务【X】
1.计算器
2.打渔还是晒网
5.1基本实验任务
任务1:阅读程序
1.while循环
#include <stdio.h>
int main()
{
int k = 0;
while (k == 1)
k++;
printf("k=%d\n", k);
return 0;
}
2.for循环的嵌套
#include <stdio.h>
int main()
{
int s=0, t, i, j;
for (i = 1; i <= 3; i++)
{
t = 1;
for (j = 1; j <= 2 * i - 1; j++)
{
t = t * j;
s = s + t;
}
}
printf("s=%5d\n",s);
return 0;
}
3.for循环与选择语句相结合
#include <stdio.h>
int main()
{
int n = 0;
for (n = 1; n <= 5; n++)
{
if (n % 2)
printf("*");
else
continue;
printf("#");
}
return 0;
}
4.do while 循环
#include <stdio.h>
int main()
{
int i = 0, s = 0;
do
{
if(i%2)
{
i++;
continue;
}
i++;
s += i;
}while(i < 7);
printf("s=%d\n", s);
return 0;
}
任务2:完成程序
1.数的立方和,除法结合取模及叠加
#include <stdio.h>
int main()
{
int n, sum = 0;
n = 2345;
while (n)
{
sum = sum + (n % 10) * (n % 10) * (n % 10);
n /= 10;
}
printf("sum=%d\n", sum);
return 0;
}
2.求自然底数【求助GPT】
#include <stdio.h>
int main()
{
int i = 1;//用于迭代阶乘的分母
double s = 1, term = 1;
int count = 0;
//'s' 用于存储 *e* 的近似值,'term' 用于存储当前迭代的项的值。开始时,它们都被设置为1。
do
{
term /= i;//在原来的基础上继续处理,注意是阶乘
s += term;
i++;
count++;
} while (term > 1e-6);
printf("e=%lf\n", s);
printf("%d", count);
return 0;
}
3.利用循环的嵌套及数学规律打印星星
*
#include <stdio.h>
int main()
{
int i, j;
// 外层循环控制行数
for (i = 1; i <= 4; i++)
{
// 内层循环打印空格,控制空格的数量
for (j = 1; j <= 4 - i; j++)
printf(" ");
// 内层循环打印星号,控制星号的数量
for (j = 1; j <= 2 * i - 1; j++)
printf("*");
printf("\n");
}
return 0;
}
NB
#include <stdio.h>
int main()
{
int i = 0, j = 0, h = 0;
printf("请输入高度:");
scanf("%d", &h);
for (i = 1; i <= h; i++)
{
for (j = 1; j <= h - i; j++)
printf(" ");
for (j = 1; j <= 2 * i - 1; j++)
printf("NB");
printf("\n");
}
return 0;
}
任务3:编写程序,实现题目要求
1.最大公约数和最小公倍数【X】
2.水仙花数
#include <stdio.h>
int sxhs(int num)
{
int original = num;//保存原始值
int sum = 0;
while (num)
{
sum += (num % 10) * (num % 10) * (num % 10);
num /= 10;
}
if (sum == original)//比较原始值
return 1;
else
return 0;
}
int main()
{
int i = 0;
int count = 0;
for (i = 100; i < 1000; i++)
{
if (sxhs(i) == 1)//传参
{
count++;
printf("%d是水仙花数\n", i);
}
}
printf("100-999之间的水仙花数有%d个", count);
return 0;
}