| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:[讨论]请教一个结构算法~~~
只看楼主 加入收藏
流浪魂
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-4-21
收藏
 问题点数:0 回复次数:4 
[讨论]请教一个结构算法~~~
下面是一个从几个学生当中找出两科成绩中至少有一科不及格的学生,
并输出其姓名(为了快,我只用了两个人)

       程序在若是在定义结构体的时候对它进行初始化,运行就不会有问题,
若是在运行的时候对它进行赋值,程序就会出现逻辑错误,

下面我给出我写的程序

定义的时候初始化:
程序(1):
#include< stdio.h>
struct student
{
    int id;
    char name[20];
    float score1;
    float score2;
}stu[2]={1,"name1",55,94,2,"name2",77,88};

main()
{
    int i;
    for(i=0;i<2;i++)
    {
        if(stu[  i].score1<60 || stu[  i].score2<60)
           printf("%s\n",stu[  i].name);
    }
    system("pause");
}


上 面的程序运行的时候没有问题


下面的是运行的时候对它进行赋值
程序(2):
#include<stdio.h>
struct student
{
    int id;
    char name[20];
    float score1;
    float score2;
}stu[2];

main()
{
    int i;
    for(i=0;i<2;i++)
       scanf("%d,%s,%f,%f",&stu[  i].id,stu[  i].name,&stu[   i].score1,
&stu[  i].score2);
    for(i=0;i<2;i++)
    {
        if(stu[  i].score1<60 || stu[  i].score2<60)
           printf("%s\n",stu[  i].name);
    }
    system("pause");
}

运行的时候就会出现错误,就是在输出的时候会把 name 后的全都输入,而且这个
if  好象不起作用


然后我又改成下面这样对它进行赋值:

程序(3):
#include<stdio.h>
struct student
{
    int id;
    char name[20];
    float score1;
    float score2;
}stu[2];
main()
{  
   int i;
    for(i=0;i<2;i++)
   {  
         scanf("%d",&stu[  i].id);
         scanf("%s",stu[  i].name);
         scanf("%f",&stu[  i].score1);
         scanf("%f",&stu[  i].score2);
   }
   for(i=0;i<2;i++)
   {
          if(stu[  i].score1<60 || stu[  i].score2<60)
          printf("%s\n",stu[  i].name);
    }
    system("pause");
}

若是这样就,运行的时候,在输入值的时候就会出现“scanf : floating point formats not linked Abnormal program termination"的错误

出现这样的错误于是我又改成下面这样

程序(4):
#include<stdio.h>
struct student
{
    int id;
    char name[20];
    float score1;
    float score2;
}stu[2];

main()
{
    int i;
    for(i=0;i<2;i++)
       scanf("%d%s%f%f",&stu[  i].id,stu[  i].name,&stu[   i].score1,
&stu[  i].score2);
    for(i=0;i<2;i++)
    {
        if(stu[  i].score1<60 || stu[  i].score2<60)
        printf("%s\n",stu[  i].name);
     }
    system("pause");
}

就是把程序(2)中的 scanf  里面的”,“给去了,程序在运行的时候,对它进行赋值时就会出现程序(3)一样的错误,就是”scanf : floating point formats not linked Abnormal program termination" 的错误



这个问题我想好久也没有解决,
哪个大虾知道这是怎么回事的???
望指点一下我这只菜鸟、??

俺在这先谢 了~~~~~(上面的程序用 TC,WIN-TC 都是一样的结果)
搜索更多相关主题的帖子: 结构 算法 
2005-04-27 20:42
牛虻
Rank: 1
等 级:新手上路
威 望:1
帖 子:472
专家分:0
注 册:2004-10-1
收藏
得分:0 
第二程序的错误我就不说了,第三个在turboc里可以运行,结果也正确,而第四个错误和第二个一样,再看看%s这个是怎么用的,有什么特点

土冒
2005-04-27 22:07
流浪魂
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-4-21
收藏
得分:0 
谢谢了
但把 float 型的换成 int 型的就可以了,啥问题就会没有了,请问一下这是为什么??

何谓菜鸟?,呵呵,就是会吃菜的鸟。
2005-04-28 12:59
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
解决之法有很多,以下是一种 加上这两句 float f=1.0,*ptr; ptr = &f; 这个问题已经讨论过很多次了,自己找一下,或者看http://blog.csdn.net/knocker_k/archive/2004/11/11/176738.aspx

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-04-28 20:02
流浪魂
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-4-21
收藏
得分:0 
谢谢了

何谓菜鸟?,呵呵,就是会吃菜的鸟。
2005-04-29 19:09
快速回复:[讨论]请教一个结构算法~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012150 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved