1、第九次课上课程序及习题参考程序 1、一维数组的下标法访问: int main(void) { int a[10]; int i; for(i=0; i<10; i++) { scanf("%d", &a[i]); } for(i=0; i<10; i++) { printf("%d", a[i]); } return 0; } 2、一维数组的指针法访问: int main(void) { int a[10]; int *p; for(p=a;p<(a+10);p++)
2、 {
scanf("%d", p);
}
for(p=a;p<(a+10);p++)
{
printf("%d ", *p);
}
return 0;
}
3、冒泡排序中指针做形参
#include
3、 { scanf("%d", &arr[i]); } bubble_sort(arr, 10); printf("The sorted numbers:\n"); for ( i = 0; i< 10; i++) { printf("%4d", arr[i]); } printf("\n"); return 0; } void bubble_sort(int *p, int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for ( j = 0
4、 j< n - i - 1; j++)
{
if(p[j] > p[j+1])
{
temp = p[j];
p[j] = p[j+1];
p[[j+1] = temp;
}
}
}
}
4、有序表的有序插入
#include
5、) { scanf("%d", &a[i]); } printf("Input the insert num:"); scanf("%d", &num); insert(a, 6, num); printf("Output:\n"); for (i = 0; i < 6; i++) { printf("%d ", a[i]); } printf("\n"); return 0; } 从前向后找 void insert(int a[], int n, int num) { int i, j; i=0; while (
6、num > a[i]) /*寻找位置*/ { i++; } for (j=n-1; j>i; j--) /*移动*/ { a[j] = a[j-1]; } a[i] = num; /*插入*/ } 从后向前找 void insert(int a[], int n, int num) { int i; i = n-1; while (i > 0 && num < a[i-1]) /*寻找和移动*/ { a[i] = a[i-1]; i--; } a[i] = num; } 使用指针: #includ
7、e
8、 i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void insert(int *p, int n, int num)
{
int i;
i = n-1;
while (i > 0 && num < p[i-1])
{
p[i] = p[i-1];
i--;
}
p[i] = num;
}
5、题库59题,编写一程序P2-217.C实现以下功能
求任意的一个m×m矩阵的对角线上元素之和
#include
9、void) { int arr[20][20]; int i, j, m, sum; printf("Please input m: "); scanf("%d", &m); printf("\nPlease input array:\n"); for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { scanf("%d", &arr[i][j]); } } sum = 0; for (i = 0; i < m; i++) { for (j
10、 0; j < m; j++)
{
if (i == j || i + j == m - 1)
{
sum += arr[i][j];
}
}
}
printf("\nsum=%d\n", sum);
return 0;
}
使用行指针和列指针:
#include
11、d", &m); printf("\nPlease input array:\n"); p1 = *arr; for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { scanf("%d", p1+i*20+j); } } p2 = arr; sum = 0; for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { if (i == j || i + j == m - 1) {
12、
sum += *(*(p2 + i) + j);
}
}
}
printf("\nsum=%d\n", sum);
return 0;
}
6、输入5个字符串,按升序排序后输出,用字符数组处理
#include
13、ts(str[i]);
}
bubble_sort(str, 5);
for (i=0; i<5; i++)
{
puts(str[i]);
}
return 0;
}
void bubble_sort(char str[][10], int n)
{
int i, j;
char temp[10];
for (i=0; i
14、
{
strcpy(temp, str[j]);
strcpy(str[j], str[j+1]);
strcpy(str[j+1], temp);
}
}
}
}
7、输入5个字符串,按升序排序后输出,用指针数组完成
#include
15、 i++) { ptr[i] = str[i]; } printf("Input 5 strings:\n"); for (i = 0; i < 5; i++) { gets(ptr[i]); } bubble_sort(ptr, 5); printf("---------------------------\n"); for (i = 0; i < 5; i++) { puts(ptr[i]); } return 0; } void bubble_sort(char *ps[], int n) { int i,
16、 j;
char *temp;
for (i=0; i
17、"The program name is:%s\n", argv[0]);
if (argc > 1)
{
printf("The other arguments are following:\n");
for (i = 1; i
18、 void bubble_sort(char s[][81], int n); int str_compare(char s1[], char s2[]); void str_copy(char s1[], char s2[]); int main(void) { int i; char str[5][81]; printf("Input 5 strings:\n"); for (i = 0; i < 5; i++) { gets(str[i]); } bubble_sort(str, 5); printf("--------------
19、\n");
for (i = 0; i < 5; i++)
{
puts(str[i]);
}
return 0;
}
void bubble_sort(char s[][81], int n)
{
int i, j;
char temp[81];
for (i=0; i
20、copy(s[j], s[j+1]); str_copy(s[j+1], temp); } } } } int str_compare(char s1[], char s2[]) { int i; i = 0; while ( s1[i] == s2[i]) { i++; } return (s1[i] - s2[i]); } void str_copy(char s1[], char s2[]) { int i; for (i = 0; s2[i] != '\0'; i++) { s1
21、[i] = s2[i];
}
s1[i] = '\0';
}
使用指针数组
#include
22、 0; i < 5; i++)
{
gets(ptr[i]);
}
bubble_sort(ptr, 5);
printf("---------------------------\n");
for (i = 0; i < 5; i++)
{
puts(ptr[i]);
}
return 0;
}
void bubble_sort(char *ps[], int n)
{
int i, j;
char *temp;
for (i=0; i






