一个关于数组输入的简单问题,具体情况在程序内已经注释
#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;
} 1.printf("please output the array:%d\n",a); 此处如果要输出数组元素应该是 a
2. if(x<x) 以下x应该是x
{
temp=x;
x=x;
x=temp;
} scanf之后把你的数组直接打印出来,看看程序有没有读到你的输入 本帖最后由 程曦的晨曦 于 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:20
我试了一下,我先从键盘输入,然后输出出来的是乱码
(红色的是我改的)
#include
它这个有的a或者x(数组)没有显示出来,实际上是有的 你解引用输入呀
a 本帖最后由 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是你函数的形参的数组名,数组名是地址,你拿地址和一个整型变量比较? 2242164602 发表于 2021-7-23 23:20
1. int a={12,23,45,67,29};最好【】里面的数字大于元素个数,防止不小心越界
2.scanf("%d %d %d % ...
这个x其实是一个数组,只是我复制粘贴没显示,不过非常感谢你的回复
页:
[1]