想把下列判断五位数以下的数字的位数做成一个函数,怎么办?
int judgefigures(int x,int y){
scanf("%d",&x);
printf("the number has ");
if(0!=x/10000)
y=5;
else if(0!=x/1000)
y=4;
else if(0!=x/100)
y=3;
else if(0!=x/10)
y=2;
else
y=1;
switch(y)
{
case 5:printf("five figures");break;
case 4:printf("four figures");break;
case 3:printf("three figures");break;
case 2:printf("two figures");break;
case 1:printf("only one figure");break;
}
return 0;
} 本帖最后由 当回首遇上转身 于 2017-5-15 12:50 编辑
以后代码这样发
scanf_s("%d", &x);
printf("the number has ");
while (x) {
x /= 10;
y++;
}
printf("%d figures", y); 首先,函数应该只负责判断数字的位数,而不是同时负责从用户那里获取这个数字。其次,我们可以让函数直接返回数字的位数,而不是打印出来。
下面是一个简化和改进后的版本:
#include <stdio.h>
int judgeFigures(int x) {
if (x >= 10000) return 5;
if (x >= 1000)return 4;
if (x >= 100) return 3;
if (x >= 10) return 2;
return 1;
}
int main() {
int number, figures;
printf("Enter a number (up to 5 digits): ");
scanf("%d", &number);
figures = judgeFigures(number);
printf("The number has %d figures.\n", figures);
return 0;
}
在这个版本中,judgeFigures 函数接收一个整数 x 并返回这个整数的位数。main 函数负责获取用户输入的数字并调用 judgeFigures 函数,然后打印出返回的位数。
这种方式使得函数更加专一且可重用,同时也使得 main 函数更简洁清晰。
页:
[1]