我正在参加C课程(这是我的第一周),我需要编写一个打印出冰雹数字序列的程序。 我期望建立一个能够做到这一点的功能。
下一个号码被打印出来但就是这样。例如,当我输入58时,我得到29.但是我想打印出9个下一个数字的整个序列。
如果你能指导正确的方向,我会永远感激。
#include <stdio.h>
#include <stdlib.h>
int Hailstone (int n)
{
if (n % 2 == 0) {
return n /= 2;
}
else {
return n = 3 * n + 1;
}
return n;
}
int main (void)
{
int start, result;
printf("Input a number: ");
scanf("%d", &start);
result = Hailstone(start);
printf("%d\n", result);
return 0;
}
答案 0 :(得分:3)
你想要的是迭代。你不需要result
变量;你只需插入新值:
while (start > 1) {
start = Hailstone(start);
printf ("%d\n", start);
}
还有一点可以改进,例如return n;
无法访问,n
的分配无用:
int Hailstone (int n)
{
if (n % 2 == 0) {
return n / 2;
}
else {
return 3 * n + 1;
}
}
如果您想提交专业版Hailstone()
,您甚至可以将其写为
int Hailstone (int n)
{
return n % 2 ? 3 * n + 1 : n / 2;
}
答案 1 :(得分:0)
看,在你的程序中,你试图只返回一个值到main..Hence打印所有数字只需写一个循环如下..
#include <stdio.h>
#include <string.h>
int Hailstone(int n)
{
if(n % 2 == 0) {
return n /=2;
}
else {
return n = (3 * n) + 1;
}
}
int main (void)
{
int start;
printf("Input a number: ");
scanf("%d", &start);
while(start!=1)
{
start = Hailstone(start);
printf("%d\n", start);
}
}