这个程序究竟错在哪了?

daition340 2004-11-21 09:42:54
输入一个不高于5位的正整数,要求输出共有几位,每位数字以及逆序数字(如果输入123,逆序数字为321)
main()
{long int s;int p,n[6],t,b;
printf("请输入1~99999之间的数字:");
scanf("%ld",&s);
for(p=0,b=1;;b*=10,p++)
if((t=s/b)!=0) n[p+1]=t%10;
else break;
printf("\n共有%d位数\n",p);
printf("每位数字为:");
for(b=p;b>0;b--)
printf("%5d",n[p]);
printf("\n逆序数字为:");
for(b=1;b<=p;b++)
printf("%d",n[p]);
printf("\n");
}

结果如下: 请输入1~99999之间的数字: 12345
共有5位数
每位数字为 1 1 1 1 1
逆序数字为11111
到底错了哪了????请大家帮忙看看~~~~~`
...全文
274 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
daition340 2004-11-23
  • 打赏
  • 举报
回复
这个程序本来是我粗心把 p 当成 b了,
不想诸位大GG给提出这么多的建议~~~~
小弟 谢过^_^
CatomyF 2004-11-22
  • 打赏
  • 举报
回复
huwen();

互文??
wangchongran 2004-11-22
  • 打赏
  • 举报
回复
我也是个新手,但你们为什么要把简单的问题复杂话!!!! 没事灌水!!嘿嘿!!
linandmin 2004-11-22
  • 打赏
  • 举报
回复
一个小程序,希望能给你点启发
======================================
#include<stdio.h>
void huwen()
{ int a,b,m,n,sum=0;
char c;

printf("enter a num\n");//输入数字,存放在n里
scanf("%d",&n);

for(a=1;a<n;a=a*10); //判断输入的数字共有几位
a=a/10;
m=n;

for(;n!=0;) //用sum存放n的逆序数
{b=n%10;
n=(n-b)/10;
sum=sum+a*b;
a=a/10;
}

if(sum==m) printf("the num is huwen\n");
else printf("the num is not huwen\n");
printf("play again?(y/n)\n");//再次判断,调用函数
scanf("%c",&c);
scanf("%c",&c);
if(c=='y')
huwen();

}
main()
{
huwen();

}

Popo_CN 2004-11-22
  • 打赏
  • 举报
回复
关注中
carylin 2004-11-22
  • 打赏
  • 举报
回复
我也写了一个,楼主看看
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdlib>
using namespace std;
int main()
{
int i;
do
{
cin >> i;
} while(i > 99999);

char buf[20];
string str(_itoa(i, buf, 10));
cout << static_cast<int>(str.size()) << endl;

reverse(str.begin(), str.end());
cout << str << endl;

return 0;
}
koalapheonix 2004-11-21
  • 打赏
  • 举报
回复
main()
{long int s;int p=0,n[6]={0},t,b=0;
printf("请输入1~99999之间的数字:");
scanf("%ld",&s);
while(s!=0){
n[b]=s%10;
printf("%d",n[b]);
s/=10;
b++;
}
cout<<"有"<<b<<"个数";

cout<<"反序列输出";
for(t=p-1;t>=0;t--)
printf("%d",n[t]);

}
上面的是C++程序
这个是C程序
koalapheonix 2004-11-21
  • 打赏
  • 举报
回复
#include<iostream.h>
#include<stdio.h>

void main()
{long int s;int p=0,n[6]={0},t,b=0;
printf("请输入1~99999之间的数字:");
scanf("%ld",&s);
while(s!=0){
n[b]=s%10;
cout<<n[b];
s/=10;
b++;
}
cout<<"有"<<b<<"个数";

cout<<"反序列输出";
for(t=p-1;t>=0;t--)
{cout<<n[t];}

}

cycxp4363 2004-11-21
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
long int s;
int p,n[6],t,b;
printf("请输入1~99999之间的数字:");
scanf("%ld",&s);
t=s;
for(p=0;;p++)
if(t!=0)
{
n[p+1]=t%10;
t=t/10;
}
else
break;
printf("\n共有%d位数\n",p);

printf("每位数字为:");

for(b=p;b>0;b--)
printf("%5d",n[b]);
printf("\n逆序数字为:");
for(b=1;b<=p;b++)
printf("%d",n[b]);
printf("\n");
}
dongyuanzhang 2004-11-21
  • 打赏
  • 举报
回复
写的不错,顶!
CatomyF 2004-11-21
  • 打赏
  • 举报
回复
#include<iostream.h>

void main()
{
unsigned long n,old_n,old_nn;
int i,count=0;
int *array;

while(n<1 || n>999999999)
{
cout<<"输入一个 1~999999999之间的数:";
cin>>n;
}
old_n=n;
old_nn=n;
for(;n>=1;)
{
n=n/10;
count++;
}
array=new int[count];
for(i=0;i<count;i++)
{
array[i]=old_n%10;
old_n=old_n/10;
}
cout<<"您输入的数是:"<<old_nn<<",它是一个"<<count<<"位数."<<endl;
cout<<"逆序数字是:";
for(i=0;i<count;i++)
cout<<array[i]<<" ";
cout<<endl;


}

这个是C++程序~
goodluckyxl 2004-11-21
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3571/3571762.xml?temp=.7443354
以后新手乐园会为大家整理一些知识点
如果看了 觉得有用 请顶下 谢谢
goodluckyxl 2004-11-21
  • 打赏
  • 举报
回复
//总体来说没有什么大错误
//结构修改的建议 n[6]这个固定位数存储 对于输入的数字有限制
//建议改成动态分配 可以考虑输入的内容当作字符串处理得到长度即位数来分配空间

void main()
{
long int s = 0;
int p = 0, n[6] = {0},t = 0, b = 0; //对所有的局部变量初始化是好习惯
printf("请输入1~99999之间的数字:");
scanf( "%ld", &s );
for( p = 0, b = 1; ; b *= 10, p++ )
if( ( t = s/b ) != 0 )
n[p] = t%10; //数组需要从0开始p+1你一开始就从1开始空掉n[0]不好的习惯 可能使用vb的吧
else break;
printf("\n共有%d位数\n",p);
printf("每位数字为:");
for( b = p-1; b >= 0; b-- )
printf( "%5d", n[b] ); //是n[b]不是n[p]因为p一直没有被改变
printf("\n逆序数字为:");
for( b = 0; b < p; b++ )
printf( "%d", n[b] ); //是n[b]不是n[p]因为p一直没有被改变
printf("\n");
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧