| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:程序错了错了·求解求解~~~
只看楼主 加入收藏
rayOMG
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-10-9
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:19 
程序错了错了·求解求解~~~
唉我就是个杯具 晕死

求各位看看

帮帮改改

谢谢咯
程序代码:
//分段函数

/*
计算:
result=1+2+...+i;(0<=i<=5)
result=100-i-(i-1)-...-1;(5<i<=10)
result=i*i;(i>10)
*/

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
     printf("此程序用于计算分段函数:\n\n");
     printf("result=1+2+...+i (1<=i<=5)\n");
     printf("result=100-i-(i-1)-...-1 (5<i<=10)\n");
     printf("result=i*i (i>10)\n");
     printf("注意:自变量应为正整数。\n\n");
     

     while(1)
     {
             double t=10;
             int i,j,k=1,result=0,n,m;
             char option,count[20];
             printf("——请输入一个正整数:\n");
             while(count[i]!=0x0d
            {
                         count[k]=getche();
                         if(count[k]<'0'||count[k]>'9')
                         {
                              printf("无效数据!请重新输入!按任意键继续.\n\n");
                              getch();
                              goto continue1;
                         }
                         k++;
             }
            
            
             m=k;
            
             for(n=1;n<=k;n++)
             {
                         i+=((count[n]-48)*(int)pow(t,(double)(m-1)));
                         m--;
             }
                        
                        
                         
            
             if(i==0)goto continue1;
                                         
             if(i<=5&&i>=1)
             for(j=1;j<=i;j++)
             result+=j;
            
             else if(i>10)
             result=i*i;
                                   
            
             else
             {
                 result=100;
                 for(j=i;j>=1;j--)
                 result-=j;
             }
             printf("函数值为%d\n\n",(int)result);
            
             while(1)
             {
            
                 printf("您希望:\n");
                 printf("[1] 退出程序\n");
                 printf("[2] 重新计算\n\n");
                
                 option=getch();
                 if(option=='1')
                 goto quit;
                 else if(option=='2')
                 goto continue1;
                 else
                 {
                     printf("输入错误!请重新选择!\n\n");
                     continue;
                 }
             }
             continue1:continue;
             quit:break;
     }
}


 
搜索更多相关主题的帖子: 求解 
2010-10-11 17:37
rayOMG
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-10-9
收藏
得分:0 
我实在是找不到办法了
2010-10-11 17:48
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:20 
帮你改了一下!
程序代码:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
    printf("此程序用于计算分段函数:\n\n");
    printf("result=1+2+...+i (1<=i<=5)\n");
    printf("result=100-i-(i-1)-...-1 (5<i<=10)\n");
    printf("result=i*i (i>10)\n");
    printf("注意:自变量应为正整数。\n\n");


    while(1)
    {
        double t=10;
        int i=0,j,k=1,result=0,n,m;
        char option,count[20];
        printf("——请输入一个正整数:\n");
        while((count[k]=getche())&&(count[k]!=0x0d))
        {
            if(count[k]<'0'||count[k]>'9')
            {
                printf("无效数据!请重新输入!按任意键继续.\n\n");
                getch();
                goto continue1;
            }
            k++;
        }
        m=k;
    for(n=1;n<=k;n++)
    {
        i+=((count[n]-48)*(int)pow(t,(double)(m-1)));
        m--;
    }
    if(i==0)goto continue1;
    if(i<=5&&i>=1)
        for(j=1;j<=i;j++)
            result+=j;
    else if(i>10)
        result=i*i;
    else
    {
        result=100;
        for(j=i;j>=1;j--)
            result-=j;
    }
    printf("\n\n函数值为\n%d\n\n",(int)result);

    while(1)
    {

        printf("您希望:\n");
        printf("[1] 退出程序\n");
        printf("[2] 重新计算\n\n");

        option=getch();
        if(option=='1')
            goto quit;
        else if(option=='2')
            goto continue1;
        else
        {
            printf("输入错误!请重新选择!\n\n");
            continue;
        }
    }
continue1:continue;
quit:break;
}
}


If You Want Something, Go Get It, Period.
2010-10-11 19:48
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
按回车结束输入!

If You Want Something, Go Get It, Period.
2010-10-11 19:49
rayOMG
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-10-9
收藏
得分:0 
感谢啊~又见你了~呵呵 我试试
2010-10-11 20:03
rayOMG
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-10-9
收藏
得分:0 
请问~~~~~为什么count[k]=getche()写到while()的括号里就能使程序按回车结束了呢??
2010-10-11 20:30
rayOMG
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-10-9
收藏
得分:0 
计算还是出错。。。不明白了

图片:
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-10-11 20:34
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
count[k]!=0x0d 使程序结束的啊 !0x0d 表示回车。count[k]=getche()是输入!

If You Want Something, Go Get It, Period.
2010-10-11 20:34
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
    printf("此程序用于计算分段函数:\n\n");
    printf("result=1+2+...+i (1<=i<=5)\n");
    printf("result=100-i-(i-1)-...-1 (5<i<=10)\n");
    printf("result=i*i (i>10)\n");
    printf("注意:自变量应为正整数。\n\n");


    while(1)
    {
        double t=10;
        int i=0,j,k=1,result=0,n,m;
        char option,count[20];
        printf("——请输入一个正整数:\n");
        while((count[k]=getche())&&(count[k]!=0x0d))
        {
            if(count[k]<'0'||count[k]>'9')
            {
                printf("无效数据!请重新输入!按任意键继续.\n\n");
                getch();
                goto continue1;
            }
            k++;
        }
        m=k-1;    //改动了
    for(n=1;n<k;n++)  //改动了,仔细想想,不懂可以问的
    {
        i+=((count[n]-48)*(int)pow(t,(double)(m-1)));
        m--;
    }
    if(i==0)goto continue1;
    if(i<=5&&i>=1)
        for(j=1;j<=i;j++)
            result+=j;
    else if(i>10)
        result=i*i;
    else
    {
        result=100;
        for(j=i;j>=1;j--)
            result-=j;
    }
    printf("\n\n函数值为\n%d\n\n",(int)result);

    while(1)
    {

        printf("您希望:\n");
        printf("[1] 退出程序\n");
        printf("[2] 重新计算\n\n");

        option=getch();
        if(option=='1')
            goto quit;
        else if(option=='2')
            goto continue1;
        else
        {
            printf("输入错误!请重新选择!\n\n");
            continue;
        }
    }
continue1:continue;
quit:break;
}
}


刚才没看你的算法,只帮你改错,这时好了,结果是正确的!

If You Want Something, Go Get It, Period.
2010-10-11 20:40
rayOMG
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-10-9
收藏
得分:0 
写到大括号里不行么??????????????????
2010-10-11 20:40
快速回复:程序错了错了·求解求解~~~
数据加载中...
 
   



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

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