C语言程序设计上机实习答案

fgh

cde def def def efg

输出样例:

fgh ghi hij ijk jkl

① 定义二维字符数组和指向该数组的指针数组;

② 用循环使指针数组的元素指向二维字符数组各行首;

提示: ③ 用循环为指针数组元素赋字符串为值;

④ 用strcmp函数比较两个指针数组元素的值、用strcpy函数交换两个指针数组元素的值。

#include #include #include

char *p[10]; int i=0,n=10;

void Sort(char a[][20],int n); int main() {

char a[10][20]; for(i=0;i<10;i++) {

scanf(\ }

Sort(a,10); return 0; }

void Sort(char a[][20],int n) {

for(i=0;i<10;i++) {

p[i]=a[i]; }

int a1,a2; char *temp;

for(a1=1;a1

26

for(a2=n-1;a2>=a1;--a2) if(strcmp(p[a2-1],p[a2])>0) {

temp=p[a2-1]; p[a2-1]=p[a2]; p[a2]=temp; } }

for(i=0;i<10;i++) {

printf(\ } } 5.

标题: 5、数组最大、最小数及其调整 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述:

用指针实现:由键盘输入10个整数,将最大的调到最后,最小的调到最前。

输入: 10个整数。

输出: 最大的调到最后,最小的调到最前。 输入样例: 5 8 7 6 9 4 3 2 1 0 输出样例: 0 8 7 6 5 4 3 2 1 9 #include #include

int main() {

int a[10],i,tem; int *p1,*p2,*p3; p1=a; p2=a;

for(i=0;i<10;i++) {

scanf(\ }

for(p3=a;p3

27

{

if(*(p3)<=*(p2)) {

p2=p3; } }

tem=*a; *a=*p2; *p2=tem;

for(p3=a;p3

if(*(p3)>=*(p1)) {

p1=p3; } }

tem=*(a+9); *(a+9)=*p1; *p1=tem;

for(i=0;i<10;i++) {

printf(\ }

printf(\ return 0; } 6.

标题: 6、求二维数组中的最大数及其位置 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms

描述: 用指针实现:找出m行n列二维数组中的最大数及其位置。 输入: m行n列二维数组。 输出: 最大数及其位置。

3 4

输入样例:

1 2 5 4 6 8 7 2

28

0 2 4 5

输出样例: 1 1 8

提示: 需要动态创建数组。

#include #include

int main() {

int i,j,n,m,b,c; int *p; int max=0;

scanf(\

p=(int*)malloc(m*n*sizeof(int)); int a[m][n];

for(i=0;i

for(j=0;j

scanf(\ }

}

for(i=0;i

for(j=0;j

if(max<*(a[i]+j)) { max=*(a[i]+j); b=i; c=j; } } }

printf(\ printf(\

free(p); return 0;

29

} 7.

标题: 7、矩阵转置 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述:

设计一个函数,将任意n×n的矩阵转置,并在主函数中调用此函数实现n×n矩阵的转置。

输入: n×n的矩阵

输出: 转置后的n×n的矩阵 3 1 2 3

输入样例:

4 5 6 7 8 9 1 4 7

输出样例: 2 5 8

3 6 9 #include #include

int main() {

int n;

scanf(\

int i=0,j=0,s[100][100]; for(i=0;i

for(j=0;j

scanf(\ } }

for(j=0;j

for(i=0;i

printf(\ }

printf(\ }

30

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4