task1

1.是连续存放的,相等。
2.按行连续存放。三者相同。差值16byte,含义是一行四个int值共占4*sizeof(int)==16字节
task2

1.形参是x[ ],实参是x.
2.遍历输入长度为n的数组x
算出所有得分去掉最高最低分的均分
task 3

1.形参x[ ][N],实参x
2.不能。会报错,数组不知道每多少个整型变量算一行,无法正确划分空间。
3.遍历输出二维数组,初始化数组(全都赋同一个值)。
task4
1 #include <stdio.h> 2 #define N 100 3 double median(int x[],int n); 4 void input(int x[],int n); 5 int main(){ 6 int x[N]; 7 int n; 8 double ans; 9 10 while(printf("Enter n: "),scanf("%d",&n)!=EOF){ 11 input(x,n); 12 ans=median(x,n); 13 printf("ans = %g\n\n",ans); 14 } 15 16 return 0; 17 } 18 19 double median(int x[],int n){ 20 for(int i=n;i>1;i--){ 21 for(int j=1;j<i;j++){ 22 if(x[j]>x[j+1]){ 23 int t=x[j+1]; 24 x[j+1]=x[j]; 25 x[j]=t; 26 } 27 } 28 } 29 if(n%2==1) return x[(n+1)/2]; 30 else return (x[n/2]+x[n/2+1])/2.0; 31 } 32 void input(int x[],int n){ 33 for(int i=1;i<=n;i++){ 34 scanf("%d",&x[i]); 35 } 36 }

task 5
1 #include <stdio.h> 2 #define N 100 3 4 void input(int x[][N], int n); 5 void output(int x[][N], int n); 6 void rotate_to_right(int x[][N], int n); 7 // ??rotate_to_right?? 8 // ??? 9 int main() { 10 int x[N][N]; 11 int n; 12 printf("Enter n: "); 13 scanf("%d", &n); 14 input(x, n); 15 printf("Ôʼ¾ØÕó:\n"); 16 output(x, n); 17 rotate_to_right(x,n); 18 // ??rotate_to_right?? 19 // ??? 20 printf("±ä»»ºó¾ØÕó:\n"); 21 output(x, n); 22 return 0; 23 } 24 // ???? 25 // ??: ????n*n???x 26 void input(int x[][N], int n) { 27 int i, j; 28 for (i = 0; i < n; ++i) { 29 for (j = 0; j < n; ++j) 30 scanf("%d", &x[i][j]); 31 } 32 } 33 // ???? 34 // ??: ????n*n???x 35 void output(int x[][N], int n) { 36 int i, j; 37 for (i = 0; i < n; ++i) { 38 for (j = 0; j < n; ++j) 39 printf("%4d", x[i][j]); 40 printf("\n"); 41 } 42 } 43 void rotate_to_right(int x[][N], int n){ 44 int t; 45 for(int i=0;i<n;i++){ 46 t=x[i][n-1]; 47 for(int j=n-1;j>=1;j--){ 48 x[i][j]=x[i][j-1]; 49 } 50 x[i][0]=t; 51 } 52 }

task 6
1 #include <stdio.h> 2 #define N 100 3 void dec_to_n(int x, int n); // ???? 4 int main() { 5 int x; 6 while(printf("ÊäÈëÊ®½øÖÆÕûÊý: "), scanf("%d", &x) != EOF) { 7 dec_to_n(x, 2); // ????: ?x???????? 8 dec_to_n(x, 8); // ????: ?x???????? 9 dec_to_n(x, 16); // ????: ?x????????? 10 printf("\n"); 11 } 12 return 0; 13 } 14 void dec_to_n(int x,int n){ 15 int a[N]; 16 int r=1; 17 while(x){ 18 a[r++]=x%n; 19 x/=n; 20 } 21 while(--r){ 22 if(a[r]>=10) 23 printf("%c",(char)(a[r]-10+'A')); 24 else 25 printf("%d",a[r]); 26 } 27 printf("\n"); 28 }

task 7
1 #include <stdio.h> 2 #define N 100 3 // ???? 4 void input(int x[][N], int n); 5 void output(int x[][N], int n); 6 // ?????is_magic?? 7 // xxx 8 int is_magic(int x[][N],int n); 9 int main() { 10 int x[N][N]; 11 int n; 12 while(printf("??n: "), scanf("%d", &n) != EOF) { 13 printf("????:\n"); 14 input(x, n); 15 printf("????:\n"); 16 output(x, n); 17 if(is_magic(x, n)) 18 printf("yes\n\n"); 19 else 20 printf("no\n\n"); 21 } 22 return 0; 23 } 24 // ???? 25 // ??: ????n*n???x 26 void input(int x[][N], int n) { 27 int i, j; 28 29 for (i = 0; i < n; ++i) { 30 for (j = 0; j < n; ++j) 31 scanf("%d", &x[i][j]); 32 } 33 } 34 // ??: ????n*n???x 35 void output(int x[][N], int n) { 36 int i, j; 37 for (i = 0; i < n; ++i) { 38 for (j = 0; j < n; ++j) 39 printf("%4d", x[i][j]); 40 printf("\n"); 41 } 42 } 43 int is_magic(int x[][N],int n){ 44 static int a[N]; 45 for(int i=0;i<n;i++) 46 for(int j=0;j<n;j++) 47 a[x[i][j]]=1; 48 for(int i=1;i<=n*n;i++){ 49 if(a[i]==0) return 0; 50 } 51 int sum0=n*(n*n+1)/2; 52 int sum; 53 for(int i=0;i<n;i++){ 54 sum=0; 55 for(int j=0;j<n;j++){ 56 sum+=x[i][j]; 57 } 58 if(sum!=sum0) return 0; 59 } 60 for(int j=0;j<n;j++){ 61 sum=0; 62 for(int i=0;i<n;i++){ 63 sum+=x[i][j]; 64 } 65 if(sum!=sum0) return 0; 66 } 67 sum=0; 68 for(int i=0;i<n;i++){ 69 sum+=x[i][i]; 70 } 71 if(sum!=sum0) return 0; 72 sum=0; 73 for(int i=0;i<n;i++){ 74 sum+=x[i][n-i-1]; 75 } 76 if(sum!=sum0) return 0; 77 return 1; 78 }

task 8
1 #include <stdio.h> 2 using namespace std; 3 4 const int N=10; 5 int num[N]; 6 bool judge(int n); 7 void cnt(int x); 8 void init(); 9 int main(){ 10 for(int i=1;;i++){ 11 if(judge(i)){ 12 printf("%d",i); 13 break; 14 } 15 } 16 return 0; 17 } 18 bool judge(int n){ 19 int square=n*n; 20 int cube=n*n*n; 21 init(); 22 cnt(square); 23 cnt(cube); 24 for(int i=0;i<=9;i++){ 25 if(num[i]!=1) return false; 26 } 27 return true; 28 } 29 void cnt(int x){ 30 int t; 31 for(int i=1;x!=0;i++){ 32 t=x%10; 33 num[t]++; 34 x/=10; 35 } 36 } 37 void init(){ 38 for(int i=0;i<=9;i++) 39 num[i]=0; 40 }

浙公网安备 33010602011771号