|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<string.h>
#define N 1000
struct Machine//定义结构体
{
char no[20];//设备编号
char kind[10];//设备种类
char name[20];//设备名称
float price;//设备价格
char buyday[10];//设备购入日期
char judge[10];//判断设备是否报废
char scrapday[10];//如果报废,则报废日期是多少
};
void input(Machine a[],int n);//对设备信息的录入
void output(Machine a[],int n);//对设备信息的输出
void modify(Machine a[],int n); //修改设备信息
int searchno(Machine a[],int n,char x[]);//根据设备编号找需要修改的设备
void search(Machine a[],int n);//查询设备的信息
void tj(Machine a[],int n);//统计设备信息
void kindtj(Machine a[],int n);//按种类统计
void scraptj(Machine a[],int n);//按报废统计
void save(Machine a[],int n);//保存数据到文件中
void read(Machine a[],int n);//从文件中读入数据
int menu();//显示菜单
void tj(Machine a[],int n)//统计设备
{
int choice,s;
printf("请选择统计方法:1 按设备种类统计 2 按设备报废统计 0 退出\n");
scanf("%d",&s);
while(1)
{
switch(s)
{
case 1: kindtj(a,n);break;
case 2: scraptj(a,n);break;
case 0: return;
default:printf("你的输入错误!无法执行!请重输!\n");break;
}
}
printf("统计完成!\n");
}
void kindtj(Machine a[],int n)//按照种类统计
{
char b[20];
int i,j,c,v[1000]={0};
for(i=0;i<n;i++)
{
c=0;
strcpy(b,a[i].kind);
for(j=0;j<n;j++)
{
if(strcmp(b,a[j].kind)==0 && v[i]==0)
{c++;v[j]=1;}
}
printf("%s一共有:%d\n",b,c);
}
}
void scraptj(Machine a[],int n)//按照是否报废统计
{
char b[10]="yes";
int i,c=0,d=0;
for(i=0;i<n;i++)
{
if(strcmp(b,a[i].judge)==0) c++;
else d++;
}
printf("报废一共有%d个\n",c);
printf("完好一共有%d个\n",d);
}
这是我的课程设计
其中的统计函数,用main函数调用后,输出之后,无限循环输出,不能正常输出
求助在座各位帮我看看
由于代码太长我只截取了一部分,如果还需要哪点请给我说下,非常感谢能帮我看看的大家!!!!
void tj(Machine a[],int n)//统计设备
{
int choice,s;
printf("请选择统计方法:1 按设备种类统计 2 按设备报废统计 0 退出\n");
scanf("%d",&s);
while(1)
{
switch(s)
{
case 1: kindtj(a,n);break;
case 2: scraptj(a,n);break;
case 0: return;
default:printf("你的输入错误!无法执行!请重输!\n");break;
}
}
printf("统计完成!\n");
}
================================
在你的统计函数里面,除了输入为0可正常跳出循环,其余输入皆为死循环;
即只有一次输入机会判定后续动作;不可正常跳出
//PS:请仔细阅读switch(){case}中的break到底是跳转出那个语句
|
|