C语言问题,求大神解决!!!
给一个不多于5位的正整数,求:1,它是几位数2,分别输出每一位数字3,按逆序输出每一位数字为什么我每次运行后输出的都是0,00000,00000呢?#include<st...
给一个不多于5位的正整数,求:
1,它是几位数
2,分别输出每一位数字
3,按逆序输出每一位数字
为什么我每次运行后输出的都是0,00000,00000呢?
#include<stdio.h>
#include<math.h>
main()
{
double s;
double a,b,c,d,e,place;
printf("input a number:");
scanf("%d",&s);
a=floor(s/10000);
b=floor(s/1000-a*10);
c=floor(s/100-a*100-b*10);
d=floor(s/10-a*1000-b*100-c*10);
e=floor(s-a*10000*b*1000-c*100-d*10);
if(a!=0)
place=s;
else {if(b!=0)
place=4;
else {if(c!=0)
place=3;
else {if(d!=0)
place=2;
else
place=1;}}}
printf("the place is:%d\n",place);
printf("shun xu is:%d%d%d%d%d\n",a,b,c,d,e);
printf("ni xu si:%d%d%d%d%d\n",e,d,c,b,a);
return 0;
}
懂了!!!谢谢大家支持!!!
不过还有个让我纠结的小问题……
我自己改过后的同一个程序,我用TC运行出来的结果是错的,发给一个学软件的哥们用VC2000运行出来又是对的,为神马呢? 展开
1,它是几位数
2,分别输出每一位数字
3,按逆序输出每一位数字
为什么我每次运行后输出的都是0,00000,00000呢?
#include<stdio.h>
#include<math.h>
main()
{
double s;
double a,b,c,d,e,place;
printf("input a number:");
scanf("%d",&s);
a=floor(s/10000);
b=floor(s/1000-a*10);
c=floor(s/100-a*100-b*10);
d=floor(s/10-a*1000-b*100-c*10);
e=floor(s-a*10000*b*1000-c*100-d*10);
if(a!=0)
place=s;
else {if(b!=0)
place=4;
else {if(c!=0)
place=3;
else {if(d!=0)
place=2;
else
place=1;}}}
printf("the place is:%d\n",place);
printf("shun xu is:%d%d%d%d%d\n",a,b,c,d,e);
printf("ni xu si:%d%d%d%d%d\n",e,d,c,b,a);
return 0;
}
懂了!!!谢谢大家支持!!!
不过还有个让我纠结的小问题……
我自己改过后的同一个程序,我用TC运行出来的结果是错的,发给一个学软件的哥们用VC2000运行出来又是对的,为神马呢? 展开
11个回答
展开全部
重新给你写了一个 楼主参考一下吧 你那个功能 有点太狭隘了
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int max;
int i=0;
int copymax;
int *B;// 留着备用 存储 倒叙输出
int B_num; //记录数组B的长度
printf("请输入一个大数\n");
scanf("%d",&max);
while(max>=100000)
{
printf("输入错误 请输入五位数\n");
scanf("%d",&max);
}
printf("这个大数为: %d\n",max);
copymax=max; //将max 拷贝给copymax 用copymax去确定 这个大数 是几位数
for(i=0;copymax!=0;i++)
{
copymax=copymax/10;
}
printf("这个大数为 %d 位数\n",i);
B=(int *)malloc(sizeof(i)); //动态的为B 申请一块长度为i的空间
B_num=i; //将i作为数组的长度
printf("正序应该这样去读\n");
for(i;i!=0;i--)
{
int j;
j=max/(int)(pow(10,i-1)); //将大数的 最高为 存储到j中
max=max%(int)(pow(10,i-1)); //将大数最高位去掉
printf("%d\n",j); //将 j输出 j为 应该读取的 数
B[i-1]=j; //将数组 倒着存储到数组中
}
printf("倒叙输出为:\n");
for(i=0;i<B_num;i++)
{
printf("%d\n",B[i]);
}
}
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int max;
int i=0;
int copymax;
int *B;// 留着备用 存储 倒叙输出
int B_num; //记录数组B的长度
printf("请输入一个大数\n");
scanf("%d",&max);
while(max>=100000)
{
printf("输入错误 请输入五位数\n");
scanf("%d",&max);
}
printf("这个大数为: %d\n",max);
copymax=max; //将max 拷贝给copymax 用copymax去确定 这个大数 是几位数
for(i=0;copymax!=0;i++)
{
copymax=copymax/10;
}
printf("这个大数为 %d 位数\n",i);
B=(int *)malloc(sizeof(i)); //动态的为B 申请一块长度为i的空间
B_num=i; //将i作为数组的长度
printf("正序应该这样去读\n");
for(i;i!=0;i--)
{
int j;
j=max/(int)(pow(10,i-1)); //将大数的 最高为 存储到j中
max=max%(int)(pow(10,i-1)); //将大数最高位去掉
printf("%d\n",j); //将 j输出 j为 应该读取的 数
B[i-1]=j; //将数组 倒着存储到数组中
}
printf("倒叙输出为:\n");
for(i=0;i<B_num;i++)
{
printf("%d\n",B[i]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
main()
{
int s;
int a,b,c,d,e,place;
printf("input a number:");
scanf("%d",&s);
a=(s/10000);
b=(s/1000-a*10);
c=(s/100-a*100-b*10);
d=(s/10-a*1000-b*100-c*10);
e=(s-a*10000-b*1000-c*100-d*10);
if(a!=0)
place=s;
else {if(b!=0)
place=4;
else {if(c!=0)
place=3;
else {if(d!=0)
place=2;
else
place=1;}}}
printf("the place is:%d\n",place);
printf("shun xu is:%d %d %d %d %d\n",a,b,c,d,e);
printf("ni xu si:%d %d %d %d %d\n",e,d,c,b,a);
return 0;
}
//已经改过,你自己对照下吧
#include<math.h>
main()
{
int s;
int a,b,c,d,e,place;
printf("input a number:");
scanf("%d",&s);
a=(s/10000);
b=(s/1000-a*10);
c=(s/100-a*100-b*10);
d=(s/10-a*1000-b*100-c*10);
e=(s-a*10000-b*1000-c*100-d*10);
if(a!=0)
place=s;
else {if(b!=0)
place=4;
else {if(c!=0)
place=3;
else {if(d!=0)
place=2;
else
place=1;}}}
printf("the place is:%d\n",place);
printf("shun xu is:%d %d %d %d %d\n",a,b,c,d,e);
printf("ni xu si:%d %d %d %d %d\n",e,d,c,b,a);
return 0;
}
//已经改过,你自己对照下吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你的基础上改了改 你看看吧!
#include<stdio.h>
#include<math.h>
main()
{
long s;
int a,b,c,d,e,place;
printf("input a number:");
scanf("%d",&s);
a=(s/10000);
b=(s%10000/1000);
c=(s%1000/100);
d=(s%100/10);
e=(s%10);
if(a!=0)
place=5;
else if(b!=0)
place=4;
else if(c!=0)
place=3;
else if(d!=0)
place=2;
else
place=1;
printf("the place is:%d\n",place);
switch(place)
{
case 5: printf("shun xu is:%d%d%d%d%d\n",a,b,c,d,e);
printf("ni xu si:%d%d%d%d%d\n",e,d,c,b,a);break;
case 4: printf("shun xu is:%d%d%d%d\n",b,c,d,e);
printf("ni xu si:%d%d%d%d\n",e,d,c,b);break;
case 3: printf("shun xu is:%d%d%d\n",c,d,e);
printf("ni xu si:%d%d%d\n",e,d,c);break;
case 2: printf("shun xu is:%d%d\n",d,e);
printf("ni xu si:%d%d\n",e,d);break;
case 1: printf("shun xu is:%d\n",e);
printf("ni xu si:%d\n",e);break;
default:break;
}
return 0;
}
#include<stdio.h>
#include<math.h>
main()
{
long s;
int a,b,c,d,e,place;
printf("input a number:");
scanf("%d",&s);
a=(s/10000);
b=(s%10000/1000);
c=(s%1000/100);
d=(s%100/10);
e=(s%10);
if(a!=0)
place=5;
else if(b!=0)
place=4;
else if(c!=0)
place=3;
else if(d!=0)
place=2;
else
place=1;
printf("the place is:%d\n",place);
switch(place)
{
case 5: printf("shun xu is:%d%d%d%d%d\n",a,b,c,d,e);
printf("ni xu si:%d%d%d%d%d\n",e,d,c,b,a);break;
case 4: printf("shun xu is:%d%d%d%d\n",b,c,d,e);
printf("ni xu si:%d%d%d%d\n",e,d,c,b);break;
case 3: printf("shun xu is:%d%d%d\n",c,d,e);
printf("ni xu si:%d%d%d\n",e,d,c);break;
case 2: printf("shun xu is:%d%d\n",d,e);
printf("ni xu si:%d%d\n",e,d);break;
case 1: printf("shun xu is:%d\n",e);
printf("ni xu si:%d\n",e);break;
default:break;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
main()
{
int s;
int i;
int arr[5],place;
int num=0;
printf("input a number:");
scanf("%d",&s);
arr[0]=s/10000;
arr[1]=(s-arr[0]*10000)/1000;
arr[2]=(s-arr[0]*10000-arr[1]*1000)/100;
arr[3]=(s-arr[0]*10000-arr[1]*1000-arr[2]*100)/10;
arr[4]=s-arr[0]*10000-arr[1]*1000-arr[2]*100-arr[3]*10;
for(i=0;i<5;i++)
{
if(arr[i]!=0)
{
num=5-i;
break;
}
}
printf("the num is:%d\n",num);
printf("shun xu is:");
for(i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n");
printf("ni xu si:");
for(i=4;i>=0;i--)
printf("%d ",arr[i]);
printf("\n");
return 0;
}
你试试这个
#include<math.h>
main()
{
int s;
int i;
int arr[5],place;
int num=0;
printf("input a number:");
scanf("%d",&s);
arr[0]=s/10000;
arr[1]=(s-arr[0]*10000)/1000;
arr[2]=(s-arr[0]*10000-arr[1]*1000)/100;
arr[3]=(s-arr[0]*10000-arr[1]*1000-arr[2]*100)/10;
arr[4]=s-arr[0]*10000-arr[1]*1000-arr[2]*100-arr[3]*10;
for(i=0;i<5;i++)
{
if(arr[i]!=0)
{
num=5-i;
break;
}
}
printf("the num is:%d\n",num);
printf("shun xu is:");
for(i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n");
printf("ni xu si:");
for(i=4;i>=0;i--)
printf("%d ",arr[i]);
printf("\n");
return 0;
}
你试试这个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在VC6++中测试通过
#include<stdio.h>
#include<math.h>
main()
{
int s,place;
int a,b,c,d,e;
printf("input a number:");
scanf("%d",&s);
a=s/10000;
b=s/1000-a*10;
c=s/100-a*100-b*10;
d=s/10-a*1000-b*100-c*10;
e=s-a*10000-b*1000-c*100-d*10;
if(a!=0)
place=s;
else {if(b!=0)
place=4;
else {if(c!=0)
place=3;
else {if(d!=0)
place=2;
else
place=1;}}}
printf("the place is:%d\n",place);
printf("shun xu is:%d%d%d%d%d\n",a,b,c,d,e);
printf("ni xu is:%d%d%d%d%d\n",e,d,c,b,a);
return 0;
}
#include<stdio.h>
#include<math.h>
main()
{
int s,place;
int a,b,c,d,e;
printf("input a number:");
scanf("%d",&s);
a=s/10000;
b=s/1000-a*10;
c=s/100-a*100-b*10;
d=s/10-a*1000-b*100-c*10;
e=s-a*10000-b*1000-c*100-d*10;
if(a!=0)
place=s;
else {if(b!=0)
place=4;
else {if(c!=0)
place=3;
else {if(d!=0)
place=2;
else
place=1;}}}
printf("the place is:%d\n",place);
printf("shun xu is:%d%d%d%d%d\n",a,b,c,d,e);
printf("ni xu is:%d%d%d%d%d\n",e,d,c,b,a);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询