int main(){ FILE *fin = fopen("transform.in","r"); FILE *fout = fopen("transform.out","w"); //freopen("/home/plac/fproblem/input.txt","r",stdin); //freopen("/home/plac/fproblem/output.txt","w",stdout); fscanf(fin,"%d",&n); memset(str,0,sizeof(str)); memset(change,0,sizeof(change)); for(int i = 1; i <= n;i ++) fscanf(fin,"%s",&str[i][1]); for(int i =1 ;i<= n; i ++ ) fscanf(fin,"%s",&change[i][1]); if(change1(str)) fprintf(fout,"1\n"); else if(change2(str)) fprintf(fout,"2\n"); else if(change3(str)) fprintf(fout,"3\n"); else if(change4(str)) fprintf(fout,"4\n"); else if(change5(str)) fprintf(fout,"5\n"); else if(change6(str)) fprintf(fout,"6\n"); else fprintf(fout,"7\n"); return 0 ; }
int main(int argc, const char * argv[]) { int number =10; int n = change(number); printf("n=%d\n",n); printf("number=%d\n",number);//在这里number的值还是10,因为作用蜮的原因,传递的是值而不是地址。在swift中也是这样, int ages[3] = {1,2,3}; #pragma mark-zkz------用数组作为函数的参数的函数,在函数里修改数组的值,会影响外边的数组的值 //数组名就是数组的地址。 change1(ages); int count = sizeof(ages)/sizeof(int); for (int i = 0; i<count; i++) { printf("ages[%d]=%d\n",i,ages[i]); //ages[0]=88; } #warning mark-zkz- #pragma mark--zkz---当数组作为参数传递的时候是地址传递,所以自动转换成指针类型,指针类型和其他数据类型一样也是占据一定的存储空间,占用8个字节。所以数组无论有多大,它打印只是8个字节的元素。 int ages1[3]={1,3,5}; int count2 = sizeof(ages1); printf("main size count2 = %d\n",count2); change2(ages1);//打印的是1,3但是没有打印5因为指针类型的占用8个字节两个int类型一共占有8个字节,要想全部便利那么就要再传递那个数组的长度。 change3(ages1,count2/sizeof(int));//在传递数组名(地址)的同时还要传递数组的长度。 return 0; }
int change5(char s[][100]) { for(int i = 1;i<= n;i ++) for(int j = 1;j<= n;j ++) { temp[i][j] = s[i][n-j+1]; } if(change1(temp)) return 1; if(change2(temp)) return 1; if(change3(temp)) return 1; return 0 ; }