C语言数组问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数组问题相关的知识,希望对你有一定的参考价值。
问题是从键盘任意输入10个整数,将其中最大数与最小数的位置对换,然后输出对换后的10个数。[提示:用一维数组存放这10个数]。要求输入的数用空格分开,输出的也是。我的程序如果要运行10 2 1 3 4 5 6 7 8 9就终止,这是为什么?求指导
#include#define N 11
void jiaohuan(int num[]);
int main()
int num[N],a;
for(a=0;a<N;a++)
scanf("%d",&num[a]);
jiaohuan(num);
for(a=0;a<N-1;a++)
printf("%d ",num[a]);
printf("%d",num[N-1]);
return 0;
void jiaohuan(int num[])
int u,i,max,min,b,c,qu;
max=num[0];
min=num[0];
for(u=1;u<N;u++)
if(max<num[u])
max=num[u];
b=u;
for(i=1;inum[i])
min=num[i];
c=i;
qu=num[b];
num[b]=num[c];
num[c]=qu;
程序问题不大,只是不太明白,为什么呢只用10个数字却定义十一个。另外处理方法里面的求取最大值和最小值,在一个for循环里面足够了。可能的错误就是一些变量最好都能在使用之前能够初始化,代码如下:
#include<stdio.h>#define N 10
void jiaohuan(int num[]);
int main()
int num[N],a;
for(a=0;a<N;a++)
scanf("%d",&num[a]);
jiaohuan(num);
for(a=0;a<N;a++)
printf("%d ",num[a]);
// printf("%d",num[N-1]);
return 0;
void jiaohuan(int num[])
int u,max,min,b=0,c=0,qu;
max=num[0];
min=num[0];
for(u=1;u<N;u++)
if(max<num[u])
max=num[u];
b=u;
if(min>num[u])
min=num[u];
c=u;
/* for(i=1;inum[i])
min=num[i];
c=i;
*/
qu=num[b];
num[b]=num[c];
num[c]=qu;
参考技术A #include<stdio.h>
#define N 10
void jiaohuan(int * num);
int main()
int num[N],a;
for(a=0;a<N;a++)
scanf("%d",&num[a]);
jiaohuan(num);
for(a=0;a<N-1;a++)
printf("%d ",num[a]);
printf("%d",num[N-1]);
return 0;
void jiaohuan(int *num)
int u,i,max,min,b=0,c=0,qu;
max=num[0];
min=num[0];
for(u=1;u<N;u++)
if(max<num[u])
max=num[u];
b=u;
if(min>num[u])
min=num[u];
c=u;
qu=num[b];
num[b]=num[c];
num[c]=qu;
参考技术B 这里没错吗for(i=1;inum[i])
min=num[i];
c=i;
C语言三维数组问题
int p[3][4][5];
int *q=(int *)p;
int(*s)[5]=&p[1][0];
int i;
for(i=0;i<60;i++)
q[i]=i;
//printf("%d\n",p[1][7][1]);
//printf("%d\n",(*(s+1))[3]);
printf("%d\n",p[1][7][1]*(*(s+1))[3]);
这个怎么理解定义int p[3][4][5];引用的时候p[1][7][1]没有超出范围吗?大神给个详细的指点
上面数组和指针一节关于这些讲得很清楚。
以上是关于C语言数组问题的主要内容,如果未能解决你的问题,请参考以下文章