#include #include //通用工具头文件 #include //时间头文件 int main(void) { float money_yuan;//以元为单位的红包金额 int money_fen;//以分为单位的红包金额 int part;//红包的份数 int per[100];//保存每份红包的金额 int i; int index;//下标变量(索引) int tmp;//临时变量 printf("请输入红包的金额:"); scanf("%4f", &money_yuan); //把以元为单位的红包金额转换为以分为单位的红包金额 money_yuan *= 100; money_fen = (int)money_yuan; printf("红包金额:%d分钱\n", money_fen); printf("请输入红包的数量:"); while(scanf("%d", &part) != 1 || part 100) { printf("红包数量错误,请重新输入:"); fflush(stdin);//清空标准输入缓冲区 } printf("红包数量:%d\n", part); //检查红包金额与红包数量是否匹配 if(money_fen { printf("红包金额不够红包数量分配!\n"); exit(0); //退出程序 } //红包的分配//(unsigned)time(NULL) srand(time(NULL));//将从1970年到现在所经过的秒数作为随机种子 for(i = 0; i { //如果是最后一份红包,就把余额全部赋给它 if(i == part - 1) per[i] = money_fen; else if(i == 0)//第一个红包 { per[i] = money_fen / 2;// money_fen -= per[i]; } else { //不是最后一份红包,让该红包的金额在当前余额的1/3之内 if(money_fen / 3 == 0)//如果当前红包余额除上3等于0的话,就把该红包金额赋为1 per[i] = 1; else { per[i] = rand() % (money_fen / 3) + 1;//+1是为了防止出现红包金额为0的情况发生 } if(money_fen - per[i] --i;//取消上面所分配的红包 else money_fen -= per[i]; } } //打印红包 for(i = 0; i printf("%d: %.2f元\n", i + 1, (float)per[i] / 100); return 0; } |
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。