博文
木料问题(2005-04-23 07:02:00)
摘要:/*算法高手请进。有一个难题求解?
标准原材料长600cm。
可能要截成以下几种规格:60cm、80cm、90cm、120cm、150cm、180cm、210cm、240cm的任意几种的组合。
比方说:
方案一:需要60cm28根、210cm16根、240cm8根,最少需要多少根原材料(600cm)
方案....
此解主要解决怎么才能最省料。
另:能否解任意规格尺寸的问题。*/
/*算法;将材料规格按照从大到小的顺序从原材料中取出,这样最省料。
程序不但给出所需的原材料数量,还给出每根原材料剩下的边角余料。
通过改变M,N的值可以改变原材料的预计数量和所需材料的规格*/
/*2005-4-22 梁见斌*/
#include<stdio.h>
#include<stdlib.h>
#define N 8
#define M 100
int Input(void);/*输入材料的规格和数量*/
void sort(int len);/*将材料规格按照从大到小的顺序排列,以便处理*/
void print(int len);/*按顺序打印输入材料的规格和数量*/
int solve(int len);/*将材料规格按照从大到小的顺序从原材料中取出,这样最省料*/
/*wood[N][2]存储输入材料的规格和数量;source[M]存储原材料的数量;rest存储剩下边角余料*/
int wood[N][2], source[M], rest=0;
int main(void)
{
int kind, num;
kind = Input();/*kind表示输入材料规格的种类*/
sort(kind);
print(kind);
num = solve(kind);
 ......
好玩的猜数游戏(2005-04-10 20:46:00)
摘要:/*猜数游戏*/
/*程序产生一个随机数,游戏者输入数据进行猜测。管理员可输入密码,
其中普通管理员只能获得答案,超级管理员获得答案并能修改普通管理员密码*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define NO 0
#define YES 1
#define QUIT -1
#define EASY 1
#define COMMON 2
#define HARD 3
#define PASSWORD2 -100 /*超级管理员密码,不可修改*/
char *PasswordName = "nihao";/*超级管理员确认密码,不可修改*/
int Password1 =-10 ; /*普通管理员密码,可修改*/
long number; /*计算机产生的随机数*/
long guess_value=0; /*游戏者输入的猜测数*/
int nbr_of_guesses=0;/*累加游戏者猜测的次数*/
int done=0; /*标记游戏者是否猜对,若猜对则 done=1*/
long chushu;
void the_back_door(int password,long answer); /*开个后门好作弊,判断普通或......
多人游戏十点半(2005-04-10 19:21:00)
摘要:
/*一副扑克(除去王),第一轮玩者依次取一张牌,。之后玩者根据自己的牌总的点数
选择继续要牌或比较大小。(玩家可以选择不要牌,但一旦选择不要牌,以后就不能再要牌)
玩家的点数一旦超过10。5,不能再要牌。
j q k算0。5点。 如果牌总的点数都大于10。5 或都小于10。5,大者赢;
如果一个大于10。5而另一个小于10。5,小于10。5者胜。*/
/*2005-4-9 梁见斌*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct book{
int color;
char number;
float num;
} Card[52];/*用来存储牌的花色,数字及所代表的点数*/
void Build_Show(int HuaSe[], float DianShu[], char ShuZi[]);/*建立一副新牌,并显示给游戏者检查*/
void Wash_Card(void);/*洗牌*/
void Get_Card(int n) ;/*按顺序发牌并公布结果*/
void DuoRen(int n);
int main(void)
{
int flag, n;
int HuaSe[4]={3,4,5,6};/*存储花色*/
char ShuZi[13]={'A','K','Q','J','0','9','8','7','6','5','4','3','2'};/*存储数字*/
float DianShu[13]={1,0.5,0.5,0.5,10,9,8,7,6,5,4,3,2};/*存储点数*/
出纳的好帮手--准备足够的零钱(2005-04-10 13:13:00)
摘要:/*此程序用来实现发工资时如何准备足够的零钱的问题*/
/*2005-4-5 梁见斌*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{/*ShuLiang_GeRen[13]用来存储各种数额的钞票的数量*/
int i, j, num=0, ShuLiang_GeRen[13]={0}, ShuLiang_ZongShu[13]={0};
float danwei[13]={100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01};
float money, sum=0;
printf("\n输入第%d个人的工资(输入负数表示结束):", ++num);
scanf("%f",&money);
while(money >= 0)/*循环输入,直到输入负值*/
{
for(j=0; j<13; j++)/*先把每个人的钞票数量弄好*/
ShuLiang_GeRen[j]=0;
i=0;
sum += money;
 ......
跟电脑比智慧--十点半游戏(2005-04-10 13:12:00)
摘要:
/*一副扑克(除去王)玩者先取一张牌,电脑跟着取一张牌。之后玩者根据自己的牌总的点数
选择继续要牌或比较大小。j q k算0。5点。 如果牌总的点数都大于10。5 或都小于10。5,大者赢;
如果一个大于10。5而另一个小于10。5,小于10。5者胜。*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct book{
int color;
char number;
float num;
} Card[52];/*用来存储牌的花色,数字及所代表的点数*/
void Build_Show(int HuaSe[], float DianShu[], char ShuZi[]);/*建立一副新牌,并显示给游戏者检查*/
void Wash_Card(void);/*洗牌*/
void Get_Card(void) ;/*按顺序发牌并公布结果*/
int main(void)
{
int flag;
int HuaSe[4]={3,4,5,6};/*存储花色*/
char ShuZi[13]={'A','K','Q','J','0','9','8','7','6','5','4','3','2'};/*存储数字*/
float DianShu[13]={1,0.5,0.5,0.5,10,9,8,7,6,5,4,3,2};/*存储点数*/
Build_Show(HuaSe, DianShu, ShuZi);/*建立一副新牌,并显示给游戏者检查*/
do{
&n......
银行常用的打印程序(2005-03-28 08:30:00)
摘要:/*如:
输入:25001
输出:贰万 伍仟 零 壹元
输入:123.45
输出:壹佰 貳拾 叁元 肆角 伍分
*/
#include<stdio.h>
#include<stdlib.h>
char *p[10]={"零","一","二","三","四","五","六","七","八","九"};
int In_Save(char a[], char b[]);/*输入并存储数据*/
void Print_Zh(char a[], int len);/*输出整数部分 */
void Print_X(char a[]);/*输出小数部分 */
int main(void)
{
char Zh_Shu[26], X_Shu[10];
int len;
len=In_Save(Zh_Shu, X_Shu);
Print_Zh(Zh_Shu, len);
Print_X(X_Shu);
system("pause");
return 0;
}
int In_Save(char a[], char b[])
{
char ch;
int i, j;
a: puts("输入一个数:");......
判断谁是第一名(2005-03-01 08:33:00)
摘要: /* 有甲,乙,丙,丁四人参加竞赛,有一人得第一名,当问谁得第一名时,
甲说:”乙不是第一名 ,丁是第一名 。“乙说:”我不是第一名,
丙是第一名。“丙说:”甲不是第一名,乙是第一名。”丁说:“我不是第一名。”
他们各个人说的不是全对,就是全错,编程分别用A,B,C,D代表甲,乙,
丙,丁四人, 用A1,B1,C1,D1代表甲,乙,丙,丁四人所说的话,
判断谁是第一名。 */
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int A,B,C,D,i=0;
int A1,B1,C1,D1;
for(A=1;A<=4;A++)
for(B=1;B<=4;B++)
for(C=1;C<=4;C++)
for(D=1;D<=4;D++)
{
A1=(B!=1&&(D==1))||((B==1)&&D!=1);
&nb......
九九乘法表(2005-03-01 08:28:00)
摘要:九九乘法表
#include<stdio.h>
#include<stdlib.h>
main()
{
int i, j;
for (i=9; i>=1; i--)
{
for (j=9; j>=i; j--)
printf("%d*%d =%2d ",i, j, i*j);
printf("\n");
}
system("pause");
} ......