C语言 怎么一次性输入多组测试数据,输入0时结束输入操作。回车后,输出各元素对应结果。

这是自己写的程序,请在此基础上改动,我用的是C++6.0,谢谢。(我的程序只能输入一个值,要求一次性输入多组数据)
#include <stdio.h>
int main()
{
int i,n,j=1,k=-1;
scanf("%d",&n);
for(i=1;i<n;i++)
if(n%i!=0)
j=j+1;
else
k=k+1;
if(n%2==0)
j=j-k+1;
else
j=j-k;
printf("%d ",j);
printf("\n");
return 0;
}

#include <stdio.h>
int main()
{
int i,n,j=1,k=-1;
while(printf("请输入n:")&&scanf("%d",&n)==1&&n!=0){
for(i=1;i<n;i++){
if(n%i!=0)
j=j+1;
else
k=k+1;
if(n%2==0)
j=j-k+1;
else
j=j-k;
}
printf("%d",j); 
printf("\n");
    j=1;k=-1;
}
return 0;
}

追问

亲,结果貌似不对了,比如输入9的解结果就不一样了。

追答#include <stdio.h>
int main()
{
    int i,n,j=1,k=-1;
    while(printf("请输入n:")&&scanf("%d",&n)==1&&n!=0){
        for(i=1;i<n;i++){
            if(n%i!=0)
                j=j+1;
            else
                k=k+1;
        }
        if(n%2==0)
            j=j-k+1;
        else
            j=j-k;
        printf("%d",j); 
        printf("\n");
        j=1;k=-1;
    }
    return 0;
}

追问

太棒了,谢谢,我看了之后自己以后就会写了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-17
这段程序的目的是什么。。追问

"LK的数学题"de C语言版解答。欧拉函数还没学,所以就用了其他方法。

追答

一次性输入多组数据要么用while循环输入
要么就输入字符串,然后解析得到参数

追问

自己试过用w'hile 循环,但是结果就不对了,数据无法回到原始数据再次运算。

追答

因为你在计算过一次之后 并没有还原初始变量吧
比如j和k没有改为1和-1
所以导致结果偏差

追问

恩恩,是这个问题,已经解决了,谢谢。

相似回答