标题:输入10到15个数字按最大最小第二大第二小第三大第三小……输出
只看楼主
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
结帖率:100%
已结贴  问题点数:20 回复次数:6 
输入10到15个数字按最大最小第二大第二小第三大第三小……输出
#include <stdio.h>



int main()
{
    int n = 0, shuzu[20];
    int num[20];

    printf("请输入数字:");
    while (scanf_s("%s", &num, 100))
    {
        if (!strcmp(num, "ok") || !strcmp(num, "OK"))   //strcmp函数   比较函数,  #include <string.h> // strcmp()函数头文件
        {
            break;
        }
        shuzu[n] = atoi(num);    //atoi函数           #include<stdlib.h> // atoi()函数头文件
        n = n + 1;                //输入一个数字  n+1
    }
    int temp, i;
    for (i = 0; i < n-1  ; i++)         //因为数组两两比较,第一层循环中最后一个为数组倒数第二个
    {
        for (int j = i + 1; j < n; j++)////因为数组两两比较,第二层循环中每一个都是第一层循环数字后一个开始
        {
            if (shuzu[i] < shuzu[j])
            {
                temp = shuzu[i];
                shuzu[i] = shuzu[j];
                shuzu[j] = temp;
            }
        }
    }
    printf("排序后:");
    for (i = 0; i < n / 2; i++)
    {
        printf("%d ", shuzu[i]);
        printf("%d ", shuzu[n - i - 1]);
    }
    if (n % 2 == 1)
    {
        printf("%d ", shuzu[i]);
    }
    return 0;
}

大佬们输出不正确,不知道哪里问题
搜索更多相关主题的帖子: num 函数 输入 int printf 
2022-08-22 21:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
大佬们输出不正确,不知道哪里问题
什么不正确?编译不正确,还是运行结果不符合你的预期?
编译不正确的话,贴出编译错误;
    比如 格式字符串“%s”需要类型“char *”的参数,但可变参数 1 拥有了类型“int (*)[20]”
    比如 “strcmp”: 找不到标识符
    比如 “atoi”: 找不到标识符
运行结果不正确的话,贴出你的输入数据,你期待的输出数据。
2022-08-22 22:16
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
得分:0 
回复 2楼 rjsp
请输入数字:0 1 2 3 4 5 6 7 8 9
ok
排序后:9 -16843010 8 -16843010 7 -16843010 6 3 5 4

这个是输入输出
最后还引发异常Run-Time Check Failure #2 - Stack around the variable 'num' was corrupted.
2022-08-22 22:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用wuxiami在2022-8-22 22:58:02的发言:

请输入数字:0 1 2 3 4 5 6 7 8 9
ok
排序后:9 -16843010 8 -16843010 7 -16843010 6 3 5 4

这个是输入输出
最后还引发异常Run-Time Check Failure #2 - Stack around the variable 'num' was corrupted.

首先你的代码就不能编译通过,int num[20]; 应该是 char num[20]
其次你用了这个 scanf_s 超恶心的函数,那就得依照它的要求来,
int num[20];  while (scanf_s("%s", &num, 100)
改为
char num[20]; while (scanf_s("%s", num, 20))
2022-08-23 07:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
另外,while (scanf_s("%s", &num, 100)) 也是瞎写,scanf_s("%s" 什么时候会返回0?
2022-08-23 07:58
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:10 
while (scanf_s("%s", &num, 100))改为 while (scanf_s("%d", &num))
scanf_s返回正确输入的个数,因此当输入非数字时,返回值是0,循环里的那个if也可以删了。
2022-08-23 09:21
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
得分:0 
多谢大佬
2022-08-25 11:44



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




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

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