为什么代码能够运行 但是功能11却没反应啊?

问题遇到的现象和发生背景

是一个关于图书管理系统的实验设计

问题相关代码,请勿粘贴截图

这是前面的函数声明

typedef struct book /定义/
{
char shuming[20];
char zuozhe[20];
char shuhao[20];
char riqi[20];
char danwei[20];
char price[20];
struct booknext;
}booklist,
pointer;
int n=0;
pointer head=NULL;
booklist pjprice[100];
int menu();
void insert(pointer
head);
void scan(pointer head);
void add(pointer
head) ;
void shumingshanchu(pointer head);
void shuhaoshanchu(pointer head);
void xiugai(pointer head);
void search_shuming(pointer head);
void search_shuhao(pointer head);
void paixu_price(pointer
head);
void paixu_riqi(pointer
head);
void sumave(booklist pjprice[],int n);

这是功能11

void sumave(booklist pjprice[],int n)
{
int i,sum=0;
float ave;

for(i=0; pjprice[i].price; i++)
{
    sum+=atof(pjprice[i].price);
}
ave=(float)sum/n;
printf("%d图书价格总和为::%d\n",i,sum);
printf("%d图书平均价格为:%.2f\n",i,ave);
system("pause");

}

运行结果及报错内容

没有报错,但无法运行功能11


for(i=0; pjprice[i].price; i++)
改为
for(i=0; i<n; i++)

(1)for循环的第二个条件不对
(2)sum改成float类型,否则在for循环中计算的时候会损失数据
代码修改如下:


void sumave(booklist pjprice[], int n)
{
    int i;
    float sum = 0;
    float ave;

    for (i = 0; i<n; i++)
    {
        sum += atof(pjprice[i].price);
    }
    ave = sum / n;
    printf("%d图书价格总和为:%.2f\n", i, sum);
    printf("%d图书平均价格为:%.2f\n", i, ave);
    system("pause");
}

你的结构体中price为什么要用char数组呢,直接用float多省事啊

void sumave(booklist pjprice[], int n)
{
    float sum = 0;
    for (int i = 0; i < n; i++)
        sum += atof(pjprice[i].price);
    float ave = sum / n;
    printf("%d图书价格总和为: %.2f\n", sum);
    printf("%d图书平均价格为: %.2f\n", ave);
}

(1)for循环的第二个条件不对
(2)sum改成float类型,否则在for循环中计算的时候会损失数据

1、for循环这样写,


for (int i = 0; i < n; i++)

2、sum改成float类型,否则在for循环中计算的时候会损失数据