这是我现在写的程序。
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>请问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,尝试一下吧。