C语言典型例题45

《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语言中,函数的参数传递方式:值传递指针

这意味着当你将一个参数传递给一个函数时,函数会接收到这个参数的一个副本,而不是原始参数本身。

  1. 值传递

     2.使用指针进行引用传递

(2)while的判断条件

在C语言中,while循环的判断条件,当其值为真时继续执行循环体,为假时跳出循环。

        while(表达式)

        {

              语句1;//代码块

        }

其中"表达式"是循环执行的条件,当"表达式"为真(非0)时,执行循环内的语句,为假(0)时,跳出循环。

解决方案:

  1. 无限循环:如果你想要的是一个无限循环,你可以使用while(1)。

  2. 条件控制循环:你可以使用任何条件表达式来控制循环,例如:

        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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值