程曦的晨曦 发表于 2021-7-20 23:10:35

一个关于数组输入的简单问题,具体情况在程序内已经注释

#include<stdio.h>
int Swap(int x[],int n);
int main()
{
        int *p;
        int a={12,23,45,67,29};//如果改为从键盘输入数组即scanf语句,为什么结果是乱码
        int i;
        printf("Beginning\n");
        p=a;
       Swap(a,10);
       for(i=0;i<5;i++)
       {
               printf("please output the array:%d\n",a);
       }
}
int Swap(int x[],int n)
{
        int i,j,temp;
        for(i=0;i<4;i++)
        {
                for(j=i+1;j<5;j++)
                {
                        if(x<x)
                        {
                                temp=x;
                                x=x;
                                x=temp;
                        }
                       
                }
        }
        return x;
       
}

chxchxkkk 发表于 2021-7-21 00:27:14

1.printf("please output the array:%d\n",a); 此处如果要输出数组元素应该是 a
2. if(x<x)         以下x应该是x
                        {
                              temp=x;
                              x=x;
                              x=temp;
                        }

SHRS23 发表于 2021-7-21 01:14:40

scanf之后把你的数组直接打印出来,看看程序有没有读到你的输入

程曦的晨曦 发表于 2021-7-23 19:20:20

本帖最后由 程曦的晨曦 于 2021-7-23 19:24 编辑

SHRS23 发表于 2021-7-21 01:14
scanf之后把你的数组直接打印出来,看看程序有没有读到你的输入

我试了一下,我先从键盘输入,然后输出出来的是乱码
(红色的是我改的)
#include<stdio.h>
int Swap(int x[],int n);
int main()
{
        int *p;
        int a;//如果改为从键盘输入数组即scanf语句,为什么结果是乱码
        int i;
       
        for(i=0;i<5;i++)
        {
                scanf("请输出这个数组:%d",&a);
        }
        for(i=0;i<5;i++)
        {
          printf("先输出原来数组%d\n",a);
        }
        printf("Beginning\n");
        p=a;
       Swap(a,10);
       for(i=0;i<5;i++)
       {
               printf("please output the array:%d\n",a);
       }
}
int Swap(int x[],int n)
{
        int i,j,temp;
        for(i=0;i<4;i++)
        {
                for(j=i+1;j<5;j++)
                {
                        if(x<x)
                        {
                                temp=x;
                                x=x;
                                x=temp;
                        }
                       
                }
        }
        return x;
       
}

程曦的晨曦 发表于 2021-7-23 19:21:25

程曦的晨曦 发表于 2021-7-23 19:20
我试了一下,我先从键盘输入,然后输出出来的是乱码
(红色的是我改的)
#include


它这个有的a或者x(数组)没有显示出来,实际上是有的

万千只cnm 发表于 2021-7-23 22:42:40

你解引用输入呀
a

2242164602 发表于 2021-7-23 23:20:17

本帖最后由 2242164602 于 2021-7-23 23:34 编辑

1. int a={12,23,45,67,29};最好【】里面的数字大于元素个数,防止不小心越界

2.scanf("%d %d %d %d %d\n"a,a,a,a,a);每输入一个元素用空格隔开。
或者用循环的话就
for(i=0;i<5;i++)
      {
                scanf("%d",a【i】);
      }
scanf里面就不要打中文提示什么的了。

3.a中的a是数组名,也是数组首地址,不能&a这样,直接写a就行了,不然&a就是取地址的地址。

4.for(i=0;i<5;i++)
      {
            printf("先输出原来数组%d\n",a【i】);
      }
记住,是,a【i】;不然a只是个地址(%d整型打印出罢了),而且你这循环a都没变。

5.你程序中的   if(x<x)   这是什么意思,x是你函数的形参的数组名,数组名是地址,你拿地址和一个整型变量比较?

程曦的晨曦 发表于 2021-7-24 19:16:09

2242164602 发表于 2021-7-23 23:20
1. int a={12,23,45,67,29};最好【】里面的数字大于元素个数,防止不小心越界

2.scanf("%d %d %d % ...

这个x其实是一个数组,只是我复制粘贴没显示,不过非常感谢你的回复
页: [1]
查看完整版本: 一个关于数组输入的简单问题,具体情况在程序内已经注释