《C程序设计教程(第四版)——谭浩强》
习题3.5 给一个不多于5位的正整数,要求:
1.求出它是几位数;
2.分别输出每一位数字;
3.按逆序输出各位数字,例如:原数为321,输出为123
代码:
//《C程序设计教程(第四版)——谭浩强》
//习题3.5 给一个不多于5位的正整数,要求:
// 1.求出它是几位数;
// 2.分别输出每一位数字;
// 3.按逆序输出各位数字,例如:原数为321,输出为123
#include <stdio.h>
int wei_shu(int x);
int meiyiwei_shuzi(int x);
int ni_xv(int);
int main()
{
int x = 0;
printf("请输入一个不多于五位的正整数:\n");
scanf("%d",&x);
wei_shu(x);//1.求出它是几位数;
meiyiwei_shuzi(x);//2.分别输出每一位数字;
ni_xv(x);//3.按逆序输出各位数字,例如:原数为321,输出为123
return 0;
}
int wei_shu(int x)
{
// printf("传参过来的x=%d\n",x);
int i=0;
while(x)
{
x=x/10;
i++;
}
printf("这个数是%d位数\n",i);
return 0;
}
int meiyiwei_shuzi(int x)
{
int y=0;
int i=0;
while(x)
{
y=x%10;
printf("这个数的位数为(从个位依次递增):%d\n",y);
x/=10;
i++;
}
return 0;
}
int ni_xv(int x)
{
int y=0;
printf("按逆位输出的数为:");
int i=0;
while(x)
{
y=x%10;
x/=10;
i++;
printf("%d ",y);
}
return 0;
}
运行结果:
编写代码时遇到的问题:
(1)函数传参
在C语言中,函数的参数传递方式:值传递和指针。
这意味着当你将一个参数传递给一个函数时,函数会接收到这个参数的一个副本,而不是原始参数本身。
值传递
2.使用指针进行引用传递
(2)while的判断条件
在C语言中,while循环的判断条件,当其值为真时继续执行循环体,为假时跳出循环。
while(表达式)
{
语句1;//代码块
}
其中"表达式"是循环执行的条件,当"表达式"为真(非0)时,执行循环内的语句,为假(0)时,跳出循环。
解决方案:
无限循环:如果你想要的是一个无限循环,你可以使用while(1)。
条件控制循环:你可以使用任何条件表达式来控制循环,例如:
int i = 0;
while(i < 10)
{
printf("i is %d\n", i);
i++;
}
3.用户输入控制循环:你可以使用用户输入来控制循环,例如:
char input;
printf("Enter q to quit: \n");
while((input = getchar()) != 'q')
{
printf("You did not enter q!\n");
}
4.指针控制循环:你可以使用指针来控制循环,例如:
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *ptr = numbers;
while(ptr - numbers < 10)
{
printf("Element %d: %d\n", ptr - numbers, *ptr);
ptr++;
}
5.函数返回值控制循环:你可以使用函数的返回值来控制循环。
3.%与/的区别
例如:x=1234
%取余(取模) (int)x%10=4
/ 除 (int)x/10=123