首页 > 其他 > 详细

阿拉伯数字转化为罗马数字

时间:2014-08-21 17:21:04      阅读:400      评论:0      收藏:0      [点我收藏+]
<span style="font-size:18px;">#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ROWS 4
#define COLS 4
int nums[ROWS][COLS]={{1000,1000,1000,1000},{900,500,400,100},{90,50,40,10},{9,5,4,1}};
char *roms[ROWS][COLS]={{"m","m","m","m"},{"cm","d","cd","c"},{"xc","l","xl","x"},{"ix","v","iv","i"}};/*二维的数组指针*/
void judge(int num)//判断输入的数字是否在制定范围内
{
	if(num<1||num>9999)
	{
		printf("please input the right number!\n");
		exit(0);
	}
}
void trans(int num,char roman[])//将阿拉伯数字转化为罗马数字
{
	int i,j;
	roman[0]='\0';/*这一步是非常必要的,因为strcat函数将会找第一个字符串的'\0',找到之后将其去掉然后
	复制字符串,如果不初始化,第二个字符串的内容没法复制在第一个最后*/
	for(i=0;i<ROWS;i++)
	{
		for(j=0;j<COLS;j++)
		{
			while(num>=nums[i][j])/*设置为循环*/
			{
				printf("%s\n",roman);
				strcat(roman,roms[i][j]);
				num-=nums[i][j];
			}
		}
	}
}
void main(int argc,char *argv[])
{
	char roman[25];
	int low,high;
	if(argc<2)
	{
		printf("please input number!\n");
		exit(0);
	}
	low=high=atoi(argv[1]);//atoi函数就是将字符串转化为整数
	judge(low);
	if(argc>2)
	{
		high=atoi(argv[2]);//本程序最多只能成功接收三个字符串
		judge(high);
		if(low>high)
		{
			low=high;
			high=atoi(argv[1]);
		}
	}
	else 
		low=1;
	for(;low<=high;low++)
	{
		trans(low,roman);
		printf("%4d=%s\n",low,roman);
	}
}</span>
本程序在dos命令状态中输入文件路径和两个字符串(将会转化成整型),将会输出两个整数之间的所有阿拉伯数的罗马数字。

阿拉伯数字转化为罗马数字,布布扣,bubuko.com

阿拉伯数字转化为罗马数字

原文:http://blog.csdn.net/zxx150633/article/details/38730141

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!