鱼C论坛

 找回密码
 立即注册
查看: 2278|回复: 46

[已解决]编码错误

[复制链接]
发表于 2020-8-31 10:18:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
void main()
{
        int i,j,t,n;
        do
        {
                printf("请输入一个大于1小于等于10的整数:");
                scanf("%d",&n);
        }while(n<=1||n>10);
        int a[n];
        printf("please input %d numbers:",n);
    for(i=0;i<n;i++)
        {
                scanf("%d",&a[i]);
        }
        for(j=0;j<n-1;j++)
        {
                for(i=0;i<n-1-j;i++)
                {
                        if(a[i]>a[i+1])
                        {
                                int t;
                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        }

        for(i=0;i<n;i++)
        {
                printf("%d",a[i]);
    }
}   我这个编码哪里有错误
最佳答案
2020-8-31 10:45:34
#include <stdio.h>
int main() 
{
        int i,j,t,n, a[10] = {0};
        do 
        {
                printf("请输入一个大于1小于等于10的整数:");
                scanf("%d",&n);
        } while(n<=1||n>10);
        printf("please input %d numbers:",n);
        for(i=0; i<n; i++) 
        {
                scanf("%d",&a[i]);
        }
        for(j=0; j<n-1; j++) 
        {
                for(i=0; i<n-1-j; i++) 
                {
                        if(a[i]>a[i+1]) 
                        {
                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        }

        for(i=0; i<n; i++) 
        {
                printf("%d ",a[i]);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-31 10:20:21 | 显示全部楼层
你用的是什么编译器?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 10:36:27 | 显示全部楼层
baige 发表于 2020-8-31 10:20
你用的是什么编译器?

vc6++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:37:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:39:40 | 显示全部楼层
本帖最后由 baige 于 2020-8-31 10:46 编辑

VC6.0里面的C标准是C89,一些特性不支持,代码是没有错的,用其他编译器把void main()改为int main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:41:33 | 显示全部楼层
本帖最后由 baige 于 2020-8-31 10:45 编辑

或者改成下面这个,应该可以在vc++6.0使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:45:34 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
int main() 
{
        int i,j,t,n, a[10] = {0};
        do 
        {
                printf("请输入一个大于1小于等于10的整数:");
                scanf("%d",&n);
        } while(n<=1||n>10);
        printf("please input %d numbers:",n);
        for(i=0; i<n; i++) 
        {
                scanf("%d",&a[i]);
        }
        for(j=0; j<n-1; j++) 
        {
                for(i=0; i<n-1-j; i++) 
                {
                        if(a[i]>a[i+1]) 
                        {
                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        }

        for(i=0; i<n; i++) 
        {
                printf("%d ",a[i]);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 10:52:30 | 显示全部楼层

老师我的代码问题出在哪里,你的编码我试了一下没错误,但我没找到我的问题出在哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:54:50 | 显示全部楼层
本帖最后由 baige 于 2020-8-31 10:57 编辑
雨天Zz 发表于 2020-8-31 10:52
老师我的代码问题出在哪里,你的编码我试了一下没错误,但我没找到我的问题出在哪


vc++6.0应该不支持int a[n],这样的写法
vc++6.0是很久以前的了,对于现在的一些特性都不兼容,也就是不能使用新特性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 11:00:55 | 显示全部楼层
雨天Zz 发表于 2020-8-31 10:52
老师我的代码问题出在哪里,你的编码我试了一下没错误,但我没找到我的问题出在哪

对的,vc不支持c99特性,而变长数组是属于c99的特性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 11:14:01 | 显示全部楼层
baige 发表于 2020-8-31 10:54
vc++6.0应该不支持int a[n],这样的写法
vc++6.0是很久以前的了,对于现在的一些特性都不兼容,也就是 ...

那如果说我要先输入一个n,才能知道数组的长度,那么在vc++6.0中该怎么表示这个数组呀,你上面写的是a[10],但是数组长度是根据输入的n来判别的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 11:16:45 | 显示全部楼层
雨天Zz 发表于 2020-8-31 11:14
那如果说我要先输入一个n,才能知道数组的长度,那么在vc++6.0中该怎么表示这个数组呀,你上面写的是a[10 ...

我是根据题目的要求,事先设定一个能满足最大容量的数组,我们使用时,只需使用从0到n-1里面存放的数组元素,后面的不用去管
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 11:26:35 | 显示全部楼层
雨天Zz 发表于 2020-8-31 11:14
那如果说我要先输入一个n,才能知道数组的长度,那么在vc++6.0中该怎么表示这个数组呀,你上面写的是a[10 ...
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>



int main() {
    size_t i, j, n;
    int t;
    int* a;

    printf("请输入一个的整数:");
    scanf("%d", &n);

    a = (int*)malloc(n * sizeof(int));

    printf("please input %d numbers:", n);

    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    for (j = 0; j < n - 1; j++) {
        for (i = 0; i < n - 1 - j; i++) {
            if (a[i] > a[i + 1]) {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }

    for (i = 0; i < n; i++) {
        printf("%d", a[i]);
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 11:54:35 | 显示全部楼层
数组定义时不能用变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 12:04:38 | 显示全部楼层
baige 发表于 2020-8-31 11:16
我是根据题目的要求,事先设定一个能满足最大容量的数组,我们使用时,只需使用从0到n-1里面存放的数组元 ...

那这样的话你式子中写的int a[10]={0},没必要把a[10]={0},因为后面还会赋值的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 12:08:10 | 显示全部楼层
雨天Zz 发表于 2020-8-31 12:04
那这样的话你式子中写的int a[10]={0},没必要把a[10]={0},因为后面还会赋值的

不去赋值也是可以的,我这是习惯把它初始化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 12:30:44 | 显示全部楼层

#include <stdio.h>
void main()
{
        int i,j,t,n;
        do
        {
                printf("请输入一个大于1小于等于10的整数:");
                scanf("%d",&n);
        }while(n<=1||n>10);
        int a[10];
        printf("please input %d numbers:",n);
    for(i=0;i<n;i++)
        {
                scanf("%d",&a[i]);
        }
        for(j=0;j<n-1;j++)
        {
                for(i=0;i<n-1-j;i++)
                {
                        if(a[i]>a[i+1])
                        {
                       
                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        }

        for(i=0;i<n;i++)
        {
                printf("%d",a[i]);
    }
}
老师为什么我这样编码,系统还是说有错误?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 12:33:46 | 显示全部楼层
本帖最后由 baige 于 2020-8-31 12:41 编辑
雨天Zz 发表于 2020-8-31 12:30
#include
void main()
{

#include <stdio.h>
void main() 
{
        int i,j,t,n;
        do
        {
                printf("请输入一个大于1小于等于10的整数:");
                scanf("%d",&n);
        } while(n<=1||n>10);
        int a[10];
        printf("please input %d numbers:",n);
        for(i=0; i<n; i++) 
        {
                // a[i]不是a
                scanf("%d",&a[i]);
        }
        for(j=0; j<n-1; j++) 
        {
                for(i=0; i<n-1-j; i++) 
                {
                        // 到最后把a改为a[i],你把a[i]写成a了 
                        if(a[i]>a[i+1]) 
                        {

                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        }

        for(i=0; i<n; i++) 
        {
                printf("%d",a[i]);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 12:34:43 | 显示全部楼层
本帖最后由 baige 于 2020-8-31 12:40 编辑
a[i]写成a了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 13:17:42 | 显示全部楼层

#include <stdio.h>
void main()
{
        int i,j,t,n;
        do
        {
                printf("请输入一个大于1小于等于10的整数:");
                scanf("%d",&n);
        }while(n<=1||n>10);
        int a[10];
        printf("please input %d numbers:",n);
    for(i=0;i<n;i++)
        {
                scanf("%d",&a[i]);
        }
        for(j=0;j<n-1;j++)
        {
                for(i=0;i<n-1-j;i++)
                {
                        if(a[i]>a[i+1])
                        {
                       
                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        }

        for(i=0;i<n;i++)
        {
                printf("%d",a[i]);
    }
}
这样的话还是显示有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表