VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 521|回复: 4

[求助] 课堂作业,求大神看下

[复制链接]
96_avatar_middle
在线会员 c787037542 发表于 2017-9-24 20:26:48 | 显示全部楼层 |阅读模式
3驿站币
课堂作业,输入两个罗马数字,进行四则运算,输出来也是罗马数字,求大神看下出现的很多错误怎么解决





上一篇:windows 用户 设置不登陆
下一篇:我想把这个功能单列出来

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

96_avatar_middle
ico_lz  楼主| c787037542 发表于 2017-9-24 20:28:30 | 显示全部楼层
#include <stdio.h>
#include <string.h>



int RomanStringToNum(char s);
char NumToRomanString(int num);
IsRomanString(char s);
GetRomanString();
int main()
{        char s[100];
        char p[100];
        int x=0,y=0,a=0,b=0,c=0,d=0;
        GetRomanString();
        if(IsRomanString(s)=1||IsRomanString(p)=1)
        printf("YOUR INPUT ISNOT ROMANNUMBER");
        else
        x=RomanStringToNum(s);
        y=RomanStringToNum(p);
        a=x+y;b=x-y;c=x*y;d=x/y;
        string a=NumToRomanString(a);
        string b=NumToRomanString(b);
        string c=NumToRomanString(c);
        string d=NumToRomanString(d);
        printf("加减乘除结果分别为%s,%s,%s,%s",a,b,c,d);
}

int RomanStringToNum(char s)
{        int Num = 0;  
        int RToN[256];  
        RToN['I'] = 1;  
        RToN['V'] = 5;  
        RToN['X'] = 10;  
                RToN['L'] = 50;
        RToN['C'] = 100;  
                RToN['D'] = 500;
        RToN['M'] = 1000;   
        for(int i = 0; i < s.length(); i++)
                {        if(i+1 >= s.length() || RToN[s[i+1]] <= RToN[s[i]])  
                Num+=RToN[s[i]];  
                        else  
                Num-=RToN[s[i]];   
        }  
        return Num;   
}



char NumToRomanString(int num)
{        if(num <= 0) return "YOUR INPUT IS WRONG";  
        char Roman[]= "";  
        static int number[13] = {1000, 900, 500, 400, 100,90, 50, 40, 10, 9, 5, 4, 1};  
        static char Romannumber[13] = {"M","CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};  
         
        for(int i = 0; i < 13 && num > 0; i++)  
                {        if(num < number[i]) continue;  
            while(num >= number[i])
                        {       num-=number[i];  
                    Roman+=Roman[i];  
                        }  
              
        }  
        return Roman;   
}

IsRomanString(char s)
{        for(int i=0;i<s.length();i++)
        if(s[i]='M'||s[i]='D'||s[i]='C'||s[i]='L'||s[i]='X'||s[i]='V'||s[i]='I')continue;
        return 0;
        else return 1;
}

GetRomanString()
{        printf("please input two ROMANNNUMBER");
        fgets(s,100,stdin);
        fgets(p,100,stdin);

}



这是代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2017-9-25 00:42:19 | 显示全部楼层

第一眼看到楼主定义的这个就有问题了:
static char Romannumber[13] = {"M","CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};  

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

39_avatar_middle
online_vip lm68140318 发表于 2017-9-25 17:50:52 | 显示全部楼层
老师  回来了?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-22 19:15

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表