1002 写出这个数
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。#include <stdio.h>
#define M 101
int main()
{
int str,i,sum,j,a;
sum=0;
for (i=0;str!='\n';i++){
str=getchar();
}
i--;
j=i;
do {
sum+=str;
i--;
}while (i++==0);
do{
a=sum%10;
sum=sum/10;
i++;
}while(sum);
do {
switch (a){//将数组a中的数字逆向输出来
case 1 :printf ("yi");break;
case 2 :printf ("er");break;
case 3 :printf ("san");break;
case 4 :printf ("si");break;
case 5 :printf ("wu");break;
case 6 :printf ("liu");break;
case 7 :printf ("qi");break;
case 8 :printf ("ba");break;
case 9 :printf ("jiu");break;
case 0 :printf ("ling");break;
}//每两个输出之间用空格隔开,最后不加空格
if (!i){
printf ("\n");break;
}
else printf (" ");
i--;
}while (i>=0);
return 0;
}
请教为什么系统会说我段错误啊?
什么叫段错误?
然后怎么改?{:10_266:}
时间限制: 400 ms
内存限制: 64 MB
代码长度限制: 16 KB 输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10
100
。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu 本帖最后由 bin554385863 于 2019-11-1 00:06 编辑
/*读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字*/
#include <stdio.h>
int func1(int num) //计算数字的权值之和
{
int sum = 0;
if ((num >= __INT_MAX__)||(num <= 0))
{
sum = -1;
}
else
{
while (num != 0)
{
int t = num % 10;
num /= 10;
sum += t;
}
}
return sum;
}
void func2(int num) //变换写法
{
if ((num >= __INT_MAX__)||(num <= 0))
{
printf("-1");
}
else
{
while (num != 0)
{
int t = num % 10;
switch (t)
{
case 0:
printf("零 ");
break;
case 1:
printf("壹 ");
break;
case 2:
printf("贰 ");
break;
case 3:
printf("叁 ");
break;
case 4:
printf("肆 ");
break;
case 5:
printf("伍 ");
break;
case 6:
printf("陆 ");
break;
case 7:
printf("柒 ");
break;
case 8:
printf("捌 ");
break;
case 9:
printf("玖 ");
default:
break;
}
num /= 10;
}
}
}
int main(int argc, char const *argv[])
{
int a = 1;
while (1)
{
scanf("%d", &a);
if (a <= 0)
{
printf("程序结束");
break;
}
printf("%d的权值之和是: %d\n组成数字为: ", a, func1(a));
func2(func1(a));
printf("\n");
}
return 0;
}
-----------------------------------------------------------------------------
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS E:\Users\admin\Documents\VScode> & 'c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-cv3ionhq.a5d' '--stdout=Microsoft-MIEngine-Out-e3yhoppl.gmx' '--stderr=Microsoft-MIEngine-Error-0wkylms4.3ze' '--pid=Microsoft-MIEngine-Pid-xh4qj31w.not' '--dbgExe=E:\My Program\Others\MinGW\bin\gdb.exe' '--interpreter=mi'
9999
9999的权值之和是: 36
组成数字为: 陆 叁
356
356的权值之和是: 14
组成数字为: 肆 壹
123588
123588的权值之和是: 27
组成数字为: 柒 贰
0
程序结束
PS E:\Users\admin\Documents\VScode>
========================================================
我很好奇楼主是从哪里学的用getchar()来输入数字的? emmmmm初学者,我自己写然后不知道..... 我只知道它从标准输入流读取字符,然后返回.... bin554385863 发表于 2019-10-31 21:42
-----------------------------------------------------------------------------
Windows PowerShell
...
所以请问getchar应该是怎么用呢,抱歉我是初学者,然后自己学不是很懂{:10_250:} Cyzyt 发表于 2019-11-1 15:03
所以请问getchar应该是怎么用呢,抱歉我是初学者,然后自己学不是很懂
getchar()是用来读取字符的,
不懂得可以回去查数或者百度
页:
[1]