2007年第8期编程点将台

来源:互联网 发布:日本食玩包邮淘宝 编辑:程序博客网 时间:2024/05/16 13:14

将1到1000的阿拉伯数字转换为罗马数字

源程序如下所示:
#include<stdio.h>
char c[3][3]={{'I','V','X'},{'X','L','C'},{'C','D','M'}};

void convert(int temp,int i){
    
 switch(temp){
 case 0:
  break;
 case 1:
  printf("%c",c[2-i][0]);
  break;
 case 2:
  printf("%c%c",c[2-i][0],c[2-i][0]);
  break;
 case 3:
  printf("%c%c%c",c[2-i][0],c[2-i][0],c[2-i][0]);
  break;
 case 4:
  printf("%c%c",c[2-i][0],c[2-i][1]);
  break;
 case 5:
  printf("%c",c[2-i][1]);
  break;
 case 6:
  printf("%c%c",c[2-i][1],c[2-i][0]);
  break;
 case 7:
  printf("%c%c%c",c[2-i][1],c[2-i][0],c[2-i][0]);
  break;
 case 8:
  printf("%c%c%c%c",c[2-i][1],c[2-i][0],c[2-i][0],c[2-i][0]);
  break;
    default:
  printf("%c%c",c[2-i][0],c[2-i][2]);
  break;
 }
}

main()
{
 int i,input,n,temp;
 int k[3]={0,0,0};
 int m[3]={100,10,1};
 printf("Input a integer from 0 to 1000:");
 scanf("%d",&input);
 n=input;
 if(n<0||n>1000)
  printf("Please input a integer between 0 and 1000/n");
 else if(n==1000)
  printf("  Bingo!  1000 convert to Roman numeral is ");
 
 else{
  printf("  Bingo!  %d convert to Roman numeral is ",n);
  for(i=0;i<3;i++){
   k[i]=(n-100*k[0]-10*k[1])/m[i];
   temp=k[i];
   convert(temp,i);
  }
 }
 printf("/n");
}

 

原创粉丝点击