创建一个允许人们了解指数的代码。 任务是编写一个代码,该代码以整数作为输入,并返回从2(2)上升到幂0(零)到2(2)上升到幂n(输入中指定的数字)的值
输入
输入包含数字'n',所有值从2的幂从0返回到n。
的输出
输出包含从2(两个)上升到功率0(零)到2(两个)上升到功率n(输入)的值,用逗号分隔。
约束
-1000≤n≤1000
示例输入
5
示例输出
1,2,4,8,16,32
#include <stdio.h>
int main(void){
int n;double p=1;
scanf("%d",&n);
if(n>0){
for(int i=0;i<n;i++,p*=2)
printf("%.0lf,",p);
printf("%.0lf",p);
}
else if(n==0)
printf("1");
return 0;
}
答案 0 :(得分:1)
你应该注意'n'的负值。
答案 1 :(得分:1)
未处理的负面案件
#include <stdio.h>
int main(void){
int n,p=1;
scanf("%d",&n);
if(n>0){
for(int i=0;i<n;i++,p*=2)
printf("%d,",p);
printf("%d",p);
}
else if(n==0) printf("1");
else{
for(int i=n;i<0;i--,p*=2)
printf("-%d,",p);
printf("-%d",p);
}
return 0;
}
答案 2 :(得分:0)
对于N <0,格式说明符应该允许小数点,因为所有数字都在0和1之间。因此,对于N <0,使用double作为数据类型。 对于N> 0,使用长long数据类型,因为所有数字都是整数。
#include <stdio.h>
int
main(void)
{
int n;
double p=1.0;
long long llp = 1;
scanf("%d",&n);
if(n>0){
for(int i=0;i<=n;i++){
printf("%lld",llp);
if( i<n) printf(",");
llp*=2;
}
} else if(n<0){
for(int i=n;i<=0;i++){
printf("%.5lf",p);
if( i<0) printf(",");
p*=0.5;
}
}else
printf("1");
return 0;
}
答案 3 :(得分:-3)
#include <stdio.h>
int main(void){
int n;
double p=1;
scanf("%d",&n);
if(n>0){
for(int i=0;i<n;i++,p*=2)
printf("%.0lf,",p);
printf("%.0lf",p);
} else if(n==0) printf("1");
else {
for (int i=0; i>n; i--, p/=2)
printf("%.0lf,",p);
printf("%.0lf",p);
}
return 0;
}