鱼C论坛

 找回密码
 立即注册
查看: 2508|回复: 7

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

[复制链接]
发表于 2021-7-20 23:10:35 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int Swap(int x[],int n);
int main()
{
        int *p;
        int a[5]={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[i]);
         }
}
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[i]<x[j])
                        {
                                temp=x[i];
                                x[i]=x[j];
                                x[j]=temp;
                        }
                       
                }
        }
        return x[5];
       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 00:27:14 | 显示全部楼层
1.printf("please output the array:%d\n",a); 此处如果要输出数组元素应该是 a[i]
2. if(x<x[j])         以下x应该是x[i]
                        {
                                temp=x;
                                x=x[j];
                                x[j]=temp;
                        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 01:14:40 | 显示全部楼层
scanf之后把你的数组直接打印出来,看看程序有没有读到你的输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[5];//如果改为从键盘输入数组即scanf语句,为什么结果是乱码
        int i;
       
        for(i=0;i<5;i++)
        {
                scanf("请输出这个数组:%d",&a[i]);
        }
        for(i=0;i<5;i++)
        {
            printf("先输出原来数组%d\n",a[i]);
        }

        printf("Beginning\n");
        p=a;
         Swap(a,10);
         for(i=0;i<5;i++)
         {
                 printf("please output the array:%d\n",a[i]);
         }
}
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[i]<x[j])
                        {
                                temp=x[i];
                                x[i]=x[j];
                                x[j]=temp;
                        }
                       
                }
        }
        return x[5];
       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


它这个有的a[i]或者x[i](数组)没有显示出来,实际上是有的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 22:42:40 | 显示全部楼层
你解引用输入呀
a[i]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 23:20:17 | 显示全部楼层
本帖最后由 2242164602 于 2021-7-23 23:34 编辑

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

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

3.a[5]  中的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[j])   这是什么意思,x是你函数的形参的数组名,数组名是地址,你拿地址和一个整型变量比较?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 19:16:09 | 显示全部楼层
2242164602 发表于 2021-7-23 23:20
1. int a[5]={12,23,45,67,29};  最好【】里面的数字大于元素个数,防止不小心越界

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

这个x[i]其实是一个数组,只是我复制粘贴没显示,不过非常感谢你的回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 20:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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