算数
#include<stdio.h>#include<string.h>
int main()
{
unsigned long longint i;
int count=0,j,d=0;
int k;
char ch;
scanf("%lld",&i);
while(i!=0)
{
count=count+i%10;
i=i/10;
}
d=0;
while(count!=0)
{
k=count%10;
d++;
count=count/10;
}
k='\0';
j=d-1;
for(j;j>=0;j--)
{
switch(k)
{
case 1:strcpy(ch,"yi");break;
case 2:strcpy(ch,"er");break;
case 3:strcpy(ch,"san");break;
case 4:strcpy(ch,"si");break;
case 5:strcpy(ch,"wu");break;
case 6:strcpy(ch,"liu");break;
case 7:strcpy(ch,"qi");break;
case 8:strcpy(ch,"ba");break;
case 9:strcpy(ch,"jiu");break;
case 0:strcpy(ch,"ling");break;
}
printf("%s ",ch);
}
return 0;
}
我不知道怎么回事,我输入1234567890987654321 输出jiu ling(90),当我输入的数字更大了,就发现输出有错误了,是不是因为我这个值太大,导致溢出了? 我试了没有报错,不如你把报错信息发出来看看 为啥我用vc2019把这个程序打了一遍,编译出来,错误了好多. 错倒是没有报错,就是答案不对,比如上面哪个例子应该输出yi san wu,而我的输出yi er er ,但是我现在已经解决了(用一个字符数组去装这个数字)。 啊这,这么大的数确定不用字符数组? 你要看清楚,n小于 10的100次方
你能告诉我 unsigned long long 的取值范围吗?
#include <stdio.h>
int main(void) {
const char *string[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
int ch;
size_t sum = 0;
while((ch = getchar()) != '\n') {
if(ch == EOF) break;
sum += ch - '0';
}
size_t reverse = 0;
while(sum) {
reverse = reverse * 10 + (sum % 10);
sum /= 10;
}
ch = '\0';
while(reverse) {
printf("%c%s", ch, string);
ch = ' ';
reverse /= 10;
}
printf("\n");
return 0;
}
人造人 发表于 2021-4-2 00:12
你要看清楚,n小于 10的100次方
你能告诉我 unsigned long long 的取值范围吗?
可以啊,大佬,这个思路好啊,我想问一下,哪个const ch,为什么前面要加const,有什么用吗?还有哪个size_t sum,哪个size_t,是什么意思? 严凯 发表于 2021-4-6 19:11
可以啊,大佬,这个思路好啊,我想问一下,哪个const ch,为什么前面要加const,有什么用吗?还有哪个siz ...
const 表示只读,如果你在编程的时候犯二了,编译器可以帮你检查出来,很管用的,^_^
size_t是一个类型
https://baike.so.com/doc/6788967-7005576.html 人造人 发表于 2021-4-6 21:33
const 表示只读,如果你在编程的时候犯二了,编译器可以帮你检查出来,很管用的,^_^
size_t是一个类型
...
大佬,去看看我的快乐链表那个帖子,我真的要被搞吐了{:10_254:}
页:
[1]