[C语言]利用函数写出乘法表、函数递归字符串逆次序赋值、函数递归计算整数每个数之和

文章介绍了如何用C语言编写函数,实现乘法表的输出、字符串的递归逆序以及计算整数每个数位之和,展示了基础的编程技巧和逻辑应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用函数写出乘法表

此题要求输入一个数,就写出相对的乘法表,如需要写出99乘法表,只需要用到两个循环即可,如果要对齐等号,应当在输出的时候%d变为%2d输出如下所示

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void multi_printf(int x)
{
	int i;
	int j;
	for (i = 1; i < x + 1; i++)
	{
		for (j = 1; j < i+1; j++)
		{
			printf("%d x %d =%2d ", i, j, i * j);
		}
		printf("\n");
	}

}


int main(){
	int a = 0;
	scanf("%d", &a);
	multi_printf(a);
	return 0;
}

结果如下

函数递归字符串逆次序赋值

对于一个字符串,如果需要输入的为"abcdef"输出为"fedcba"的话,让第一位和最后一位交换,第二位和倒数第二位交换即可,但是如果要利用到函数的递归的话,需要在每次嵌套前,再在字符串没有交换的位置加上一个\0的结束语句,如下所示

#include <stdio.h>
#include <string.h>
//交换字符串次序
reverse_str(char* str)
{
	int n = strlen(str);
	char temp = str[0];
	str[0] = str[n - 1];
	str[n - 1] = '\0';
	if (n > 2)
	{
		reverse_str(str + 1);
	}
	str[n - 1] = temp;
}


int main()
{
	char a[] = { "abcdefg" };
	reverse_str(a);
	printf("%s",a);
	return 0;
}

保证输入进去后strlen函数可以检测到\0的结束语句,输出结果如下

当然,本人在这里还有一种不同的思路,就是利用多一个数组,对其元素和嵌套后的字符对齐再赋值输出也可以做到,如输入“abcdef"如果取一个空数组让其的第一位为f第二位为e以此类推也可以做到,难点在于嵌套循环最里层的那个嵌套为f最先开始的是字符a,如下所示

#include <stdio.h>
#include <string.h>
char reverse_str(char* x ,char * z,int y)
{
	if (y - 1 >= 0)
	{
		*(z+y-1) = reverse_str((x + 1), z,y-1);
	}
	return *(x-1);
}
int main()
{
	char a[] = "abcdefdfd";
	char b[10] = "0";
	int n = strlen(a);
	reverse_str(a ,b,n);
	int i;
	for (i = 0; i <= strlen(b); i++)
		a[i] = b[i];
	printf("%s", a);
	return 0;
}

两串代码均可以完成逆次序的赋值

计算整数每个数之和

如输入一个1728需要的到1+7+2+8的大小,我们可以用每次除10的模得到最后一位数的思想来完成这个递归的操作,如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int digitsum(int x)
{
	if (x >= 1)
	{
		return(x % 10 + digitsum(x / 10));
	}
	else
		return 0;
}


int main()
{
	int a;
	scanf("%d", &a);
	int sum=digitsum(a);
	printf("%d", sum);
}

当然,重新嵌套进入函数后不要忘了嵌套进去的数要除10,输出结果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值