用c++写一个程序,它接收用4位阿拉伯数字表示的一个年份,输出用罗马数字表示的年份

一些重要的罗那数字包括:V代表5,X代表10,L代表50,C代表100,D代表500,M代表1000.记住某些数字是通过“减去”一个罗马“数字”而生成的;例如,IV代表4,它是通过V减I而生成的,XL代表40,CM代表900,以此类推,一些示范行的年份转换结果是:MCM代表1900,MCML代表1950,MCMLX代表1960,MCMXL代表1940,MCMLXXXIX代表1989,假定年份在1000~3000之间。你的程序应该包括一个循环,允许用户重复这一计算,直到他们表示操作完毕。

用笨办法--查表法:
注解掉的行是表格对应整型值 //d_v[],c_v[],b_v[],a_v[] 供你读程序时参考

#include <stdio.h>main(){char d_s[][5]={"","I","II","III","IV","V","VI","VII","VIII","IX"};//int d_v[]={0,1,2,3,4,5,6,7,8,9}; char c_s[][5]={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};//int c_v[]={0,10,20,30,40,50,60,70,80,90};char b_s[][5]={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};//int b_v[]={0,100,200,300,400,500,600,700,800,900};char a_s[][5]={"","M","MM","MMM"};//int a_v[]={0,1,2,3};int a=0,b=0,c=0,d=0;int y;printf("input year 1-2100\n");scanf("%d",&y);while(1){d = y %10;y = y / 10;if (y == 0) break;c = y %10;y = y / 10;if (y == 0) break;b = y %10;y = y / 10;if (y == 0) break;a = y %10;y = y / 10;break;}
//printf("%d%d%d%d\n",a,b,c,d);
printf("%s%s%s%s\n",a_s[a],b_s[b],c_s[c],d_s[d]); }
温馨提示:内容为网友见解,仅供参考
无其他回答

用c++写一个程序,它接收用4位阿拉伯数字表示的一个年份,输出用罗马数 ...
printf("%s%s%s\\n",a_s[a],b_s[b],c_s[c],d_s[d]); }

跪求:用c++或c 遍写 的将罗马数字转阿拉伯数字的程序代码,运行后输入一...
include<string.h> int did(char a){ if(a=='I') return 1;else if(a=='V') return 5;else if(a=='X') return 10;else if(a=='L') return 50;else if(a=='C') return 100;else if(a=='D') return 500;else if(a=='M') return 1000;else return 0;} int main(...

C++ 罗马数字与阿拉伯数字互相转化
{ static char *a[][10]={"","I","II","III","IV","V","VI","VII","VIII","IX","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"}; \/*建立对照表*\/ int n,t,i,m;printf("Please ...

请教编程技巧~~输出罗马数字的1到100~主要是格式问题
应该主要是阿拉伯数字不能和下边的罗马数字对齐?那你可以把阿拉伯数字按宽度输出啊 Nd就是把这个数按N位输出,不足的在前面加空格,你找找规律就能搞好的,至少个位数1-9用罗马数字表示所用的位数是好搞 哦,想起来一件事,好像有%*d这么一个输出格式,这个* 可以在后面的列表里变 ...

用C++设计一个类来表示ISBN
public:void set_isbn(string s){ isbnNum=s;} string get_isbn()const{return isbnNum;} bool check_isbn(string s);private:string isbnNum;};bool ISBN::check_isbn(string s){ int a[10];int sum=0;for(int i=0,j=0;s[i]!='\\0';i++){ if(s[i]>='0'&&s[i]<='9'|...

如何用c++实现字符串的ASCII编码?
如何用C++实现字符串的ASCII编码?1. 首先,需要包含iostream头文件,以便使用输入输出流对象。2. 使用`using namespace std;`语句,以简化代码中的标准命名空间符号。3. 定义`main`函数作为程序的入口点。4. 声明一个`char`类型的变量`ch`,用来存储用户输入的字符。5. 使用`cin`对象从标准输入获取...

c++怎样输出字符的ASCII码?
思路:先定义字符ch,输入字符,在把字符强制转换成整数就是该字符的ASCII码值,即int(ch)。参考代码: #include<iostream>using namespace std;int main(){char ch;cin>>ch;cout<<int(ch)<<endl;return 0;}\/*运行结果:A65*\/

罗马数字都是几到几啊?
用罗马数字表示数的基,该方法一般是把若干个罗马数字写成一列,它表示的数等于各个数字所表示的数相加的和。但是也有例外,当符号 I、X 或 C 位于大数的后面时就作为加数;位于大数的前面就作为减数。例如:Ⅲ=3、Ⅳ=4、Ⅵ=6、XIX=19、XX=20、XLV=45、MCMLXXX=1980。罗马数字因书写繁难,所以...

“ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ ”是什么意思?
这是罗马数字。用来表示阿拉伯数字中的一,二,三,四,五等等的。比如一是Ⅰ,二是Ⅱ,三是Ⅲ,四是Ⅳ,五是Ⅴ,六是Ⅵ,七是Ⅶ,八是Ⅷ,九是Ⅸ,十是Ⅹ。在五笔输入状态下,点开小键盘,再点一下数字序号就出来了。罗马数字是欧洲在阿拉伯数字(实际上是印度数字)传入之前使用的一种数码,...

\\0 的ASCII码值是多少
c语言中,\\0的ascii 码是0。数字的ASCII码<大写字母的ASCII码<小写字母的ASCII码。查询ASCII技巧,方便查询ASCII码对应的字符:新建一个文本文档,按住ALT+要查询的码值(注意,这里是十进制),松开即可显示出对应字符。例如:按住ALT+97,则会显示出'a'。ASCII基于拉丁字母的一套电脑编码系统,主要...

相似回答