200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > textarea限制字符数_PAT乙级-1002 写出这个数

textarea限制字符数_PAT乙级-1002 写出这个数

时间:2024-03-21 22:45:46

相关推荐

textarea限制字符数_PAT乙级-1002 写出这个数

PAT乙级-1002 写出这个数

本文作者:Shen,JQ

来源 /problem-sets/994805260223102976/problems/99480532450984

作者CHEN, Yue

单位 浙江大学

代码长度限制 16 KB

时间限制 400 ms

内存限制 64 MB

PAT乙级-1002 写出这个数

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

代码:

/** * 总体思路: * 1、使用字符串接收输入的数组 * 2、循环获取每位的字符,转为整数,相加 * 3、将相加结果转为字符串 * 4、循环字符串,将每位字符转为整数,用于取拼音的下标 * 5、输出 **/#include #include //strlenint main(){ //数字拼音化数组,0-9 char shuzi[10][5] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"}; //读入所有的数字,由于输入的数字很长,所有考虑使用字符串方式读入 //题目说不会超过100位数,所以留点余量定义了105个空间的数组 char words[105] = {'0'}; //获取输入数字,%s为以字符串方式获取,存储至words,此处可以不加&,因为数组的变量名就是数组的内存地址 int ic = scanf("%s", words); //不判断ic或产生变量未使用警告scanf也要判断读入数据是否>0 if (ic) { //存储所有位数字相加的和 int sum = 0; //使用strlen获取输入字符串的长度,strlen获取长度到第一次出现0的位置 //参考 /cprogramming/c-function-strlen.html int c = strlen(words); //循环变量整个输入字符串 for (int i = 0; i < c; i++) { //整数字符转整数的方法,就是减去字符'0',请自行做实验验证,这是常用方法 sum += (words[i] - '0'); } //存储sum整数转为字符串 char sum_str[5]; //跨平台通用数字和字符串互转的函数,定义在stdio.h中 //!!还可以理解为,参数3按照参数2的格式打印输入到参数1 //参数1,转换后存储的变量 //参数2,转换格式 //参数3,数据来源 sprintf(sum_str, "%d", sum); //遍历sum_str字符串 for (int i = 0, len = strlen(sum_str); i < len; i++) { //转为整数,用作拼音数组的下表 int c = sum_str[i] - '0'; //打印输出 printf("%s", shuzi[c]); //如果不是最后一个输出的字符串,则加上空格 //!!题目要求,否则提示格式错误 if (i < len - 1) {printf(" "); } } } return 0;}

提交结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。