一个c语言问题,为什么下面的程序执行后,会有一行0,为什么!!
你的文章好乱!!!
改改再上来问吧
------
回复此文章 |
for(p=leader;p<leader+4;p++)
改for(p=leader;p<leader+3;p++)
因为指针和数组是从0开始的
你好好想想
------
回复此文章 |
Firstly, you should use loop such as for loop, while loop;
Secondly, you need strcmp function which can compare two
strings.
------
回复此文章 |
#include<string.h>
struct guozhw
{
int no;
char name[20];
float maths;
float eng;
float chin;
float total;
float average;
}leader[3];
main()
{
int i;
int j;
struct guozhw *p;
for(i=1;i<=3;i++)
{
scanf("%d",&leader<i>.no);
scanf("%s",&leader<i>.name);
scanf("%f",&leader<i>.maths);
scanf("%f",&leader<i>.eng);
scanf("%f",&leader<i>.chin);
leader<i>.total=leade<i>.maths+leader<i>.eng+leader<i>.chin;
leader<i>.average=leader<i>.total/3;
}
printf ("No. Name Maths Eng Chin Total Average\n");
for(p=leader;p<leader+4;p++)
printf("%d %-5s %10f %10f %10f %15f %10f\n",p->no,p->name,p->maths,p->eng,p->chin,p->total,p->average);
}
------
回复此文章 |
if(leader.name==leader.name)
pritnf ("you scanf wrong");
你可以看看关于c语言书中的那个投票的例子你会明白你的错误
我知道是与函数有关可是我忘了那个函数是什么了?
------
回复此文章 |
haohao 你错了,我找到错了,是由于for(i=1;i<=3;i++)
中的i=1不能等于1而是零,那就可以了,可是我现在又有个问题了
在输入名字和学号时,要是相同该怎么办?
在这时候,我想让它输出错误可是不可以!
我是这样想的!
if(leader.name==leader.name)
pritnf ("you scanf wrong");
可是不坐在知道怎么加,或许这么办错了,但是应该怎么办,才能制止同名或
同号的出现呢?
haohao meiking 有办法吗?
其他人有没有办法呀!!!!
------
回复此文章 |
/* 防止同名出现 */
int r;
for(i=0;i<=3;i++)
{
scanf("%d",&leader<i>.no);
scanf("%s",&leader<i>.name);
for(r=0;r<i;r++)
{
if(leader<i>.name==leader[r].name)
pritnf("you scanf wrong");
i--; /* 如果出现同名,i值保持不变,跳出本次循环 */
continue;
}
scanf("%f",&leader<i>.maths);
scanf("%f",&leader<i>.eng);
scanf("%f",&leader<i>.chin);
leader<i>.total=leade<i>.maths+leader<i>.eng+leader<i>.chin;
leader<i>.average=leader<i>.total/3;
}
你自己再试试吧,我只是凭空想的
------
回复此文章 |
这样做也是不行的,因为关于字符串的==我认为是不行的因为我试过可能有这样一个函数strcmp()是用来做字符/i>
改改再上来问吧
------
回复此文章 |
for(p=leader;p<leader+4;p++)
改for(p=leader;p<leader+3;p++)
因为指针和数组是从0开始的
你好好想想
------
回复此文章 |
Firstly, you should use loop such as for loop, while loop;
Secondly, you need strcmp function which can compare two
strings.
------
回复此文章 |
#include<string.h>
struct guozhw
{
int no;
char name[20];
float maths;
float eng;
float chin;
float total;
float average;
}leader[3];
main()
{
int i;
int j;
struct guozhw *p;
for(i=1;i<=3;i++)
{
scanf("%d",&leader<i>.no);
scanf("%s",&leader<i>.name);
scanf("%f",&leader<i>.maths);
scanf("%f",&leader<i>.eng);
scanf("%f",&leader<i>.chin);
leader<i>.total=leade<i>.maths+leader<i>.eng+leader<i>.chin;
leader<i>.average=leader<i>.total/3;
}
printf ("No. Name Maths Eng Chin Total Average\n");
for(p=leader;p<leader+4;p++)
printf("%d %-5s %10f %10f %10f %15f %10f\n",p->no,p->name,p->maths,p->eng,p->chin,p->total,p->average);
}
------
回复此文章 |
if(leader.name==leader.name)
pritnf ("you scanf wrong");
你可以看看关于c语言书中的那个投票的例子你会明白你的错误
我知道是与函数有关可是我忘了那个函数是什么了?
------
回复此文章 |
haohao 你错了,我找到错了,是由于for(i=1;i<=3;i++)
中的i=1不能等于1而是零,那就可以了,可是我现在又有个问题了
在输入名字和学号时,要是相同该怎么办?
在这时候,我想让它输出错误可是不可以!
我是这样想的!
if(leader.name==leader.name)
pritnf ("you scanf wrong");
可是不坐在知道怎么加,或许这么办错了,但是应该怎么办,才能制止同名或
同号的出现呢?
haohao meiking 有办法吗?
其他人有没有办法呀!!!!
------
回复此文章 |
/* 防止同名出现 */
int r;
for(i=0;i<=3;i++)
{
scanf("%d",&leader<i>.no);
scanf("%s",&leader<i>.name);
for(r=0;r<i;r++)
{
if(leader<i>.name==leader[r].name)
pritnf("you scanf wrong");
i--; /* 如果出现同名,i值保持不变,跳出本次循环 */
continue;
}
scanf("%f",&leader<i>.maths);
scanf("%f",&leader<i>.eng);
scanf("%f",&leader<i>.chin);
leader<i>.total=leade<i>.maths+leader<i>.eng+leader<i>.chin;
leader<i>.average=leader<i>.total/3;
}
你自己再试试吧,我只是凭空想的
------
回复此文章 |
这样做也是不行的,因为关于字符串的==我认为是不行的因为我试过可能有这样一个函数strcmp()是用来做字符/i>
hofman
2005-11-19 22:02:54
评论:0
阅读:1220
引用:0
