ZBLOG

#include #include #define M 100 int stringLength(char* str) { int length = 0; while(str[length] != '\0') { length++; } return length; } char* tran_english(int num) { /*char* arr1[10] = {" ", "O...

在你的代码中,函数 tran_english 的返回值是一个指向字符的指针(char*),但在函数内部并没有为该指针分配内存或给它赋值。因此,当你尝试打印 english 变量时,并没有正确的结果输出。

如果你想要实现将整数转换为英文描述的功能,可以考虑以下修改:

  1. tran_english 函数声明改为 void tran_english(int num),不再返回任何值。
  2. tran_english 函数内部,根据具体逻辑进行字符串操作来构建英文描述。
  3. 不再使用动态分配内存(如 malloc),而是直接在函数内部定义一个足够大的字符数组来保存结果。

下面是修改后的代码示例:

#include <stdio.h>
#define M 100

void tran_english(int num)
{
    char* arr1[10] = {" ", "One", "Two", "Three", "Four",
                    "Five", "Six", "Seven", "Eight", "Nine"};
    char* arr2[10] = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen",
                    "Fifteen", "Sixteen", "Seventeen", "Eighteen", 
                    "Nineteen"};
    char* arr3[8] = {"Twenty", "Thirty", "Forty", 
                    "Fifty","Sixty","Seventy","Eighty","Ninety"}; 
    int thousand = num / 1000;
    int hundred  = num % 1000 / 100;
    int tens     = num % 100 /10;
    int ones     = num % 10;

    if(num == 0)
    {
        printf("Zero");
        return;
    }

    char result[M] = ""; // 定义足够大的字符数组来保存结果

    switch(thousand)
    {
        case 1: sprintf(result, "%s Thousand ", arr1[thousand]);
                break;
        default:
                break;       
    }
    
    switch(hundred)
    {
        case 1: sprintf(result + strlen(result), "%s Hundred ", arr1[hundred]);
                break;
        default:
                break;   
                
    }
    
    if(tens == 1)
        sprintf(result + strlen(result), "%s", arr2[ones]);
        
    else
	{
            if (tens != 0) 
		    sprintf(result + strlen(result), "%s ",arr3[tens - 2]);

            if (ones != 0) 
	            sprintf(result + strlen(result),"%s",arr1[ones]);
	}

  
    

	printf("该整数的英文描述为: %s\n", result);
}

int main()
{
    int num;

	printf("请输入一个非负整数x(0-9999):");
	scanf("%d", &num);

	tran_english(num);

	return 0;
}

现在,当你输入一个非负整数时,程序将会输出对应的英文描述。希望这能帮助到你!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=2113

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~