第七章 数组
【题7.1-7.52】 CDDAC CCDBC DDBCA CDDDB BBBAB DCCDB DBDDD BDDAD
C(BB)(ADA)AB AADAD BB
【题7.53】 【1】常量表达式 【2】常量表达式
【题7.54】 按行主顺序存放
【题7.55】 【1】0 【2】4
【题7.56】 i*m+j+1
【题7.57】 【1】0 【2】6
【题7.58】 10 4 6 8 2 4 6 12 2
【题7.59】 【1】&a[i] 【2】i%4==0 【3】printf(“\n”);
【题7.60】 【1】j<=2 【2】b[j][i]=a[i][j]【3】i<=2
【题7.61】 array a:
1 2 3
4 5 6
array b:
4
2 5
3 6
【题7.62】 【1】j=2 【2】j>=0
【题7.63】 The result is:
1
6 7
11 12 13
16 17 18 19
21 22 23 24 25
【题7.64】 【1】i==j 【2】a[i][j]
【题7.65】 【1】m=100;m<1000 【2】m/10-x*10 【3】a[i]=m
【题7.66】 【1】x[i-1]+x[i-2] 【2】fabs((double)(x[i-1]-x[i]))
【3】i+2
【题7.67】 The result is:
1: 8
2: 5
3: 6
4: 3
【题7.68】 The original array is:
2 4 6
8 10 12
The result is:
2 8
10
6 12
【题7.69】 【1】i=1 【2】b[i]=a[i]+a[i-1] 【3】(i%3)
【题7.70】 【1】% 【2】/ 【3】j=i; j>=1; j--
【题7.71】 【1】i=j=k 【2】k=i 【3】a[j]=max;a[k]=min;
【题7.72】 1 2 3
5 8 13 21
34 55
【题7.73】 1 2 3 4 5
【题7.74】 【1】j=4 【2】a[0]=k
【题7.75】 【1】m=n/2+1 【2】n-i-1 【3】n-i-1
【题7.76】 10010
【题7.77】 【1】b[i][j+1]=a[i][j] 【2】i=0;i<2 【3】printf(“\n”)
【题7.78】 【1】a[age-16]++; 【2】i=16;i<32;
【题7.79】 【1】i=j+1 【2】found=1
【题7.80】 【1】i<10 【2】i<10 【3】i%3==0
【题7.81】 1 3 4 5
【题7.82】 7
【题7.83】 【1】continue 【2】a[i]
【题7.84】 【1】a[i][j]+b[i][j] 【2】printf(“\n”)
【题7.85】 【1】k=s=0 【2】a[i][k]*b[k][j] 【3】printf(“\n”);
【题7.86】 【1】y[i]+=a[i][j]*x[j]; 【2】y[k]
【题7.87】 【1】num[i]<0 【2】num[i]+sum
【题7.88】 计算数组num中大于零的数据之和
【题7.89】 min=-2,row=2,col=1
【题7.90】 Search Successful! The index is,5
【题7.91】 The index is,6
【题7.92】 【1】break 【2】i==8
【题7.93】 【1】a[8]=x 【2】i<8
【题7.94】 【1】i-1 【2】a[j+1]=a[j] 【3】a[j+1]
【题7.95】 【1】a[i]>b[j] 【2】i<3 【3】j<5
【题7.96】 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
【题7.97】 The data 3245 has been converted into the 8-base data:
6 2 5 5
【题7.98】 5 7 4 8 9 1
1 5 7 4 8 9
9 1 5 7 4 8
8 9 1 5 7 4
4 8 9 1 5 7
7 4 8 9 1 5
【题7.99】 The number is,5,The average is,5.000000
【题7.100】 a[1]=3
a[2]=4
a[3]=3
【题7.101】 9 7 5 5 3 1
【题7.102】 The result is:
6.00 16.00 26.00 36.00 46.00 56.00
【题7.103】 【1】i=0;i<n;i++ 【2】j=i;j<n;j++ 【3】s*=x[i][j];
【题7.104】 The result = 27648
【题7.105】 9
【题7.106】 600
【题7.107】 【1】i<=7 【2】j=i+7
【题7.108】 he
【题7.109】 【1】strlen(t) 【2】t[k]==c
【题7.110】 【1】(strcmp(str[0],str[1])<0?str[0]:str[1]) 【2】s
【题7.111】 【1】a[0]=c-1 【2】a[2]=c+1
【题7.112】 【1】t=a[5] 【2】a[i]=a[i-1]
【题7.113】 【1】j++ 【2】a[i]>a[j]
【题7.114】 【1】a[i]==’c’ 【2】k++
【题7.115】 【1】a[i]=s[i][0] 【2】a[i]=s[i][j]
【题7.116】 t*M
【题7.117】 Sun:3
Moon:4
【题7.118】 4
【题7.119】 7078
9198
【题7.120】 aabcd
【题7.121】 AzyD
【题7.122】 #&*&%
【题7.123】 AQM
【题7.124】 PAGE
【题7.125】 y12
【题7.126】 #define M 50
main()
{
int a[M],c[5],i,n = 0,x;
printf(“Enter 0 or 1 or 2 or 3 or 4,to end with –1\n”);
scanf(“%d”,&x);
while (x != -1)
{
if (x >= 0 && x <= 4)
{
a[n] = x;
n++;
}
scanf(“%d”,&x);
}
for (i=0; i<5; i++)
c[i] = 0;
for (i=0; i<n; i++)
c[a[i]]++;
printf(“The result is:\n”);
for (i=0; i<=4; i++)
printf(“%d:%d\n”,i c[i]);
printf(“\n”);
}
【题7.127】 main()
{
int a[5][4] = {3,6,2,1,3,9,0,8,2,1,5,6,7,2,7,4,0,0,0,0};
int i,j;
for (i=0; i<4; i++)
for (j=0; j<4; j++)
a[4][j] += a[i][j];
printf(“The result is:\n”);
for (i=0; i<4; i++)
printf(“%3d”,a[4][j]);
}
【题7.128】 #define SIZE 30
main()
{
float b[SIZE/5],sum;
int a[SIZE],i,j,k;
for (k=2,i=0; i<SIZE; i++)
{
a[i] = k;
k += 2;
}
sum = 0.0;
for (k=0,i=0; i<SIZE; i++)
{
sum += a[i];
j = i + 1;
if ((i+1)%5 == 0)
{
b[k] = sum / 5;
sum = 0;
k++;
}
}
printf(“The result is:\n”);
for (i=0; i<SIZE; i++)
printf(“%5.2f,,b[i]);
printf(“\n”);
}
【题7.129】 main()
{
int i,j,a[2][3] = {{2,4,6},{8,10,12}};
printf(“The original array is:\n”);
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
printf(“%4d”,a[i][j]);
printf(“\n”);
}
printf(“\nThe result is:\n”);
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
printf(“%4d”,a[j][i]);
printf(“\n”);
}
}
【题7.130】 main()
{
int a [5][5],i,j,n = 1;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
a[i][j] = n++;
printf(“The result is:\n”);
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
printf(“%4d”,a[i][j]);
printf(“\n”);
}
}
【题7.131】 main()
{
int a[10][10],i,j,k = 0,m,n;
printf(“Enter n (n<10):\n”);
scanf(“%d”,&n);
if (n % 2 == 0)
m = n / 2;
else
m = n / 2 + 1;
for (i=0; i<m; i++)
{
for (j=i; j<n-i; j++)
{
k++;
a[i][j] = k;
}
for (j=i+1; j<n-i; j++)
{
k++;
a[j][n-i-1] = k;
}
for (j=n-i-2; j>=i; j--)
{
k++;
a[n-i-1][j] = k;
}
for (j=n-i-2; j>=i+1; j--)
{
k++;
a[j][i] = k;
}
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf(“%5d”,a[i][j]);
printf(“\n”);
}
}
【题7.132】 main()
{
int a[10],b[10],i;
for (i=0; i<10; i++)
scanf(“%d”,&a[i]);
for (i=1; i<10; i++)
b[i] = a[i] / a[i-1];
for (i=1; i<10; i++)
{
printf(“%3d”,b[i]);
if (i % 3 == 0)
printf(“\n”);
}
}
【题7.133】 #include <stdio.h>
main()
{
char a[12] =,adfgikmnprs”,c;
int i,top,bot,mid;
printf(“Input a character\n”);
scanf(“%c”,&c);
printf(“c=\’%c\’\n”,c);
for (top=0,bot=10; top<=bot; )
{
mid = (top + bot) / 2;
if (c == a[mid])
{
printf(“The position is %d\n”,mid+1);
break;
}
else if (c > a[mid])
top = mid + 1;
else
bot = mid – 1;
}
if (top > bot)
printf(“* *\n”);
}
【题7.134】 #include <stdio.h>
#include <string.h>
main()
{
char a[80],b[80];
int i = 0,j;
printf(“Input two strings.\n”);
gets(a);
gets(b);
while (a[i++] != ‘\0’)
;
for (j=0,i--; j<5&&b[j]!=’\0’; j++)
a[i++] = b[j];
a[i] = ‘\0’;
puts(a);
}
【题7.135】 #include <stdio.h>
#include <string.h>
main()
{
char a[80],b[] =,ab”,max;
int i = 1,j;
printf(“Input a string\n”);
gets(a);
puts(a);
max = a[0];
while (a[i] != ‘\0’)
{
if (a[i] > max)
{
max = a[i];
j = i;
}
i++;
}
for (i=strlen(a)+2; i>j; i--)
a[i] = a[i-2];
a[i+1] = ‘a’;
a[i+2] = ‘b’;
puts(a);
}
【题7.1-7.52】 CDDAC CCDBC DDBCA CDDDB BBBAB DCCDB DBDDD BDDAD
C(BB)(ADA)AB AADAD BB
【题7.53】 【1】常量表达式 【2】常量表达式
【题7.54】 按行主顺序存放
【题7.55】 【1】0 【2】4
【题7.56】 i*m+j+1
【题7.57】 【1】0 【2】6
【题7.58】 10 4 6 8 2 4 6 12 2
【题7.59】 【1】&a[i] 【2】i%4==0 【3】printf(“\n”);
【题7.60】 【1】j<=2 【2】b[j][i]=a[i][j]【3】i<=2
【题7.61】 array a:
1 2 3
4 5 6
array b:
4
2 5
3 6
【题7.62】 【1】j=2 【2】j>=0
【题7.63】 The result is:
1
6 7
11 12 13
16 17 18 19
21 22 23 24 25
【题7.64】 【1】i==j 【2】a[i][j]
【题7.65】 【1】m=100;m<1000 【2】m/10-x*10 【3】a[i]=m
【题7.66】 【1】x[i-1]+x[i-2] 【2】fabs((double)(x[i-1]-x[i]))
【3】i+2
【题7.67】 The result is:
1: 8
2: 5
3: 6
4: 3
【题7.68】 The original array is:
2 4 6
8 10 12
The result is:
2 8
10
6 12
【题7.69】 【1】i=1 【2】b[i]=a[i]+a[i-1] 【3】(i%3)
【题7.70】 【1】% 【2】/ 【3】j=i; j>=1; j--
【题7.71】 【1】i=j=k 【2】k=i 【3】a[j]=max;a[k]=min;
【题7.72】 1 2 3
5 8 13 21
34 55
【题7.73】 1 2 3 4 5
【题7.74】 【1】j=4 【2】a[0]=k
【题7.75】 【1】m=n/2+1 【2】n-i-1 【3】n-i-1
【题7.76】 10010
【题7.77】 【1】b[i][j+1]=a[i][j] 【2】i=0;i<2 【3】printf(“\n”)
【题7.78】 【1】a[age-16]++; 【2】i=16;i<32;
【题7.79】 【1】i=j+1 【2】found=1
【题7.80】 【1】i<10 【2】i<10 【3】i%3==0
【题7.81】 1 3 4 5
【题7.82】 7
【题7.83】 【1】continue 【2】a[i]
【题7.84】 【1】a[i][j]+b[i][j] 【2】printf(“\n”)
【题7.85】 【1】k=s=0 【2】a[i][k]*b[k][j] 【3】printf(“\n”);
【题7.86】 【1】y[i]+=a[i][j]*x[j]; 【2】y[k]
【题7.87】 【1】num[i]<0 【2】num[i]+sum
【题7.88】 计算数组num中大于零的数据之和
【题7.89】 min=-2,row=2,col=1
【题7.90】 Search Successful! The index is,5
【题7.91】 The index is,6
【题7.92】 【1】break 【2】i==8
【题7.93】 【1】a[8]=x 【2】i<8
【题7.94】 【1】i-1 【2】a[j+1]=a[j] 【3】a[j+1]
【题7.95】 【1】a[i]>b[j] 【2】i<3 【3】j<5
【题7.96】 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
【题7.97】 The data 3245 has been converted into the 8-base data:
6 2 5 5
【题7.98】 5 7 4 8 9 1
1 5 7 4 8 9
9 1 5 7 4 8
8 9 1 5 7 4
4 8 9 1 5 7
7 4 8 9 1 5
【题7.99】 The number is,5,The average is,5.000000
【题7.100】 a[1]=3
a[2]=4
a[3]=3
【题7.101】 9 7 5 5 3 1
【题7.102】 The result is:
6.00 16.00 26.00 36.00 46.00 56.00
【题7.103】 【1】i=0;i<n;i++ 【2】j=i;j<n;j++ 【3】s*=x[i][j];
【题7.104】 The result = 27648
【题7.105】 9
【题7.106】 600
【题7.107】 【1】i<=7 【2】j=i+7
【题7.108】 he
【题7.109】 【1】strlen(t) 【2】t[k]==c
【题7.110】 【1】(strcmp(str[0],str[1])<0?str[0]:str[1]) 【2】s
【题7.111】 【1】a[0]=c-1 【2】a[2]=c+1
【题7.112】 【1】t=a[5] 【2】a[i]=a[i-1]
【题7.113】 【1】j++ 【2】a[i]>a[j]
【题7.114】 【1】a[i]==’c’ 【2】k++
【题7.115】 【1】a[i]=s[i][0] 【2】a[i]=s[i][j]
【题7.116】 t*M
【题7.117】 Sun:3
Moon:4
【题7.118】 4
【题7.119】 7078
9198
【题7.120】 aabcd
【题7.121】 AzyD
【题7.122】 #&*&%
【题7.123】 AQM
【题7.124】 PAGE
【题7.125】 y12
【题7.126】 #define M 50
main()
{
int a[M],c[5],i,n = 0,x;
printf(“Enter 0 or 1 or 2 or 3 or 4,to end with –1\n”);
scanf(“%d”,&x);
while (x != -1)
{
if (x >= 0 && x <= 4)
{
a[n] = x;
n++;
}
scanf(“%d”,&x);
}
for (i=0; i<5; i++)
c[i] = 0;
for (i=0; i<n; i++)
c[a[i]]++;
printf(“The result is:\n”);
for (i=0; i<=4; i++)
printf(“%d:%d\n”,i c[i]);
printf(“\n”);
}
【题7.127】 main()
{
int a[5][4] = {3,6,2,1,3,9,0,8,2,1,5,6,7,2,7,4,0,0,0,0};
int i,j;
for (i=0; i<4; i++)
for (j=0; j<4; j++)
a[4][j] += a[i][j];
printf(“The result is:\n”);
for (i=0; i<4; i++)
printf(“%3d”,a[4][j]);
}
【题7.128】 #define SIZE 30
main()
{
float b[SIZE/5],sum;
int a[SIZE],i,j,k;
for (k=2,i=0; i<SIZE; i++)
{
a[i] = k;
k += 2;
}
sum = 0.0;
for (k=0,i=0; i<SIZE; i++)
{
sum += a[i];
j = i + 1;
if ((i+1)%5 == 0)
{
b[k] = sum / 5;
sum = 0;
k++;
}
}
printf(“The result is:\n”);
for (i=0; i<SIZE; i++)
printf(“%5.2f,,b[i]);
printf(“\n”);
}
【题7.129】 main()
{
int i,j,a[2][3] = {{2,4,6},{8,10,12}};
printf(“The original array is:\n”);
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
printf(“%4d”,a[i][j]);
printf(“\n”);
}
printf(“\nThe result is:\n”);
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
printf(“%4d”,a[j][i]);
printf(“\n”);
}
}
【题7.130】 main()
{
int a [5][5],i,j,n = 1;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
a[i][j] = n++;
printf(“The result is:\n”);
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
printf(“%4d”,a[i][j]);
printf(“\n”);
}
}
【题7.131】 main()
{
int a[10][10],i,j,k = 0,m,n;
printf(“Enter n (n<10):\n”);
scanf(“%d”,&n);
if (n % 2 == 0)
m = n / 2;
else
m = n / 2 + 1;
for (i=0; i<m; i++)
{
for (j=i; j<n-i; j++)
{
k++;
a[i][j] = k;
}
for (j=i+1; j<n-i; j++)
{
k++;
a[j][n-i-1] = k;
}
for (j=n-i-2; j>=i; j--)
{
k++;
a[n-i-1][j] = k;
}
for (j=n-i-2; j>=i+1; j--)
{
k++;
a[j][i] = k;
}
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf(“%5d”,a[i][j]);
printf(“\n”);
}
}
【题7.132】 main()
{
int a[10],b[10],i;
for (i=0; i<10; i++)
scanf(“%d”,&a[i]);
for (i=1; i<10; i++)
b[i] = a[i] / a[i-1];
for (i=1; i<10; i++)
{
printf(“%3d”,b[i]);
if (i % 3 == 0)
printf(“\n”);
}
}
【题7.133】 #include <stdio.h>
main()
{
char a[12] =,adfgikmnprs”,c;
int i,top,bot,mid;
printf(“Input a character\n”);
scanf(“%c”,&c);
printf(“c=\’%c\’\n”,c);
for (top=0,bot=10; top<=bot; )
{
mid = (top + bot) / 2;
if (c == a[mid])
{
printf(“The position is %d\n”,mid+1);
break;
}
else if (c > a[mid])
top = mid + 1;
else
bot = mid – 1;
}
if (top > bot)
printf(“* *\n”);
}
【题7.134】 #include <stdio.h>
#include <string.h>
main()
{
char a[80],b[80];
int i = 0,j;
printf(“Input two strings.\n”);
gets(a);
gets(b);
while (a[i++] != ‘\0’)
;
for (j=0,i--; j<5&&b[j]!=’\0’; j++)
a[i++] = b[j];
a[i] = ‘\0’;
puts(a);
}
【题7.135】 #include <stdio.h>
#include <string.h>
main()
{
char a[80],b[] =,ab”,max;
int i = 1,j;
printf(“Input a string\n”);
gets(a);
puts(a);
max = a[0];
while (a[i] != ‘\0’)
{
if (a[i] > max)
{
max = a[i];
j = i;
}
i++;
}
for (i=strlen(a)+2; i>j; i--)
a[i] = a[i-2];
a[i+1] = ‘a’;
a[i+2] = ‘b’;
puts(a);
}