c语言代码求改错!跪谢!
答案:4 悬赏:20 手机版
解决时间 2021-03-25 22:34
- 提问者网友:精神病院里
- 2021-03-25 13:27
c语言代码求改错!跪谢!
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-03-25 14:21
#include
#include
#include
char* num_list0[20] = {
"","one","two","three","four",
"five","six","seven","eight","nine",
"ten","eleven","twelve","thirteen","fourteen",
"fifteen","sixteen","seventeen","eighteen","nineteen"
};
char* num_list1[10] = {
"","ten","twenty","thirty","fourty","fifty",
"sixty","seventy","eighty","ninety"
};
// 查表找英文,数字转换为可以读的单词
// “有数字” 表示 “有非零的数字”
void haveIt(int nI, char *num_str) {
unsigned len;
char aA[5];
char str[100];
itoa(nI,aA,10);
len = strlen(aA); // 数的长度
if (len==4) { // 四位数
// 查表找到千位数字的英文
sprintf(str,"%s thousand ",num_list0[aA[0]-'0']);
strcat(num_str,str);
if (aA[1] != '0') {
// 如果百位数字不为0,查表找到百位数字的英文
sprintf(str,"%s hundred ",num_list0[aA[1]-'0']);
strcat(num_str,str);
}
if ((aA[2]-'0')==1 && (aA[3]-'0')>0) {
// 如果十位数字为1,查表找20以下的十位数的英文
// 提前到了数的末尾
sprintf(str,"and %s
",num_list0[atoi(aA+2)]);
strcat(num_str,str);
return;
}
if (aA[2] != '0') {
// 如果十位有数字,查表找到十位数字的英文
sprintf(str,"and %s",num_list1[aA[2]-'0']);
strcat(num_str,str);
}
if (aA[3] != '0') {
if (aA[2] != '0') {
// 只要十位有数字,而且个位也有数字,用 -连接个位到十位
sprintf(str,"-%s",num_list0[aA[3]-'0']);
strcat(num_str,str);
}
else {
// 十位或者百位没有数字,直接 and个位数字的英文
sprintf(str,"and %s",num_list0[aA[3]-'0']);// 1001
strcat(num_str,str);
}
}
} else if (len==3) { // 三位数
// 查表找到百位数字的英文
sprintf(str,"%s hundred ",num_list0[aA[0]-'0']);
strcat(num_str,str);
if ((aA[1]-'0')==1 && (aA[2]-'0')>0) {
// 如果十位数字为 1,查表找20以下的十位数的英文
// 提前到了数的末尾
sprintf(str,"and %s
",num_list0[atoi(aA+1)]);
strcat(num_str,str);
return;
}
if (aA[1] != '0') {
// 如果十位有数字,查表找到十位数字的英文
sprintf(str,"and %s",num_list1[aA[1]-'0']);
strcat(num_str,str);
}
if (aA[2] != '0') {
if (aA[1] == '0') {
// 如果十位没有数字,直接 and个位数字的英文
sprintf(str,"and %s",num_list0[aA[2]-'0']);
strcat(num_str,str);
}
else {
// 十位有数字,而且个位也有数字,用 -连接个位到十位
sprintf(str,"-%s",num_list0[aA[2]-'0']);
strcat(num_str,str);
}
}
} else if (len==2) { // 两位数
if ((aA[0]-'0')==1 && (aA[1]-'0')>0) {
// 如果十位数字为 1,查表找20以下的十位数的英文
// 提前到了数的末尾
sprintf(str,"and %s
",num_list0[atoi(aA)]);
strcat(num_str,str);
return;
}
// 如果已知这个数是两位数,查表找到十位数的英文
sprintf(str,"%s",num_list1[aA[0]-'0']);
strcat(num_str,str);
if (aA[1] != '0') {
// 如果个位有数字,用 -连接个位到十位
sprintf(str,"-%s",num_list0[aA[1]-'0']);
strcat(num_str,str);
}
}
}
int main() {
int nI;
char num_str[500];
printf("enter a number >=1 and <=9999
");
do {
strcpy(num_str,"");
printf("
enter 0 to exit
");
printf("enter the number: ");
scanf("%d",&nI);
if (nI<=19) {
strcpy(num_str,num_list0[nI]);
} else {
haveIt(nI,num_str); // 找到输入数字的字符串
}
printf("%s
",num_str);
} while(nI>=1 && nI<=9999);
return 0;
}对比下这个正确的 看看哪有问题
追问大佬!你的代码我。。看不懂。。追答别人写的 百度复制的 能用追问C:\Users\Master Chou\Desktop\c语言作业\collect2.exe [Error] ld returned 1 exit status我主要想问一下这个怎么办
#include
#include
char* num_list0[20] = {
"","one","two","three","four",
"five","six","seven","eight","nine",
"ten","eleven","twelve","thirteen","fourteen",
"fifteen","sixteen","seventeen","eighteen","nineteen"
};
char* num_list1[10] = {
"","ten","twenty","thirty","fourty","fifty",
"sixty","seventy","eighty","ninety"
};
// 查表找英文,数字转换为可以读的单词
// “有数字” 表示 “有非零的数字”
void haveIt(int nI, char *num_str) {
unsigned len;
char aA[5];
char str[100];
itoa(nI,aA,10);
len = strlen(aA); // 数的长度
if (len==4) { // 四位数
// 查表找到千位数字的英文
sprintf(str,"%s thousand ",num_list0[aA[0]-'0']);
strcat(num_str,str);
if (aA[1] != '0') {
// 如果百位数字不为0,查表找到百位数字的英文
sprintf(str,"%s hundred ",num_list0[aA[1]-'0']);
strcat(num_str,str);
}
if ((aA[2]-'0')==1 && (aA[3]-'0')>0) {
// 如果十位数字为1,查表找20以下的十位数的英文
// 提前到了数的末尾
sprintf(str,"and %s
",num_list0[atoi(aA+2)]);
strcat(num_str,str);
return;
}
if (aA[2] != '0') {
// 如果十位有数字,查表找到十位数字的英文
sprintf(str,"and %s",num_list1[aA[2]-'0']);
strcat(num_str,str);
}
if (aA[3] != '0') {
if (aA[2] != '0') {
// 只要十位有数字,而且个位也有数字,用 -连接个位到十位
sprintf(str,"-%s",num_list0[aA[3]-'0']);
strcat(num_str,str);
}
else {
// 十位或者百位没有数字,直接 and个位数字的英文
sprintf(str,"and %s",num_list0[aA[3]-'0']);// 1001
strcat(num_str,str);
}
}
} else if (len==3) { // 三位数
// 查表找到百位数字的英文
sprintf(str,"%s hundred ",num_list0[aA[0]-'0']);
strcat(num_str,str);
if ((aA[1]-'0')==1 && (aA[2]-'0')>0) {
// 如果十位数字为 1,查表找20以下的十位数的英文
// 提前到了数的末尾
sprintf(str,"and %s
",num_list0[atoi(aA+1)]);
strcat(num_str,str);
return;
}
if (aA[1] != '0') {
// 如果十位有数字,查表找到十位数字的英文
sprintf(str,"and %s",num_list1[aA[1]-'0']);
strcat(num_str,str);
}
if (aA[2] != '0') {
if (aA[1] == '0') {
// 如果十位没有数字,直接 and个位数字的英文
sprintf(str,"and %s",num_list0[aA[2]-'0']);
strcat(num_str,str);
}
else {
// 十位有数字,而且个位也有数字,用 -连接个位到十位
sprintf(str,"-%s",num_list0[aA[2]-'0']);
strcat(num_str,str);
}
}
} else if (len==2) { // 两位数
if ((aA[0]-'0')==1 && (aA[1]-'0')>0) {
// 如果十位数字为 1,查表找20以下的十位数的英文
// 提前到了数的末尾
sprintf(str,"and %s
",num_list0[atoi(aA)]);
strcat(num_str,str);
return;
}
// 如果已知这个数是两位数,查表找到十位数的英文
sprintf(str,"%s",num_list1[aA[0]-'0']);
strcat(num_str,str);
if (aA[1] != '0') {
// 如果个位有数字,用 -连接个位到十位
sprintf(str,"-%s",num_list0[aA[1]-'0']);
strcat(num_str,str);
}
}
}
int main() {
int nI;
char num_str[500];
printf("enter a number >=1 and <=9999
");
do {
strcpy(num_str,"");
printf("
enter 0 to exit
");
printf("enter the number: ");
scanf("%d",&nI);
if (nI<=19) {
strcpy(num_str,num_list0[nI]);
} else {
haveIt(nI,num_str); // 找到输入数字的字符串
}
printf("%s
",num_str);
} while(nI>=1 && nI<=9999);
return 0;
}对比下这个正确的 看看哪有问题
追问大佬!你的代码我。。看不懂。。追答别人写的 百度复制的 能用追问C:\Users\Master Chou\Desktop\c语言作业\collect2.exe [Error] ld returned 1 exit status我主要想问一下这个怎么办
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-03-25 17:09
晚次鄂州(卢纶)
- 2楼网友:春色三分
- 2021-03-25 16:09
送李少府贬峡中王少府贬长沙(高适)
- 3楼网友:第四晚心情
- 2021-03-25 15:09
只说我第一眼看到的问题
single、teen、ten都是由字符串常量构成的数组,试图修改字符串常量值将会导致程序崩溃追问请问怎么改呢?追答修改数组声明为char single[][10]追问然后要选用数组中的一个元素输出就在第一个[]里设参数吗?追答输出第k个字符串就用printf("%s",single[k])
single、teen、ten都是由字符串常量构成的数组,试图修改字符串常量值将会导致程序崩溃追问请问怎么改呢?追答修改数组声明为char single[][10]追问然后要选用数组中的一个元素输出就在第一个[]里设参数吗?追答输出第k个字符串就用printf("%s",single[k])
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯