| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1384 人关注过本帖
标题:大一刚刚接触c语言,编程出现了问题,不知道错误在哪里
只看楼主 加入收藏
zyf965491096
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-3-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
大一刚刚接触c语言,编程出现了问题,不知道错误在哪里
代码如下
#include<stdio.h>
int main()
{
    struct Student
    {
        int num;
        char name[1000];
        char sex;
        int age;
        int score;
    }temp;
    int i, j;
    struct Student stu[20];
    for (i = 0; i<20; i++)
        scanf("%d,%s,%c,%d,%d", &stu[i].num, stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score);
    printf("num      name     sex      age      score    \n");
    for (i = 0; i<20; i++)
        printf("%-9d%-9s%-9c%-9d%-9d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score);
    for (i = 19; i>0; i--)
    {
        for (j = 19; j>19 - i; j--)
            if (stu[j].score>stu[j - 1].score) temp = stu[j], stu[j] = stu[j - 1], stu[j - 1] = temp;
    }
    printf("num      name     sex      age      score    \n");
    for (i = 0; i<20; i++)
        printf("%-9d%-9s%-9c%-9d%-9d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
然后结果变成这样了,不知道哪里变量定义错误或者输入输出出现问题。希望有大神帮忙看看!
搜索更多相关主题的帖子: include c语言 
2017-03-13 00:12
mj0011
Rank: 2
等 级:论坛游民
帖 子:24
专家分:39
注 册:2014-12-23
收藏
得分:10 
程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>

int main(int argc ,char **argv)
{
    struct Student
    {
        int num;
        char name[1000];
        char sex;
        int age;
        int score;
    };
    int i, j;
    struct Student stu[20] = { 0 };
    struct Student temp = { 0 };
    FILE *fp;
    if (argc != 2)
        exit(1);

    if ((fp = fopen(argv[1], "r")) == NULL)
    {
        printf("can't open file, please try to agina.");
        exit(1);
    }
    for (i = 0; i<20; i++)
        fscanf(fp ,"%d %s %c %d %d", &stu[i].num, &stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score);
    printf("num      name     sex      age      score    \n");
    for (i = 0; i<20; i++)
        printf("%d%10s%10c%9d%9d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score);
    for (i = 0; i<20; i++)
    {
        for (j = i + 1; j < 20 ;j++)
            if (stu[j].score > stu[i].score)
            {

                temp = stu[i];

                stu[i] = stu[j ];

                stu[j] = temp;
            }
               

    }
    printf("num      name     sex      age      score    \n");
    for (i = 0; i<20; i++)
        printf("%d%10s%10c%9d%9d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score);

    fclose(fp);
    return 0;
}
程序稍作改动每次手动输入实在太麻烦,还有sex原谅我不厚道的笑了
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2017-3-13 03:28编辑过]

2017-03-13 03:22
zyf965491096
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-3-13
收藏
得分:0 
回复 2楼 mj0011
谢谢!现在刚刚开始学,很多函数都不知道,所以只能用简单粗暴而且没有实用性的方法做题,但是我还是想知道我的代码为什么会出现错误。
2017-03-13 08:48
zyf965491096
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-3-13
收藏
得分:0 
回复 2楼 mj0011
是我的temp没有赋予初值么。。还是什么原因,会出现这个怪怪的数字
2017-03-13 08:50
zyf965491096
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-3-13
收藏
得分:0 
回复 2楼 mj0011
谢谢!现在刚刚开始学,很多函数都不知道,所以只能用简单粗暴而且没有实用性的方法做题,但是我还是想知道我的代码为什么会出现错误。
2017-03-13 09:31
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:10 
我在这里没发现什么
图片附件: 游客没有浏览图片的权限,请 登录注册
程序代码:
#include<stdio.h>
int main()
{
    struct Student
    {
        int num;
        char name[20];                         //足够用了
        char sex;
        int age;
        int score;
    }temp;
    int i, j;
    struct Student stu[3];                 //举3个例子省事
    for (i = 0; i<3; i++)
        scanf("%d %s %c %d %d", &stu[i].num, stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score); //把间隔改成空格
    printf("num      name     sex      age      score    \n");
    for (i = 0; i<3; i++)
        printf("%-9d%-9s%-9c%-9d%-9d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score);
    for (i = 3; i>0; i--)                                        //同样改少
    {
        for (j = 2; j>3 - i; j--)
            if (stu[j].score>stu[j - 1].score) temp = stu[j], stu[j] = stu[j - 1], stu[j - 1] = temp;
    }
    printf("num      name     sex      age      score    \n");
    for (i = 0; i<3; i++)
        printf("%-9d%-9s%-9c%-9d%-9d\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score);
    return 0;
}

我是硬件工程师
2017-03-13 13:52
快速回复:大一刚刚接触c语言,编程出现了问题,不知道错误在哪里
数据加载中...
 
   



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

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