pat 乙级 1002 写出这个数(C++)
生活随笔
收集整理的這篇文章主要介紹了
pat 乙级 1002 写出这个数(C++)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入與輸出
輸入格式:
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這里保證 n 小于 10^?100?? 。
輸出格式:
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最后一個拼音數字后沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
分析
簡要分析
從n的給值來看,遠遠超出long long int類型的數據范圍。而求的是各位的數字之和,然后再用拼音輸出。所以,考慮用字符串的的方式存儲n。
解決方案
getchar函數正好滿足需求
使用不同的編程語言,需要不同頭文件。
C
#include<stdio.h>C++
#include<cstdio>AC代碼
#include<iostream> #include<cstdlib> #include<cstdio> using namespace std; void print_pinyin(int x) {switch(x){case 0: cout<<"ling";break;case 1: cout<< "yi";break;case 2:cout<<"er";break;case 3:cout<<"san";break;case 4:cout<<"si";break;case 5:cout<<"wu";break;case 6:cout<<"liu";break;case 7:cout<<"qi";break;case 8:cout<<"ba";break;case 9:cout<<"jiu";break;default:break;}} int main() {int i,x,sum=0;char n;while((n=getchar())!='\n'){sum=sum+(n-'0');//字符-'0':字符隱性轉換為整數}int temp=0;int x1=sum;while(x1!=0){temp++;x1=x1/10;}int *a=(int *)malloc(temp*sizeof(int));for(i=temp-1;i>=0;i--){a[i]=sum%10;sum=sum/10;}for(i=0;i<temp;i++){print_pinyin(a[i]);if(i!=(temp-1)){cout<<" ";}}return 0; }更多題解
pat 乙級 題解匯總(持續更新)(C++)
總結
以上是生活随笔為你收集整理的pat 乙级 1002 写出这个数(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pat 乙级 1001 害死人不偿命的(
- 下一篇: 俞敏洪东方甄选直播间带货北京特产 5分钟