c语言一个简单的自定义函数的问题
为什么我的代码用了自定义函数后就会报错,是不是自定义函数不能直接调用main(其他)函数的常量?帮我修改一个代码,谢谢。
#include<stdio.h>
int main()
{
int print();
int num,count = 0,i = 0;
char chinanum[10][4] = {"壹","贰","叁","肆","伍","陆","柒","捌","玖"};
int ge[9];//保存数字各位
printf("请输入要转换的数字:");
scanf("%d", &num);
while(num != 0)
{
ge[i] = num % 10;
num /= 10; //去掉最后一位
i++;
count++; //位数+1
}
printf("共有%d位数字,",count);
printf("每一位数字对应的中文数字: ");
print();//调用自定义函数print
return 0;
}
int print()
{
for(i = 0; i < count; i++)
{
printf("第%d位数字为:%d,%s",i+1,ge[i],chinanum[ge[i]]);
printf(" ");
}
}
程序存在语法错误,错误如下:
1. print函数中用到的chinanum、ge和count变量没有作为形参传入,导致变量未定义。需加上chinanum、ge和count的形参声明。
2. print函数无需返回值,可将返回值类型改为void。
3. print函数的声明最好放在main函数之外,看上去清晰一些。
程序存在逻辑错误,错误如下:
1. chinanum数组重的字符串是从0开始索引的,而ge[i]的值是从1开始的,所以chinanum[ge[i]]表示的值会比ge[i]多1,需改为chinanum[ge[i]-1]。
2. print输出的各位数字是倒序的,可以将print函数的循环语句改为“for(i = count - 1; i >= 0; i--)”,实现正序输出。
附上修改后的程序,以供参考:
#include <stdio.h>
void print(char chinanum[][4], int ge[], int count);
int main()
{
int num, count = 0, i = 0;
char chinanum[10][4] = {"壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
int ge[9];
printf("请输入要转换的数字:");
scanf("%d", &num);
while (num != 0) {
ge[i] = num % 10;
num /= 10;
i++;
count++;
}
printf("共有%d位数字,", count);
printf("每一位数字对应的中文数字: ");
print(chinanum, ge, count);
return 0;
}
void print(char chinanum[][4], int ge[], int count)
{
int i;
for (i = count - 1; i >= 0; i--) {
printf("第%d位数字为:%d,%s ", i + 1, ge[i], chinanum[ge[i] - 1]);
}
}
上一篇:这个怎么打出来大神求指教