3位数以内正常
应该如何修改 可以输出到7位数
#include <stdio.h>
#include<string.h>
char a[7];
int b[7];int c[7];
int main()
{int n;
int i,j,t,s;t=0;memset(c,10,sizeof(c));
gets(a);
s=strlen(a);j=0;
for(i=s-1;i>=0;i--)
{ b[i]=a[j]-'0';j++;//倒过来存
}
for(j=s-1;j>1;j--)
{ for(t=0;t<j-1;t++)
{ c[j] =c[j]*10; }//如c[ 2]=100;c[3]=1000;
} c[0]=1;n=0;c[1]=10;
for(i=s-1;i>=0;i--)
{ n=(b[i]*c[i])+n;
}
printf("%d",n) ; return 0;
}
求解
是要数字倒序么?1234->4321
这样:
#include <stdio.h>
#include<string.h>
char a[8];
int b[7];
//int c[8];
int main()
{
int n=0;
int i,j,t,s;t=1;
memset(b,0,sizeof(b));
gets(a);
s=strlen(a);j=0;
for(i=s-1;i>=0;i--)
{
b[j]=a[i]-'0';j++;//倒过来存
}
for(i=s-1;i>=0;i--)
{
n=n+b[i]*t;
t = t * 10;
}
printf("%d",n);
return 0;
}
如果仅仅是转换,不要倒序,1234->1234
这样写
#include <stdio.h>
#include<string.h>
char a[8];
int b[7];
//int c[8];
int main()
{
int n=0;
int i,j,t,s;t=1;
memset(b,0,sizeof(b));
gets(a);
s=strlen(a);j=0;
for(i=s-1;i>=0;i--)
{
b[j]=a[i]-'0';j++;//倒过来存
}
for(i=0;i<s;i++)
{
n=n+b[i]*t;
t = t * 10;
}
printf("%d",n);
return 0;
}
你应该是想要把 c数组中的所有值初始化成 10吧?
但是memset
是吧每个字节都赋值为10;一个int
为4个字节,因此数字是错的;
抱歉~能力有限看了很久也没有看出来到底哪里不对劲
找不到真正的错误原因~;
不过如果你想要做字符串转数字的话,下面这个或许可以;
#include <stdio.h>
#include <string.h>
int main()
{
char numStr[10]; //声明存储数字的字符串
memset(numStr, 0, sizeof(numStr));//初始化令字符串内容都为空
printf("pleace input num (less then 100000000)\n");
gets(numStr);//输入
int i = 0;
int num = 0;
for (i = 0; numStr[i] != 0;i++)
{
num *= 10;//第一次 为0*0 = 0
num += (numStr[i] - '0');
}
printf("num is : %d \n",num);
return 0;
}