zoukankan      html  css  js  c++  java
  • 如何使用C写一个现实对应1~100罗马数字的程序?

    今天在做一道课后练习题的时候遇到这么一道棘手的题?先到网上搜罗了一下关于罗马数字的相关知识,熟悉了一下罗马数字的写法。然后还是没有想出来。借鉴了一位网友的思想,他是使用Java编写的,代码非常简洁。他的思想是从罗马数字中找到规律1-3是I, 4是IV, 5是V....其实1-100中只存在几个特殊的区间,然后分别追加。我看了个半懂,开始用C编写。
    思路:找到1-100间的特殊区间,使用if语句判断输入的数字是否在这个区间,如果在就减去这个区间最小值给这个数字(比如区间1-3,如果输入3,则3-1=2,把2给需下一次判断的值)然后循环再判断,直到这个值为0。
    下边是我写的代码,欢迎各位朋友指点。
     1#include <stdio.h>
     2
     3int main()
     4{
     5    int digit = 1;
     6    int roman;
     7    
     8    while ( digit <= 100 )
     9    {
    10        printf( "%d\t", digit );
    11        roman = digit;
    12        
    13        while ( roman > 0 )
    14        {
    15            if ( roman == 100 )
    16            {
    17                printf( "C" );
    18                roman -= 100;
    19            }

    20            else if ( roman < 100 && roman >= 90 )
    21            {
    22                printf( "XC" );
    23                roman -= 90;
    24            }

    25            else if ( roman < 90 && roman >= 50 )
    26            {
    27                printf( "L" );
    28                roman -= 50;
    29            }

    30            else if ( roman < 50 && roman >= 49 )
    31            {
    32                printf( "IL" );
    33                roman -= 49;
    34            }

    35            else if ( roman < 49 && roman >= 40 )
    36            {
    37                printf( "XL" );
    38                roman -= 40;
    39            }

    40            else if ( roman < 40 && roman >= 10 )
    41            {
    42                printf( "X" );
    43                roman -= 10;
    44            }

    45            else if ( roman < 10 && roman >= 9 )
    46            {
    47                printf( "IX" );
    48                roman -= 9;
    49            }

    50            else if ( roman < 9 && roman >= 5 )
    51            {
    52                printf( "V" );
    53                roman -= 5;
    54            }

    55            else if ( roman < 5 && roman >= 4 )
    56            {
    57                printf( "IV" );
    58                roman -= 4;
    59            }

    60            else if ( roman < 4 && roman >= 1 )
    61            {
    62                printf( "I" );
    63                roman -= 1;
    64            }

    65            else
    66                printf( "must between 1~100 !" );
    67        }

    68
    69        printf( "\n" );
    70        digit++;
    71    }

    72    return 0;
    73}

  • 相关阅读:
    并发容器和框架之ConcurrentHashMap
    Java的LockSupport工具,Condition接口和ConditionObject
    从源码来看ReentrantLock和ReentrantReadWriteLock
    VMWARE虚拟机上Terminal中使用sudo出现”** 不在sudoers文件中,此事将被警告 “错误
    mac下idea运行项目慢问题解决
    Idea 只修改编辑区主题
    redis内部数据结构的数据结构
    mysql存储过程详解
    HashMap中resize()剖析
    谈Redis的refash的增量式扩容
  • 原文地址:https://www.cnblogs.com/iPeterRex/p/1242620.html
Copyright © 2011-2022 走看看