新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include
发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及搬家公司等,在重庆网站建设公司、营销型网站建设、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。
stdio.h
int
main()
{
int
n,x1,x2,x3,x4,x5,x6,flag;
flag
=
0;
//标记是否有特殊数,若没有则输出提示:“No
output.”
long
m;
scanf("%d",n);
switch(n)
{
case
1:
{
printf("0\n1\n");
}
break;
case
2:
{
m=10;
while(m=99)
{
x1=m%10;
x2=m/10;
if(x1*x1+x2*x2==m)
{
printf("%ld\n",m);
flag
=
1;
}
m++;
}
if(flag
==
0)
{
printf("No
output.\n");
}
}
break;
case
3:
{
m=100;
while(m=999)
{
x1=m%10;
x2=(m%100)/10;
x3=m/100;
if(x1*x1*x1+x2*x2*x2+x3*x3*x3==m)
{
printf("%d\n",m);
flag
=
1;
}
m++;
}
if(flag
==
0)
{
printf("No
output.\n");
}
}break;
case
4:
{
m=1000;
while(m=9999)
{
x1=m%10;
x2=(m%100)/10;
x3=(m%1000)/100;
x4=m/1000;
if(x1*x1*x1*x1+x2*x2*x2*x2+x3*x3*x3*x3+x4*x4*x4*x4==m)
{
printf("%d\n",m);
flag
=
1;
}
m++;
}
if(flag
==
0)
{
printf("No
output.\n");
}
}
break;
case
5:
{
m=10000;
while(m=99999)
{
x1=m%10;x2=(m%100)/10;x3=(m%1000)/100;x4=(m%10000)/1000;x5=m/10000;
if(x1*x1*x1*x1*x1+x2*x2*x2*x2*x2+x3*x3*x3*x3*x3+x4*x4*x4*x4*x4+x5*x5*x5*x5*x5==m)
{
printf("%ld\n",m);
flag
=
1;
}
m++;
}
if(flag
==
0)
{
printf("No
output.\n");
}
}
break;
case
6:
{
m=100000;
while(m=999999)
{
x1=m%10;
x2=(m%100)/10;
x3=(m%1000)/100;
x4=(m%10000)/1000;
x5=(m%10000)/10000;
x6=m/100000;
if(x1*x1*x1*x1*x1*x1+x2*x2*x2*x2*x2*x2+x3*x3*x3*x3*x3*x3+x4*x4*x4*x4*x4*x4+x5*x5*x5*x5*x5*x5+x6*x6*x6*x6*x6*x6==m)
{
printf("%ld\n",m);
flag
=
1;
}
m++;
}
if(flag
==
0)
{
printf("No
output.\n");
}
}
break;
}
return
0;
}
你if里面的判断有错,比如输入四位数的,你的判断为x1*x1*x1+x2*x2*x2+x3*x3*x3+x4*x4*x4==m,则每个为位置上的数的次方仅为3,应为x1*x1*x1*x1+x2*x2*x2*x2+x3*x3*x3*x3+x4*x4*x4*x4==m,这样才是4次方,其他位数时情况一样,要注意题目说的一个
“n”
位的正整数等于其各位数字的“
n”次方之和
#include stdio.h
#include math.h
int main(){
double sum(int m);
int m, n;
double res;
printf("输入两个正整数m和n\n");
scanf("%d %d", m, n);
for(m = 1; m = n; m++){
res = sum(m);
printf("%f\n", res);
}
return 0;
}
double sum(int m){
double i;
static double sum;
sum = 0.0;
for(i = 1; i = m; i++)
sum = sum + pow(i, 2);
return sum;
}
问题比较多,小的就不说了,你输出0的关键问题我说一下,在输出格式那里,应该用%f,而不是%d。其他小问题你对照我的程序再看一下吧。
可以用在math.h头文件中声明的pow()函数求,例如:
要求a的b次方,就用pow(a,b)即可。
^符号在C中是位异或操作符,不用于求乘方。
算法如下:
#include
float x;
int n,i;
float s=1.0;
void main()
{
printf("Please Input x:");
scanf("%f",x);
printf("Please Input num:");
scanf("%d",n);
if(n0)
printf("n must greater than 0.");
else if(n==0)
s=1;
else
{
for(i=1;i=n;i++)
{
s=s*x;
}
}
printf("%f\n",s);
}
C语言中计算x的n次方可以用库函数pow来实现。函数原型:double pow(double x, double n)。
具体的代码如下:
#include stdio.h
#include math.h
int main( )
{
printf("%f",pow(x,n));
return 0;
}
注:使用pow函数时,需要将头文件#includemath.h包含进源文件中。
扩展资料:
使用其他的方法得到x的n次方:
#includestdio.h
double power(double x,int n);
main( )
{
double x;
int n;
printf("Input x,n:");
scanf("%lf,%d",x,n);
printf("%.2lf",power(x,n));
}
double power(double x,int n)
{
double a=1.0;
int i;
for(i=1;i=n;i++)
a*=x;
return a;
}