c高手请进,我一个礼拜都没解决!求救!!

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:42:12
我编的程序是这样的:
#include<stdio.h>
main()
{int i,n,len,b[100],c[100],m;
float a[100],sum;
char str[100],*p;

Start:
printf("Please input a,b,c,....: ");
gets(str);
sum=0;
p=str;
len=strlen(str);
for (i=n=0; i<len; i++)
{if (str[i]==',') b[n++]=i;}
for (i=0; i<=n; i++) printf("%d ",b[i]);printf("\n");
for (i=0; i<=n; i++)
{sscanf(p,"%f",&a[i]);p=&str[b[i]+1];}
printf("\n");
for (i=0;i<=n;i++) printf("%g ",a[i]);printf("\n");
for (i=0; i<n+1; i++) sum=sum+a[i];
printf("sum=%g conut=%d",sum,n+1);
printf("\t\tEsc:End Any Key:Continue\n");
if (getch()!=27) goto Start;
}
我想要实现的功能是随便输入数字,数字中间用逗号(数量不限)隔开,要求按回车马上输出这些数字相加之和。
问题是,比如我输入1,,2,,3
得到的答案是:sum=6
按除esc外任意键后继续输入1,

你的程序我编绎都没通过,并且怎么说呢,不能说错,只能说很不好,
(1)C中最后不要用goto语句,很容易出问题;
(2)为什么要转换成浮点数呢,换成整数就可以了
(3)代码太不规范,也太多了,根据你的要求,根本用不了这么复杂,我自己写了个,你自己看看吧
#include<stdio.h>
#include<string.h>
void main()
{
int i,len,sum,n;
char str[100];
while(1)
{
printf("Please input a,b,c,....: ");
scanf("%s",str);
sum=0;
len=strlen(str);
i=0;
for (i=0; i<len; i++)
{
if(str[i]==',')
continue;
sum+=(str[i]-48);
}
printf("result is %d\n",sum);
printf("按0退出,其它键继续\n");
scanf("%d",&n);
if(n==0)
break;
}
}

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main() {
string line;
while (getline(cin, line)) {
for (unsigned i = 0; i < line.size(); ++i) if (line[i] ==