zoukankan      html  css  js  c++  java
  • kk Exercise 6.1 Convert an integer to words

    Exercise 6-1. write a program that will prompt for and read a positive integer less than
    1,000 from the keyboard, and then create and output a string that is the value of the
    integer in words. For example, if 941 is entered, the program will create the string "Nine
    hundred and forty one".

    //
    #define __STDC_WANT_LIB_EXT1__ 1
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
      char *unit_words[] = {"zero", "one","two","three","four","five","six","seven","eight","nine"};
      char *teen_words[] = {"ten", "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
      char *ten_words[] = {"error", "error","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
      
      
      //上面的是什么意思?
      
      char hundred[] = " hundred";
      char and[] = " and ";         //就是这个字符。 and字符串有5+1个字符,其中一个是结束字符。
      
      char value_str[50] = "";
      int value = 0;                     // Integer to be converted
      int digits[] = {0,0,0};            // 这是什么意思?digit这个数组里面有三个值?
      int i = 0;
    
      printf("Enter a positive integer less than 1000: ");
      scanf_s("%d",&value);
      if(value >= 1000)
        value = 999;
      else if(value < 1)
        value = 1;//为什么不直接显示错误,而要非执行这个区间的值
    
      while(value > 0)
      {
        digits[i++] = value % 10;//求得各位数!
        value /= 10;//十位以上的数字
      }
    
      if(digits[2] > 0)
      {
        strcat_s(value_str, sizeof(value_str), unit_words[digits[2]]);// unit_WORDS[digits[2]]这是什么意思?圆程序?
        strcat_s(value_str, sizeof(value_str), hundred);
        if(digits[1] > 0 || digits[0] > 0)
          strcat_s(value_str, sizeof(value_str), and);
      }
      if(digits[1] > 0)
      {
        if(digits[1] == 1)
          strcat_s(value_str, sizeof(value_str), teen_words[digits[0]]);
        else
        {
          strcat_s(value_str,sizeof(value_str), ten_words[digits[1]]);
          if(digits[0] > 0)
          {
            strcat_s(value_str, sizeof(value_str), " ");
            strcat_s(value_str, sizeof(value_str), unit_words[digits[0]]);
          }
        }
      }
      else
        if(digits[0] > 0)
          strcat_s(value_str, sizeof(value_str), unit_words[digits[0]]);
          
        //最终一步到位的输出,程序相当简洁,上面的构思巧妙
      printf("
    %s
    ", value_str);
      return 0;
    }
  • 相关阅读:
    模拟75 题解
    模拟74 题解
    模拟73 题解
    模拟72 题解
    前端学习:html基础学习二
    前端学习:html基础学习一
    JavaScrip:Function函数编程
    MYSQL:RELPACE用法
    MYSQL:插入记录检查记录是否存在,存在则更新,不存在测插入记录SQL
    OpenCASCADE Curve Length Calculation
  • 原文地址:https://www.cnblogs.com/xiaomi5320/p/4190776.html
Copyright © 2011-2022 走看看