标题:如果说,将代码中while循环中的for循环中参数的s改成c会怎么样为什么
只看楼主
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
结帖率:89.47%
已结贴  问题点数:20 回复次数:3 
如果说,将代码中while循环中的for循环中参数的s改成c会怎么样为什么
程序代码:
//输出学生信息要求从大到小
#include<stdio.h>
#define miun 5
int main()
{
    struct stend
    {
        char name[20];
        int strd;
        float v;
    }vs[miun] = { {"李楠",10001,78.4},{"张敏",10002,98.5},{"刘晓丽",10003,89.3},{"美琪",10004,60.2},{"美雪",10005,99} };
    struct stend sm;
    printf("成绩排行\n");
    int s=0, c=0, f=0,ss;
    while (s < miun)
    {
        ss = s;
        for (c=s+1; c < miun; c++)  //c=s+1改成c=c+1;
        {
            if (vs[s].v < vs[c].v)
                ss = c;
            sm = vs[ss];
            vs[ss] = vs[s];
            vs[s] = sm;
        }
        s++;
    }
    while (f < miun)
    {
        printf("名字:%s\t学号:%d\t成绩:%3.2f\n", vs[f].name, vs[f].strd, vs[f].v);
        f++;
    }
}

搜索更多相关主题的帖子: 代码 循环 vs for while 
2019-09-11 11:49
c小白2333
Rank: 5Rank: 5
来 自:中国
等 级:贵宾
威 望:11
帖 子:121
专家分:367
注 册:2019-6-17
得分:7 
s改成c后
c无法进行初始值化
运行完第一个for (c=c+1; c < miun; c++)循环后
c>=miun 无法再次进入循环了
接下来进行的不过是s++
直到s>=miun退出while循环

宝剑锋从磨砺出,梅花香自苦寒来。
2019-09-12 08:55
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:7 
也可以改成c++或(++c),不过前提是:要让c跟着s走,可以将s的值赋给c。

[此贴子已经被作者于2019-9-12 09:52编辑过]

2019-09-12 09:49
沈和
Rank: 2
等 级:论坛游民
威 望:5
帖 子:22
专家分:81
注 册:2019-8-26
得分:7 
楼上答主说的很对,我对代码的格式有一些建议。
可以用for 来代替while,这样循环变量就不用提前定义,代码看起来更简练一些。
变量名如果起得能看到它的作用,就更好了。
如果一行代码比较长,你可以换行。

我把代码整理了下,给题主作为参考。
程序代码:
#include <stdio.h>

#define COUNT 5

int main(void)
{
    struct student 
    {
        char name[20];
        int student_no;
        float score;
    };

    struct student students[COUNT] = {
        {"李楠", 10001, 78.5},
        {"张敏", 10002, 98.5},
        {"刘晓丽", 10003, 89},
        {"美琪", 10004, 60},
        {"美雪", 10005, 99}
    };

    // 按成绩排序,使用选择排序算法
    for(int i = 0; i < COUNT; ++i)
    {
        int stored = i;
        for(int j = i+1; j < COUNT; ++j)
        {
            if(students[i].score < students[j].score)
                stored = j;
        }

        if (stored != i)
        {
            struct student stu = students[i];
            students[i] = students[stored];
            students[stored] = stu;
        }
    }

    // 按成绩由高到低打印学生信息
    for(int i = 0; i < COUNT; ++i)
    {
        printf("名字:%4s\t学号:%d\t成绩:%f\n", 
                students[i].name, 
                students[i].student_no, 
                students[i].score);
    }

    return 0;
}
2019-09-12 13:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496785-1-1.html




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

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