| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 921 人关注过本帖, 1 人收藏
标题:请问一个小问题
取消只看楼主 加入收藏
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
结帖率:100%
收藏(1)
已结贴  问题点数:50 回复次数:4 
请问一个小问题
关于大数相加的   我知道这个问题你们会讨论很久了  我自己也做出一个,但很麻烦,比较难理解   请问谁有比较简单的算法吗??  这个是附属问题   

我真正想问的是  比如
char ch[30];
int i;
gets(ch);
i=strlen(ch);
如果我输入的ch个数>50;   如输入字符共70;   
我知道i会赋值为  70    怎么能让它继续运行下去  而不会运行出错呢?? 因为输入的超过了原来分配给ch[]的空间?
还有一个问题,一开始 我用的是  int num[n]=atoi(&ch[n]); n++;  我想这样直接把0~9的字符的转变为数字;但这样行不通,这是什么原因呢?

抱歉 一个贴就这么多小问题   谁能帮我解决一下吗?
           
搜索更多相关主题的帖子: 空间 
2010-09-16 12:19
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:0 
回复 4楼 遮天云
怎么说呢  个人认为那个还没有我做的好理解   
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
main()
{
    char n1[100],n2[100];
    int sum[102];


    int len1,len2;
    int max,min,t;
    int i=0;
    printf("输入第一个大数:");
    scanf("%s",n1);
    printf("输入第二个大数:");
    scanf("%s",n2);
    len1=strlen(n1);
    len2=strlen(n2);
    printf("第一个数有%d位\t num1=%s",len1,n1);
    printf("\n");
    printf("第二个数有%d位\t num2=%s",len2,n2);
    printf("\n");
    max=(len1>=len2)?len1:len2;
    min=(len1<=len2)?len1:len2;
    t=max;
    while (t>0)
    {
        len1--;
        len2--;
        if (min>0)            如果比较少位数的那个数还没有加完   那就继续加
            sum[t]=(n1[len1]-'0')+(n2[len2]-'0');
        else     如果加完了  那就把比较多位数的剩下的数都直接放在sum【】中去   但要先判断哪个数还有剩余
            if (len1>=len2)
                sum[t]=n1[len1]-'0';
            else sum[t]=n2[len2]-'0';

        min--;
        t--;
    }
    sum[0]=0;
    while (i<=max)    这儿才把每个sum[i] 判断是否大于10  进位的关系
    {
        while (sum[i]>=10)
        {

            sum[i]-=10;
            sum[--i]+=1;
        }
        i++;
    }
    i=(sum[0]==0)?1:0;
    printf("sum==");
    for (;i<=max;i++)
    {
        printf("%d",sum[i]);
    }
}

我想想你们说的倒叙怎么弄先   


还有啊   其实我的主要问题是后面的问题不懂    还请讲解讲解  比如说2楼说的动态分配空间是怎么回事?而且他也理解错了我的问题  我是想说怎么让它继续运行下去  输入的字符过大  会出现那叫什么问题的问题  反正是不能继续运行下去了   


还有他所说的单个字符转化??什么函数来的?


那个要更简单的运算法  我也会继续想的

谢谢啦  希望能回答我更多的疑问
2010-09-16 16:36
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:0 
回复 6楼 hahayezhe
你的这种是一种方法   但如果我只是想输入输出 一串字符的话可以更简单点
#include<stdio.h>
main()
{
    char ch;
    while ((ch=getchar())!='\n')
        printf("%c",ch);
}

getchar()利用键盘缓冲读入就可以了。
如果我要记共输入了多少字符  可以直接用个 int i在循环里面也可以。那我有点疑问了   我这种方法 char ch;到底最终分配了多少空间啊?
2010-09-16 20:12
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:0 
回复 7楼 重新分区
我的??我的在我这儿可以运行呀
2010-09-16 20:13
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:0 
回复 10楼 hahayezhe
  有机会能加我qq吗    有什么不懂的还望多多请教    qq770200799  
2010-09-17 23:35
快速回复:请问一个小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017370 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved