回复 10楼 TonyDeng
谢谢版主,受教了,我觉得我应该才在第二阶段,我会继续加油的。[ 本帖最后由 ZJQLOVELYY 于 2012-1-25 23:22 编辑 ]
#include<stdio.h> #include<time.h> #include<math.h> #include<stdlib.h> int add(void); //加法函数 int sub(void); //减法 int mul(void); //乘法 int div(void); //除法 int main() { int (*pf[4])(void); //定义一个长度为4的函数指针数组 int count=0,grade=0,wrong_answer=0; double result; //定义学生输入的结果 srand((unsigned)time(0)); //初始化随机种子 pf[0]=add; pf[1]=sub; pf[2]=mul; pf[3]=div; do { if((pf[rand()%4])()==1) //随机调用四则运算函数,学生答对函数返回1,否则0 grade+=10; else wrong_answer++; //统计做错题目的数量 count++; }while(count<10); printf("grade=%d,the number of wrong answer is %d\n",grade,wrong_answer); return 0; } int add(void) { double result; double x,y; srand((unsigned)time(0)); x=(rand()%100)*0.1f; //产生一个0到10的实数 y=(rand()%100)*0.1f; printf("%.1f+%.1f=",x,y); scanf("%lf",&result); if(fabs(x+y-result)<0.01) //比较两个数是否相等 { printf("Right!\n"); return 1; } else { printf("Not correct!\n"); return 0; } } int sub(void) { double result,x,y; srand((unsigned)time(0)); x=(rand()%100)*0.1f; y=(rand()%100)*0.1f; printf("%.1f-%.1f=",x,y); scanf("%lf",&result); if(fabs(x-y-result)<0.01) { printf("Right!\n"); return 1; } else { printf("Not correct!\n"); return 0; } } int mul(void) { double result,x,y; srand((unsigned)time(0)); x=(rand()%100)*0.1f; y=(rand()%100)*0.1f; printf("%.1f*%.1f=",x,y); scanf("%lf",&result); if(fabs(x*y-result)<0.01) { printf("Right!\n"); return 1; } else { printf("Not correct!\n"); return 0; } } int div(void) { double result; double x,y; srand((unsigned)time(0)); x=(rand()%100)*0.1f; y=(rand()%100)*0.1f; printf("%.1f/%.1f=",x,y); scanf("%lf",&result); if(fabs(x/y-result)<0.01) { printf("Right!\n"); return 1; } else { printf("Not correct!\n"); return 0; } }
[color=#0000FF]#include<stdio.h> #include<stdlib.h> #include<time.h> enum GAME{LOST=-1,CONTINUE,WON}; int main() { enum GAME gameStatus; //定义枚举变量 int mypoint,sum=0,i,count=0; srand(time(0)); mypoint=rand()%6+1; //掷出的点数 sum+=mypoint; mypoint=rand()%6+1; sum+=mypoint; //两次点数之和 getchar(); //printf("%d\t",sum); //需要时打印出中间结果 if(sum==7||sum==11) gameStatus=WON; else if(sum==2||sum==3||sum==12) gameStatus=LOST; else { do { mypoint=rand()%6+1; mypoint+=rand()%6+1; //printf("%d\t",mypoint); //需要时打印出中间结果 if(sum==mypoint)break; sum=mypoint; count++; }while(count<7); if(count<7)gameStatus=WON; //小于七次代表循环是非正常退出,即sum等于mypoint else gameStatus=LOST; } if(gameStatus==WON) printf("WON\n"); else printf("LOST\n"); return 0; }
[color=#0000FF]#include<stdio.h> int main() { int count[11]={0}; //count[0]不用,其余每个元素分别代表分数1-10, int grade[40],i,j; for(i=0;i<40;i++) { printf("Enter #%d grade(1-10):",i+1); scanf("%d",&grade[i]); if(grade[i]>10||grade[i]<1) //避免输入的数字超出范围 { printf("Enter error!please input again:"); scanf("%d",&grade[i]); } } for(i=0;i<40;i++) count[grade[i]]++; //统计该分数的人数 printf("Grade\tCount\tHistogram\n"); for(i=1;i<=10;i++) { printf("%d\t%d\t",i,count[i]); for(j=0;j<count[i];j++) printf("*"); printf("\n"); } return 0; }
[color=#008000]//下面是我上周写的一个销售管理系统,感觉不太好,有点烂,求大虾指教。。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #define MAX 1000 #define PERSON 4+1 typedef struct Time{ int year; int month; int day; }DATA; struct Product{ int number; //商品代号 char name[20]; //商品名称 char Tran[MAX]; //交易类型 S为售出,J为进货 int weight; //商品重量 int total; //商品库存量 int sales; //一种商品的销售量 int saler[PERSON]; //销售员售出一种产品总和 DATA time[MAX]; //交易时间 int single[MAX]; //单笔交易的数量 int Trader[MAX]; //交易人员代号 }product[MAX]; struct Product temp[100]; //排序时的中间变量 int N=6; int total_sale[PERSON][PERSON]={{0},{0,1,2,3,4}}; //每位销售员售出全部商品的总和 int pro_number,sal_number,sale; //依次为产品代号,销售员代号,销售量 int COUNT=0; //统计总共交易次数 FILE *fp; void Inputsales(); //输入信息 void Input_Purchase(); void calu_data(); //销售员销量统计 void output_data(); //输出统计报表 void search_data(); //查询信息 void sort_data(int n); //产品排序 void menu(); //显示菜单 void Init(); //初始化结构体数组 void save_data(); //保存文件 void read_data(); //读取文件信息 void display(); //输出所有交易信息 void modify(); //修改信息 void search_stock(); //查询库存信息 void main() //主函数 { Init(); read_data(); menu(); save_data(); printf("谢谢使用!\n"); system("pause"); } void Inputsales() { char ch; sale=0; system("CLS"); //清屏 do { while(1) { printf("输入销售员代号(1-4):"); scanf("%d",&sal_number);getchar(); if(sal_number>0&&sal_number<5) break; printf("\a输入有误,请重新输入\n"); } do { while(1) { printf("产品代号:"); scanf("%d",&pro_number); getchar(); if(pro_number>0&&pro_number<N) break; printf("\a输入有误,请重新输入\n"); } product[pro_number].Tran[COUNT]='S'; //赋值为售出 product[pro_number].Trader[COUNT]=sal_number; printf("销售数量:"); while(scanf("%d",&sale)!=1||sale<0) { printf("\a输入有误,请重新输入\n"); printf("销售数量:"); } product[pro_number].single[COUNT]=sale; printf("销售年份:"); scanf("%d",&product[pro_number].time[COUNT].year); while(1) { printf("销售月份:"); scanf("%d",&product[pro_number].time[COUNT].month); if((product[pro_number].time[COUNT].month>0)&&product[pro_number].time[COUNT].month<13) break; printf("\a输入有误\n"); } while(1) { printf("销售日:"); scanf("%d",&product[pro_number].time[COUNT].day); if(product[pro_number].time[COUNT].day>0&&product[pro_number].time[COUNT].day<32) break; printf("\a输入有误\n"); } product[pro_number].total=product[pro_number].total-sale; //库存量减去销售的数量 COUNT++; getchar(); total_sale[0][sal_number]+=sale; //计算销售员售出产品总和 product[pro_number].saler[sal_number]=total_sale[0][sal_number]; product[pro_number].sales+=total_sale[0][sal_number]; //计算售出单种产品数量 printf("是否继续输入该销量员销量(Y/N):"); scanf("%c",&ch); getchar(); }while(ch!='n'&&ch!='N'); system("CLS"); printf("是否继续输入其他销售员销量(Y/N):"); scanf("%c",&ch); getchar(); }while(ch!='N'&&ch!='n'); } void calu_data() //在第一次输入时能排序,关闭后再读取不能排序 { int i,j,index,temp,k; for(i=1;i<PERSON;i++) { index=i; for(j=i+1;j<PERSON;j++) { if(total_sale[0][index]<total_sale[0][j]) index=j; for(k=0;k<2;k++) { temp=total_sale[k][index]; total_sale[k][index]=total_sale[k][i]; total_sale[k][i]=temp; } } } printf("每位销售员售出量从高到低为:"); for(i=1;i<PERSON;i++) printf("%4d",total_sale[1][i]); putchar('\n'); } void output_data() { int sum[5]={0},i,j; printf("\t销售统计报表\n"); printf("\t\t\t产品代号\t\t\t销售之和\n"); printf("销售员代号"); for(i=1;i<N;i++) printf("\t%d",i); putchar('\n'); for(i=1;i<PERSON;i++) { printf("%5d ",i); for(j=1;j<N;j++) { printf(" %5d",product[j].saler[i]); sum[i]+=product[j].saler[i]; } printf("\t%3d\n",sum[i]); sum[0]+=sum[i]; } printf("每种产品之和 "); for(i=1;i<N;i++) printf("%4d ",product[i].sales); printf("\t总和%4d\n",sum[0]); } void sort_data(int n) { int i,j,index; //由于结构体temp在函数内不能定义太大,故在前面定义全局变量, for(i=1;i<n;i++) { temp[i].sales=product[i].sales; } for(i=1;i<n;i++) temp[i].number=i; for(i=1;i<n;i++) //使用选择法排序 { index=i; for(j=i+1;j<N;j++) if(temp[index].sales<temp[j].sales) index=j; temp[0].sales=temp[index].sales; temp[index].sales=temp[i].sales; temp[i].sales=temp[0].sales; temp[0].number=temp[index].number; temp[index].number=temp[i].number; temp[i].number=temp[0].number; } printf("产品从高到低为:\n"); printf("产品代号:"); for(i=1;i<n;i++) printf("%5d",temp[i].number); printf("\n产品销量:"); for(i=1;i<n;i++) printf("%5d",temp[i].sales); } void menu() //显示菜单 { int choice; while(1) { printf("===========================================================\n"); printf("\t\t1.输入销售信息\n"); printf("\t\t2.统计销售信息\n"); printf("\t\t3.产品销量排序\n"); printf("\t\t4.输入进货信息\n"); printf("\t\t5.按日期查询信息\n"); printf("\t\t6.修改信息\n"); printf("\t\t7.查询商品库存信息\n"); printf("\t\t8.输出所有交易信息\n"); printf("\t\t9.输出统计报表\n"); printf("\t\t0.退出系统\n"); printf("============================================================\n"); printf("\n\t\t请选择:"); while(scanf("%d",&choice)!=1||choice<0||choice>9) { getchar(); printf("输入有误,请重新输入\n"); printf("请选择(0-9):"); } switch(choice) { case 1:Inputsales();break; case 2:calu_data();break; case 3:sort_data(N);break; case 9:output_data();break; case 5:search_data();break; case 4:Input_Purchase();break; case 8:display();break; case 6:modify();break; case 7:search_stock();break; } if(choice==0) { break; } system("pause"); //系统调用,暂停 system("CLS"); } } void Init() //对结构体变量初始化 { int i,j; for(i=1;i<N;i++) { memset(product[i].single,0,MAX); memset(product[i].Trader,0,MAX); product[i].sales=0; product[i].number=i; product[i].total=0; for(j=0;j<MAX;j++) { product[i].time[j].year=2000; product[i].time[j].month=1; product[i].time[j].day=1; } } } void search_data() { int y,m,d,i,j; scanf("请输入要查找的日期"); printf("销售年份:"); scanf("%d",&y); while(1) //控制输入月份的有效性,下同 { printf("销售月份:"); scanf("%d",&m); if(m>0&&m<13) break; printf("\a输入有误\n"); } while(1) { printf("销售日:"); scanf("%d",&d); if(d>0&&d<32) break; printf("\a输入有误\n"); } printf("\t交易日期--------交易类型--------交易数量--------交易人员\n"); for(i=1;i<N;i++) for(j=0;j<COUNT;j++) if(y==product[i].time[j].year&&m==product[i].time[j].month&&d==product[i].time[j].day) { printf("\t%d-%d-%d",y,m,d); if(product[i].Tran[j]=='S') printf("\t售出"); else printf("\t进货"); printf("\t\t%d\t\t%3d\n",product[i].single[j],product[i].Trader[j]); } } void Input_Purchase() { int n,amount,Trader1; //n为购买产品的代号,amount为购买的数量 int y,m,d; //购买的日期 char c,ch1; //ch1确定信息是为Y 否为N, c为是否继续输入 while(1) { printf("输入操作人代号:"); scanf("%d",&Trader1); getchar(); printf("输入购入产品的代号:"); scanf("%d",&n); printf("购入的数量:"); scanf("%d",&amount); printf("购入的年月日(如2008-1-1):"); scanf("%d%*c%d%%*c%d",&y,&m,&d); getchar(); getchar(); printf("是否录入(Y/N):"); scanf("%c",&ch1); getchar(); if(ch1=='y'||ch1=='Y') { product[pro_number].Tran[COUNT]='J'; product[n].total+=amount; product[n].Trader[COUNT]=Trader1; product[n].time[COUNT].day=d; product[n].time[COUNT].month=m; product[n].time[COUNT].year=y; COUNT++; } getchar(); printf("是否继续输入:(Y/N)"); scanf("%c",&c); getchar(); if(c=='N'||c=='n') break; } } void save_data() { int i; if((fp=fopen("sale_data","wb"))==NULL) { printf("打开文件失败\n"); return; } for(i=0;i<N;i++) { if(fwrite(&product[i],sizeof(struct Product),1,fp)==1) continue; else break; } if(i>0) { printf("保存成功\n"); return; } system("CLS"); fclose(fp); } void read_data() { int i=0; if((fp=fopen("sale_data","ab+"))==NULL) { printf("初始化文件!\n"); return; } else { while(!feof(fp)) { if(fread(&product[i],sizeof(struct Product),1,fp)==1) i++; } } fclose(fp); } void display() { int i,j; printf("\t=========================所有交易=======================\n"); printf("\t交易日期--------交易类型--------交易数量--------交易人员\n"); for(i=1;i<N;i++) for(j=0;j<COUNT;j++) { if(product[i].single[j]!=0) { printf("\t%d-%d-%d",product[i].time[j].year,product[i].time[j].month,product[i].time[j].day); if(product[i].Tran[j]=='S') printf("\t售出"); else printf("\t进货"); printf("\t\t%d\t\t%3d\n",product[i].single[j],product[i].Trader[j]); } } } void modify() //修改信息 { int i,tp; //tp为中间变量 char ch,ch1; //ch为确认信息 while(1) { printf("输入要修改商品的代号:"); scanf("%d",&i); if(i>N) printf("该商品不存在!\n"); else { printf("产品总量为:%d\n",product[i].total); printf("输入要修改的数量:"); scanf("%d",&tp); printf("是否修改(Y/N):\n"); getchar(); scanf("%c",&ch); getchar(); if(ch=='Y'||ch=='y') { product[i].total=tp; printf("修改成功\n"); } } printf("是否继续修改(Y/N):"); scanf("%c",&ch1); getchar(); if(ch=='N'||ch=='n') break; } } void search_stock() { int number; //要查询产品的代号 printf("输入要查询库存产品的代号:"); scanf("%d",&number); getchar(); if(number>N) printf("无此商品!"); else printf("剩余库存:%d\n",product[number].total); }