利用三重for循环嵌套的贪心算法
#include<stdio.h>
int main(void) {
int flag, n1, n2, n5, moeny;
flag = 1;
printf("Enter moeny:");
scanf("%d", &moeny);
for (n5 = moeny / 5; (n5 >= 0) && (flag == 1); n5--) {
for (n2 = moeny / 2; (n2 >= 0) && (flag == 1); n2--) {
for (n1 = moeny - n5 * 5 - n2 * 2; (n1 >= 0) && (flag == 1); n1--) {
if ((n5 * 5 + n2 * 2 + n1) == moeny) {
printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n", n5, n2, n1, n1 + n2 + n5);
flag = 0;
}
}
/ }
}
return 0;
}
当找到满足条件的解,就不必继续循环了,此时需要退出三重循环,break语句只能终止当前循环,不能同时退出多重,运用引入变量flag共同描述循环条件,初始值为1,一旦找到满足条件的解,将flag赋值给0,从而使所有循环条件为假,以终止三重循环
函数的调用一般有两种形式:1.通过赋值语句,如
#include <stdio.h>
int fun(int num);
int main(void){
int n,num;
scanf("%d",&num);
printf("%d是一个%d位数\n",num,fun(num));
return 0;
}
int fun(int num){
int n=0;
while(num!=0){
n++;
num/=10;
}
return n;
}
n=fun(num),将该函数的返回值赋值给变量;
2.输出函数的实际参数,如printf("%d",fun(num))
参数传递
函数定义时,应该注意变量名和函数名不能相同