/*
请用C语言中实现 输出和为一个给定整数的所有组合(可重复如4=2+2)
*/
//1:
#include <stdio.h> // 包含头文件stdio.h 为程序提供基本输入输出功能
#include <stdlib.h> //包含标准库头文件stdlib.h 以便调用函数system("pause") 使程序暂停
int main(void)
{
int num = 0; //获取输入的数字
int i = 0; //外层循环计数
int j = 0; //内层循环计数
printf("Please input a number:");
scanf("%d", &num);
for(i = 1; i <= num / 2; i++) //i存放1 到 num/2 之间的整数(i <= num/2)
{
for(j = num / 2; j < num; j++) //j 存放 num/2 到 num 之间的整数 (j < num)
{
if(i + j == num) // num/2 前后两半部分的数相加, 如果和等于num则输出 i, j
{
printf("%d+%d=%d", i, j, num);
break; //退出内层循环,避免不必要的循环次数,提高效率
}
}
}
return 0;
}
//2:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void main()
{
unsigned long int num = 0;
scanf("%d", &num);
int mid = 0;
int i;
for (i = 1; i <= num / 2; i++) //i 存放 1 到 num / 2 之间的整数//i存放1 到 num/2 之间的整数(i <= num/2)
{
mid = num - i; //mid 得到对应的结果
if (mid != i) //去掉i = mid相等的情况
{
printf("%d+%d=%d\n", i, mid, num);
}
}
system("pause");
}
/*
请用C语言中实现 输出和为一个给定整数的所有组合
例如 n = 5
5 = 1 + 4; 5 = 2 + 3;(相加的数不能重复,不考虑负数)
*/
//1:
#include <stdio.h> // 包含头文件stdio.h 为程序提供基本输入输出功能
#include <stdlib.h> //包含标准库头文件stdlib.h 以便调用函数system("pause") 使程序暂停
int main(void)
{
int num = 0; //获取输入的数字
int i = 0; //外层循环计数
int j = 0; //内层循环计数
printf("Please input a number:");
scanf("%d", &num);
for(i = 1; i <= num / 2; i++) //i存放1 到 num/2 之间的整数(i <= num/2)
{
for(j = num / 2 + 1; j < num; j++) //j 存放 num/2 + 1到 num 之间的整数 (j < num)
{
if(i + j == num) // num/2 前后两半部分的数相加, 如果和等于num则输出 i, j
{
printf("%d+%d=%d", i, j, num);
break; //退出内层循环,避免不必要的循环次数,提高效率
}
}
}
}
//2:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void main()
{
unsigned long int num = 0;
scanf("%d", &num);
int mid = 0;
int i;
for (i = 1; i <= num / 2; i++) //i 存放 1 到 num / 2 之间的整数//i存放1 到 num/2 之间的整数(i <= num/2)
{
mid = num - i; //mid 得到对应的结果
printf("%d+%d=%d\n", i, mid, num); //输出所有的结果,包括重复的值
}
system("pause");
}