鱼C论坛

 找回密码
 立即注册
查看: 2764|回复: 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
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int i,j,t,n, a[10] = {0};
  5.         do
  6.         {
  7.                 printf("请输入一个大于1小于等于10的整数:");
  8.                 scanf("%d",&n);
  9.         } while(n<=1||n>10);
  10.         printf("please input %d numbers:",n);
  11.         for(i=0; i<n; i++)
  12.         {
  13.                 scanf("%d",&a[i]);
  14.         }
  15.         for(j=0; j<n-1; j++)
  16.         {
  17.                 for(i=0; i<n-1-j; i++)
  18.                 {
  19.                         if(a[i]>a[i+1])
  20.                         {
  21.                                 t=a[i];
  22.                                 a[i]=a[i+1];
  23.                                 a[i+1]=t;
  24.                         }
  25.                 }
  26.         }

  27.         for(i=0; i<n; i++)
  28.         {
  29.                 printf("%d ",a[i]);
  30.         }
  31.         return 0;
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-31 10:20:21 | 显示全部楼层
你用的是什么编译器?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

vc6++
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:37:48 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

VC6.0里面的C标准是C89,一些特性不支持,代码是没有错的,用其他编译器把void main()改为int main()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

或者改成下面这个,应该可以在vc++6.0使用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 10:45:34 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int i,j,t,n, a[10] = {0};
  5.         do
  6.         {
  7.                 printf("请输入一个大于1小于等于10的整数:");
  8.                 scanf("%d",&n);
  9.         } while(n<=1||n>10);
  10.         printf("please input %d numbers:",n);
  11.         for(i=0; i<n; i++)
  12.         {
  13.                 scanf("%d",&a[i]);
  14.         }
  15.         for(j=0; j<n-1; j++)
  16.         {
  17.                 for(i=0; i<n-1-j; i++)
  18.                 {
  19.                         if(a[i]>a[i+1])
  20.                         {
  21.                                 t=a[i];
  22.                                 a[i]=a[i+1];
  23.                                 a[i+1]=t;
  24.                         }
  25.                 }
  26.         }

  27.         for(i=0; i<n; i++)
  28.         {
  29.                 printf("%d ",a[i]);
  30.         }
  31.         return 0;
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

老师我的代码问题出在哪里,你的编码我试了一下没错误,但我没找到我的问题出在哪
小甲鱼最新课程 -> https://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是很久以前的了,对于现在的一些特性都不兼容,也就是不能使用新特性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

对的,vc不支持c99特性,而变长数组是属于c99的特性
小甲鱼最新课程 -> https://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来判别的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我是根据题目的要求,事先设定一个能满足最大容量的数组,我们使用时,只需使用从0到n-1里面存放的数组元素,后面的不用去管
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



  4. int main() {
  5.     size_t i, j, n;
  6.     int t;
  7.     int* a;

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

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

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

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

  15.     for (j = 0; j < n - 1; j++) {
  16.         for (i = 0; i < n - 1 - j; i++) {
  17.             if (a[i] > a[i + 1]) {
  18.                 t = a[i];
  19.                 a[i] = a[i + 1];
  20.                 a[i + 1] = t;
  21.             }
  22.         }
  23.     }

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

  27.     return 0;
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 11:54:35 | 显示全部楼层
数组定义时不能用变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那这样的话你式子中写的int a[10]={0},没必要把a[10]={0},因为后面还会赋值的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不去赋值也是可以的,我这是习惯把它初始化
小甲鱼最新课程 -> https://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]);
    }
}
老师为什么我这样编码,系统还是说有错误?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  1. #include <stdio.h>
  2. void main()
  3. {
  4.         int i,j,t,n;
  5.         do
  6.         {
  7.                 printf("请输入一个大于1小于等于10的整数:");
  8.                 scanf("%d",&n);
  9.         } while(n<=1||n>10);
  10.         int a[10];
  11.         printf("please input %d numbers:",n);
  12.         for(i=0; i<n; i++)
  13.         {
  14.                 // a[i]不是a
  15.                 scanf("%d",&a[i]);
  16.         }
  17.         for(j=0; j<n-1; j++)
  18.         {
  19.                 for(i=0; i<n-1-j; i++)
  20.                 {
  21.                         // 到最后把a改为a[i],你把a[i]写成a了
  22.                         if(a[i]>a[i+1])
  23.                         {

  24.                                 t=a[i];
  25.                                 a[i]=a[i+1];
  26.                                 a[i+1]=t;
  27.                         }
  28.                 }
  29.         }

  30.         for(i=0; i<n; i++)
  31.         {
  32.                 printf("%d",a[i]);
  33.         }
  34. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


小甲鱼最新课程 -> https://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]);
    }
}
这样的话还是显示有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 12:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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