以前讲课的时候,给学生讲解编的一个程序
程序完整代码
函数调用形式
#include "stdio.h"
#include "stdlib.h"
#include "windows.h"
#define MAX 50
#define LEN 20
//购买商品,并修改商品数量数组,该数组通过传地址调用
void init_goods_buy(int goods_num[])
{
int i,num;
printf("\n\t说明:\n\t请分别输入所购买商品的编号\n\t(编号范围0-%d,不要超过哦,程序不做异常检查)\n\t和数量(实际购买量)\n",MAX-1);
printf("\t输入格式采用(商品序号 商品数量)\n\t(用空格隔开哦,然后回车再输入第二件商品,\n\t以此类推),最后再输入数字-1 -1作为结束\n");
printf("\n\t下面模拟超市扫描商品过程\n");
for(;1;)
{
printf("\t");
scanf("%d %d",&i,&num);
if(i==-1) break;
if(i>49)
{
printf("编号错误,请重新输入!\n");
continue;
}
goods_num[i]=num;
}
}
//打印商品小票(不分页)
void print_goods_bill_no(char goods_name[ ][LEN],double goods_pr[],int goods_num[])
{
int i;
double total=0.0;
printf("\n\n\t商品编号 商品名称 商品单价 商品数量 \t商品小计\n");
printf("\t========================================================\n");
for(i=0;i { if(goods_num[i]!=0) if(strlen(goods_name[i])<=8) printf("\t%-10d%-10s%8.2f%10d%18.2f\n",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]); else printf("\t%-10d%-.6s... %8.2f%10d%18.2f\n",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]); tot5al+=(goods_pr[i]*goods_num[i]); } printf("\t========================================================\n"); printf("\t总计:%50.2f\n",total); } //打印商品小票(分页) void print_goods_bill_yes(int count,char goods_name[ ][LEN],double goods_pr[],int goods_num[]) { int i=1,j,k=0; int order[MAX/5]; double total=0.0; for(j=0;j if(goods_num[j]!=0) if(i++%5==1) order[k++]=j; if(count<=5) { printf("\n\n\t商品编号 商品名称 商品单价 商品数量 \t商品小计\n"); printf("\t========================================================\n"); if(count==0) printf("\n\t\t\t无购物信息!\n\n"); else { for(i=0;i { if(goods_num[i]!=0) if(strlen(goods_name[i])<=8) printf("\t%-10d%-10s%8.2f%10d%18.2f\n",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]); else printf("\t%-10d%-.6s... %8.2f%10d%18.2f\n",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]); total+=(goods_pr[i]*goods_num[i]); } } printf("\t========================================================\n"); printf("\t总计:%50.2f\n",total); } else { i=1; for(;;) { printf("\n\n\t商品编号 商品名称 商品单价 商品数量 \t商品小计\n"); printf("\t========================================================\n"); j=0; for(k=order[i-1];k { if(goods_num[k]!=0) { if(strlen(goods_name[k])<=8) printf("\t%-10d%-10s%8.2f%10d%18.2f\n",k,goods_name[k],goods_pr[k],goods_num[k],goods_pr[k]*goods_num[k]); else printf("\t%-10d%-.6s... %8.2f%10d%18.2f\n",k,goods_name[k],goods_pr[k],goods_num[k],goods_pr[k]*goods_num[k]); if(++j==5) break; } } if((count%5==0&&i==count/5)||i==count/5+1) { for(j=0;j { if(goods_num[j]!=0) total+=(goods_pr[j]*goods_num[j]); } printf("\t========================================================\n"); printf("\t总计:%50.2f\n",total); } total=0.0; printf("\n\t|< "); if(count%5==0) { for(i=1;i<=count/5;i++) printf("%d ",i); printf(">|\n"); } else { for(i=1;i<=count/5+1;i++) printf("%d ",i); printf(">|\n"); } printf("\n\t请输入显示第几页商品信息(请不要超过最大页数,暂不检查异常)!"); scanf("%d",&i); system("cls"); } } } //统计购买的商品数量 int count_goods_num(int goods_num[ ]) { int i,count=0; for(i=0;i { if(goods_num[i]!=0) ++count; } return count; } void print_line_copyright( ) { //下面固定输出版权信息 //个人根据情况不同,请修改成自己的信息 int split_num=24,split_i; //后面用,不可删除 char split_line='*'; //后面用,不可删除,可更改*为其他符号 printf("\n\n\t"); //我是分割线 for(split_i=1;split_i<=split_num;split_i++) printf("%c",split_line); printf("\n"); printf("\t 班级:XXXXXXX\n"); printf("\t 姓名:XXXXXXX\n"); printf("\t 学号:XXXXXXX\n"); printf("\t 系部:信息工程系\n\t"); //我是分割线 for(split_i=1;split_i<=split_num;split_i++) printf("%c",split_line); printf("\n"); getchar(); } void main() { double goods_pr[MAX]={1.2,2.3,3.1,2.5,2.8,4.2,2.15,3.05,5.5,6.1,14.3,50.2,15.8,24.6,20.3,15.3,14.0,18.6,21.5,22.5,1.2,2.3,3.1,2.5,2.8,4.2,2.15,3.05,5.5,6.1,14.3,50.2,15.8,24.6,20.3,15.3,14.0,18.6,21.5,22.5,5.5,6.1,14.3,50.2,15.8,24.6,20.3,15.3,14.0,18.6}; char goods_name[MAX][LEN]={"火龙果","桃子","梨","苹果","猕猴桃","康师傅方便面","娃哈哈矿泉水","冰糖雪梨","辣条","榨菜","大葱","香菜","胡萝卜","大白菜","猪头肉","五香牛肉","手帕纸","旺旺雪饼","豆腐","烤红薯","商品1","商品2","商品3","商品4","商品5","商品6","商品7","商品8","商品9","商品10","商品11","商品12","商品13","商品14","商品15","商品16","商品17","商品18","商品19","商品20","商品21","商品22","商品23","商品24","商品25","商品26","商品27","商品28","商品29","商品30"}; int goods_num[MAX]={0}; int count; //调用选购商品功能代码 init_goods_buy(goods_num); count=count_goods_num(goods_num); //清屏吧 system("cls"); //调用打印小票结账功能代码(不分页) //print_goods_bill_no(goods_name,goods_pr,goods_num); //调用打印小票结账功能代码(分页) print_goods_bill_yes(count,goods_name,goods_pr,goods_num); //调用打印分割线和版权信息功能代码 print_line_copyright( ); getchar(); }