我的问题是输入一个数i,如果这个数除以2余数是1,那么i=i/2; 如果这个数除以2余数是0,那么i= 3i+1,一直这样循环直到i=1为止,然后把每一步都要输出
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int i;
scanf("%d\n", &i);
printf("%d\n", i);
if (i % 2 == 0) {
i = 3 * i + 1;
printf("%d\n", i);
}
else if (i % 2 == 1) {
i = i / 2;
printf("%d\n", i);
}
printf("%d\n", i);
return 0;
}
谢谢!!
你的代码有3个错误:
(1)scanf("%d\n",&i)这一句,把\n删掉,改成 scanf("%d",*i); 但是,看你截图中内容,i 应该是通过命令行方式输入,而不是通过scanf
(2)代码主要部分你没有放在循环里。
(3)if 和 else if的逻辑写反了。
修改后运行结果:
代码修改如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[]) {
int i;
if (argc != 2)
{
printf("Usage:./collatz NUMBER\n");
return 0;
}
i = atoi(argv[1]);
printf("%d\n", i);
while (i != 1)
{
if (i % 2 == 0) {
i = i / 2;
printf("%d\n", i);
}
else if (i % 2 == 1) {
i = 3 * i + 1;
printf("%d\n", i);
}
}
//printf("%d\n", i);
return 0;
}
你写错了吧,,,应该是如果这个数除以2余数是0,那么i=i/2; 如果这个数除以2余数是1,那么i= 3i+1
你题目的解答代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i;
scanf("%d", &i);
printf("%d\n", i);
while (i!=1) {
if (i % 2 == 1)
{
i = 3 * i + 1;
}
else if (i % 2 == 0)
{
i = i / 2;
}
printf("%d\n", i);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!