习题9.27
#include <stdio.h>
#define N 10
/*输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数*/
main()
{
char c;
int i, count[N] = {0};
while ((c = getchar()) != '\n')
{
if (c < '0' || c > '9')
{
continue;
}
else
{
++count[c - '0'];
}
}
for (i = 0; i< N; ++i)
{
printf("出现%d的次数为:%d\n", i, count[i]);
}
}
习题9.28
#include <stdio.h>
#define N 10
int fun(int* a, int m, int n);
main()
{
int* a[N];
int i;
int t;
for (i = 0; i < N; ++i)
{
scanf("%d", a+i);
}
for (i = 0; i < N; ++i)
{
printf("%d\t", a[i]);
}
printf("请输入某个数: ");
scanf("%d", &t);
t = fun(a, N, t);
if (-1 == t)
{
return;
}
for (i = 0; i < t; ++i)
{
printf("%d\t", a[i]);
}
putchar('\n');
}
int fun(int* a, int m, int n)
{
int i;
if (n < 1 || n >= m)
{
return -1;
}
for (i = n; i < m; ++i)
{
a[i-1] = a[i];
}
return m-1;
}
习题9.29
#include <stdlib.h>
#include <stdio.h>
#define N 11
void fun(int* a, int m, int* b, int n);
void arrout(int* arr, int n);
main()
{
int i;
int arr1[N] = {0};
int arr2[N] = {0};
for (i = 0; i < N; ++i)
{
arr1[i] = rand()%100;
}
printf("(1)输出原来第一组的数值:\n");
arrout(arr1, N);
printf("(2)输出原来第二组的数值:\n");
arrout(arr2, N);
fun(arr1, N, arr2, N);
printf("(3)输出后来第一组的数值:\n");
arrout(arr1, N);
printf("(4)输出后来第二组的数值:\n");
arrout(arr2, N);
}
void fun(int* a, int m, int* b, int n)
{
int i, j;
j = 0;
for (i = 0; i < m; ++i)
{
if (a[i]%2 != 0 && j < n)
{
b[j++] = a[i];
}
}
printf("总共有%d个奇数。\n", j);
}
void arrout(int* arr, int n)
{
int i;
for (i = 0; i < n; ++i)
{
printf("%d\t", arr[i]);
}
putchar('\n');
}
习题9.30
#include <stdio.h>
#define N 10
void charSort(char* carr, int n);
void carrIn(char* carr, int n);
void carrOut(char* carr, int n);
main()
{
char carr[N] = {0};
printf("(1)输入:\n");
carrIn(carr, N);
printf("\n(2)old:\n");
carrOut(carr, N);
charSort(carr, N);
printf("\n(3)new:\n");
carrOut(carr, N);
}
void charSort(char* carr, int n)
{
int i, j, t;
for (i = 0; i < n; ++i)
{
for (j = i+1; j < n; ++j)
{
if (carr[i] < carr[j])
{
t = carr[i];
carr[i] = carr[j];
carr[j] = t;
}
}
}
}
void carrIn(char* carr, int n)
{
int i;
for (i = 0; i < n; ++i)
{
scanf("%c", carr+i);
}
}
void carrOut(char* carr, int n)
{
int i;
for (i = 0; i < n; ++i)
{
printf("%c\t", carr[i]);
}
}
习题9.37
#include <stdio.h>
#include <stdlib.h>
#define FIVE 5
#define FOUR 4
void arrin(int* arr, int rows, int cols);
void arrout(int* arr, int rows, int cols);
void fun(int* arr, int rows, int cols);
main()
{
int aa[FIVE][FOUR] = {0};
arrin(aa, FIVE, FOUR);
printf("输出原始二维数组:\n");
arrout(&aa[0][0], FIVE, FOUR);
fun(&aa[0][0], FIVE, FOUR);
printf("输出改变后的二维数组:\n");
arrout(&aa[0][0], FIVE, FOUR);
}
//
void arrin(int* arr, int rows, int cols)
{
int i, j;
for (i = 0; i < rows; ++i)
{
for (j = 0; j < cols; ++j)
{
arr[i*cols + j] = rand()%100;
}
}
}
//
void arrout(int* arr, int rows, int cols)
{
int i, j;
for (i = 0; i < rows; ++i)
{
for (j = 0; j < cols; ++j)
{
printf("%d\t", arr[i*cols + j]);
}
putchar('\n');
}
}
//
void fun(int* arr, int rows, int cols)
{
int t, i, j, sum, s = 0;
for (i = 0; i < rows; ++i)
{
sum = 0;
for (j = 0; j < cols; ++j)
{
sum += arr[i*cols + j];
}
printf("第%d排:%d\n", i, sum);
if (s < sum)
{
s = sum;
t = j;
}
}
for (i = 0; i < cols; ++i)
{
j = arr[i];
arr[i] = arr[t*cols + i];
arr[t*cols + i] = j;
}
}
习题9.38
//习题9.38.c
#include <stdio.h>
#include <stdlib.h>
#define FIVE 5
void arrin(int* arr, int rows, int cols);
void arrout(int* arr, int rows, int cols);
void reverse(int* arr, int rows, int cols);
main()
{
int aa[FIVE][FIVE];
printf("请5×5的数组输入数值:\n");
arrin(&aa[0][0], FIVE, FIVE);
printf("输出原始数组:\n");
arrout(&aa[0][0], FIVE, FIVE);
reverse(&aa[0][0], FIVE, FIVE);
printf("输出逆转后的数组:\n");
arrout(&aa[0][0], FIVE, FIVE);
putchar('\n');
}
//输入二维数组(控制数值在100以内)
void arrin(int* arr, int rows, int cols)
{
int i, j;
for (i = 0; i<rows; ++i)
{
for (j = 0; j < cols; ++j)
{
arr[i*cols + j] = rand()%100;
}
}
}
//输出二维数组
void arrout(int* arr, int rows, int cols)
{
int i, j;
for (i = 0; i<rows; ++i)
{
for (j = 0; j < cols; ++j)
{
printf("%d\t", arr[i*cols + j]);
}
putchar('\n');
}
}
//逆转二维数组
void reverse(int* arr, int rows, int cols)
{
int i, j, t;
for (i = 0; i< rows; ++i)
{
for (j = i; j < cols; ++j)
{
t = arr[i*cols + j];
arr[i*cols + j] = arr[j*cols + i];
arr[j*cols + i] = t;
}
}
}