c语言,判断一个数是不是3的次方,然后写出这个次方。

这是我现在写的程序。
int main()
{
int num,counter=0;
printf("Enter a positive integer: ");
scanf("%d",&num);
if (num<0)
printf("Error: invalid integer entered!\n");
if (num%3!=0)
printf("%d is not a power of 3!\n",num);
if (num == 1)
printf("%d is a power of 3, exponent = 0\n",num);
if (num == 2)
printf("%d is not a power of 3!\n",num);
if ((num%2)==0)
printf("%d is not a power of 3!\n",num);
while(num>=3 && num%3==0 &&(num%2)!=0)
{ counter++;
num=num/3;
}
printf("%d is a power of 3, exponent = %d\n",num,counter);
return 0;
}

需要结果显示:
Enter a positive integer: 81
81 is a power of 3, exponent = 4

Enter a positive integer: 1
1 is a power of 3, exponent = 0

Enter a positive integer: 12
12 is not a power of 3!

Enter a positive integer: -1
Error: invalid integer entered!

。。究竟哪里做错了,一直都显示不出来需要的结果啊TAT就大神帮助啊TAT

看代码,楼主的逻辑好乱啊,更改一下。如有不懂,请追问。

#include<stdio.h>

int main()
{
    int num,counter=0;
    int temp;
    printf("Enter a positive integer:  ");
    scanf("%d",&num);
    temp = num;
    if (num<0)
    {
        printf("Error: invalid integer entered!\n");
        return 0;
    }
    if (num == 1)
    {
        printf("%d is a power of 3, exponent = 0\n",temp);
        return 0;
    }
    while(num%3==0)
    {  
        counter++;
        num=num/3;
    }
    if(num == 1)
    {
        printf("%d is a power of 3, exponent = %d\n",temp,counter);
    }
    else
    {
        printf("%d is not a power of 3!\n",temp);
    }
    return 0;
}

追问

请问temp是代表什么?

追答

temp是原来输入的数字

while(num%3==0)
{
counter++;
num=num/3; //这里修改了num的值,那后面还怎么打印呢,要保存一下原来的值方便打印
}

追问

原来是这样!!我就一直纠结后面的数字改了不知道怎么办!那请问return 0 和 while 里面的break的功能是不是相似的呢?我是初学者所以很混乱。。

追答

当然不一样喽。

break,翻译成中文就是打断,只是能够打断while语句的执行

return,翻译成中文就是返回,结束本函数的执行,返回到调用的函数。由于main函数是程序的第一个函数,main函数里面的return就是结束程序的执行。

追问

好的,谢谢!!可是为什么里面要有两个 if(num == 1)?

追答

第一个可以删除,忘了。

第一个是判断输入的是否是1的,1的exponent = 0。

第二个是判断num是否是3的次方,如果是3的次方,经过count次num=num/3;之后,num=1了,比如9,9/3=3,3/3=1,所以9是3的次方呀。

追问

那请问你知道怎么在emacs 里面undo吗TAT 我不小心把编程删了。。怎么会倒霉成这样。。

追答

emacs这个软件没有用过,不太清楚。一般的undo快捷键是ctrl+z,尝试一下吧。

温馨提示:答案为网友推荐,仅供参考
相似回答