| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:求教该怎么退出循环
只看楼主 加入收藏
zhlianghai
Rank: 2
等 级:论坛游民
帖 子:30
专家分:54
注 册:2012-12-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求教该怎么退出循环
原题是

给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
 现在请计算A+B的结果,并以正常形式输出。

输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
这个是我写的,不知道退出循环的条件该怎么写,求指教
程序代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
long pows(int x);
long scanft(void);
int main(void)
{
    long a,b;
    a=scanft();
    b=scanft();
    while(1)
    {
        printf("%ld\n",a+b);
        a=scanft();
        b=scanft();
    }
    return 0;
}
long pows(int x)
{
    int a,n=10;
    if(x==0)
        n=1;
    else for(a=1;a<x;a++)
        n*=10;
    return n;
}
long scanft(void)
{
    char num[14];
    long n=0;
    int a,b=0;
    scanf("%s",num);
    a=strlen(num);
    while(a-->0)
    {
        if(isdigit(num[a]))
            n+=(num[a]-'0')*pows(b++);
    }
    if(num[0]=='-')
        n=-n;
    return n;
}

搜索更多相关主题的帖子: color 
2013-02-18 10:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
代码比较工整

DO IT YOURSELF !
2013-02-18 11:17
shelltonWU
Rank: 2
等 级:论坛游民
帖 子:16
专家分:66
注 册:2013-2-15
收藏
得分:0 
这样试试:不返回long型。返回字符串。在主函数里判断并处理(atoi)。在scanft中判断输入的是不是eof。是的话特殊处理字符串。手机,试不了。。。

一切为了明天。
2013-02-18 11:19
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:18 
while( scanf(...)!=EOF )
即可,并且把scanft()修改为从字符串读入
2013-02-18 13:23
zhlianghai
Rank: 2
等 级:论坛游民
帖 子:30
专家分:54
注 册:2012-12-25
收藏
得分:0 
回复 4楼 心灯甚亮
不行的,现在是runtime error。
程序代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
long pows(int x);
long scanft(char *str);
int main(void)

 {
     long a,b;
     char stra[15],strb[15];
     while(scanf("%s %s",stra,strb)!=EOF)
     {
         a=scanft(stra);
         b=scanft(strb);
         printf("%ld\n",a+b);
     }
     return 0;

 }
long pows(int x)

 {
     int a,n=10;
     if(x==0)
         n=1;
     else for(a=1;a<x;a++)
         n*=10;
     return n;

 }
long scanft(char *str)

 {
     long n=0;
     int a,b=0;
     a=strlen(str);
     while(a-->0)
     {
         if(isdigit(str[a]))
             n+=(str[a]-'0')*pows(b++);
     }
     if(str[0]=='-')
         n=-n;
     printf("%n=ld",n);
     return n;

 }


 
2013-02-19 10:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:2 
5楼,你的 printf("%n=ld",n); 是不是写错了?应当是 %ld
2013-02-19 10:45
zhlianghai
Rank: 2
等 级:论坛游民
帖 子:30
专家分:54
注 册:2012-12-25
收藏
得分:0 
回复 6楼 rjsp
谢谢了,刚才试的时候忘删了那一行
2013-02-19 10:56
快速回复:求教该怎么退出循环
数据加载中...
 
   



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

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