学习嘛,当然多学一点是一点拉
----------------解决方案--------------------------------------------------------
请问这是什么意思
E:\c\text\text.cpp(19) : error C2601: 'main' : local function definitions are illegal E:\c\text\text.cpp(29) : fatal error C1004: unexpected end of file found Error executing cl.exe.
----------------解决方案--------------------------------------------------------
#include <stdio.h> void fun (int x[3][3]) { int i,j,temp; for(i=0;i<3-1;i++) { for(j=i+1;j<3;j++) { temp=x[i][j]; x[i][j]=x[j][i]; x[j][i]=temp; printf("%d\t",x[i][j]); } printf("\n"); }
void main() { int i,j,x[3][3]; for (i=0;i<3;i++) { for(j=0;j<3;j++) scanf ("%d",&x[i][j]); } fun(x); }
这样应该可以吧 不过有个错误我找不到
请高手指点下
----------------解决方案--------------------------------------------------------
哈哈,temp=*((int *)x+i*n+j); 这个是什么意思?
首先,需要明白的是数组指的是静态的,他们在内存中是连续的,无论是一维还是多维数组都是这样。那么强制转换x为指向整形的指针,这样做是为了x+i时表示是指向第i个整形的指针。而不是其他类型的。比如说(char *)x+i;那么它表示的是以x为首地址的指向第i个字符型的指针。按照多维数组在计算机内存中的连续排序规律那么,x[i][j]的地址,不就是 第i*n+j个吗即地址=(int *)x+i*n+j;
----------------解决方案--------------------------------------------------------
小弟我也来写一个啦,望大家指点一下咯
#include<stdio.h> #define M 3 #define N 3 void Tarray(int (*p)[N]);
void main() { int i,j,a[M][N] = { 1,2,3, 4,5,6, 7,8,9 }; for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%d ",a[i][j]); printf("\n"); } Tarray(a); printf("\n\nAfter transfer the array is:\n\n"); for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%d ",a[i][j]); } printf("\n"); } }
void Tarray(int (*p)[N]) { int iCount,jCount,temp; for(iCount=0;iCount<M;iCount++) { for(jCount=iCount;jCount<N;jCount++) { temp=*(*(p + iCount) + jCount); *(*(p + iCount) + jCount) = *(*(p + jCount) + iCount); *(*(p + jCount) + iCount) = temp; } } }
----------------解决方案--------------------------------------------------------
学习编程算法比什么都重要啊!写法格式什么的都是一种形式只要算法学到手无论学什么编程都是一样的啊!
----------------解决方案--------------------------------------------------------
学习编程算法比什么都重要啊!写法格式什么的都是一种形式只要算法学到手无论学什么编程都是一样的啊!
晕死,算法当然是最核心的,但是如果你光有思想,无法实现的话!!就等于是空想!!
----------------解决方案--------------------------------------------------------
晕死!!你的fun少些一个}
米白了吗!!
----------------解决方案--------------------------------------------------------
[QUOTE]
首先,需要明白的是数组指的是静态的,他们在内存中是连续的,无论是一维还是多维数组都是这样。那么强制转换x为指向整形的指针,这样做是为了x+i时表示是指向第i个整形的指针。而不是其他类型的。比如说(char *)x+i;那么它表示的是以x为首地址的指向第i个字符型的指针。按照多维数组在计算机内存中的连续排序规律那么,x[i][j]的地址,不就是 第i*n+j个吗即地址=(int *)x+i*n+j;
[/QUOTE]明白了----------------解决方案--------------------------------------------------------
其实中间那一段向下面这样写也行,那个X本来就是指向数组的首地址
temp=*(x+n*i+j); *(x+n*i+j)=*(x+n*j+i); *(x+n*j+i)=temp;
----------------解决方案--------------------------------------------------------