西北农林科技大学C语言上机实习5答案_第1页
西北农林科技大学C语言上机实习5答案_第2页
西北农林科技大学C语言上机实习5答案_第3页
西北农林科技大学C语言上机实习5答案_第4页
西北农林科技大学C语言上机实习5答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实习五答案1、 用指针实现排序/* exer 5-1 由键盘输入 10个整数,将它们按由小到大顺序排列 */用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。 输入: 键盘输入的10个整数。 输出: 按由小到大的顺序排列。 输入样例: 1 5 4 3 2 9 23 11 5 7 输出样例: 1 2 3 4 5 5 7 9 11 23 #include<stdio.h>void main(void) int a10,*p = NULL; /* 说明数组和指针 */ int i, j, temp; for(p = a; p < a + 10; p+) /* 指针从数组

2、首到尾 */ scanf("%d", p); /* 利用指针依次输入 */ p = a; for(i = 0; i < 9; i+) /* 利用指针依次比较 */ for(j = i + 1; j < 10; j+) if(*(p + i) > *(p + j) temp = *(p + i); *(p + i) = *(p + j); *(p + j) = temp; for(p=a; p < a + 9; p+) printf("%d ", *p); printf("%dn", *p);2、 用指针实现字符

3、串排序/*exer 5-2 将 10个长度小于20的字符串排序*/用指针实现:将10个字符串(设其长度小于20)从小到大排序。 输入: 10个字符串。 输出: 排序后的10个字符串。 输入样例: ijkjkldefghidefcdehijdefefgfgh 输出样例: cdedefdefdefefgfghghihijijkjkl 提示: 定义二维字符数组和指向该数组的指针数组; 用循环使指针数组的元素指向二维字符数组各行首; 用循环为指针数组元素赋字符串为值; 用strcmp函数比较两个指针数组元素的值、用strcpy函数交换两个指针数组元素的值。 #include <stdio.h&g

4、t;#include <string.h>void main(void) char szStr1020,*psz10,szTemp20; int i,j; for(i = 0; i < 10; i+) pszi = szStri; /*指针数组的每个元素指向各行串*/ for(i = 0; i < 10; i+) gets(pszi); /*输入10个字符串*/ for(i = 0; i < 9; i+) /*字符串排序*/ for(j = i + 1; j < 10; j+) if(strcmp(pszi, pszj) > 0) strcpy(szT

5、emp, pszi); strcpy(pszi, pszj); strcpy(pszj, szTemp); for(i = 0; i < 10; i+) puts(pszi); /*输出字符串*/ 3、 数据倒置/*exer 5-3 将具有10个元素的一维数组中的数据倒置 */描述: 用指针实现:将具有10个元素的一维数组中的数据倒置 输入: 10个元素。 输入样例: 0 1 2 3 4 5 6 7 8 9 输出样例: 9 8 7 6 5 4 3 2 1 0 提示: 数据倒置是指将数组前后元素的值交换后再输出。 #include <stdio.h>void main(void

6、) int a10, iTemp, *p, *q; int i; for(i = 0; i < 10; i+) scanf("%d", a + i); /*输入数组*/ for(p = a, q = a + 9; p < q; p+, q-) /*首尾交换*/ iTemp = *p; *p = *q; *q = iTemp; for(i = 0; i < 10; i+) printf("%d ", *(a + i); /*输出*/ 4、 用指针实现数据位置调整/*exer 5-4 输入 10个整数,将最大的调到最后,最小的调到最前*/描

7、述: 用指针实现:由键盘输入10个整数,将最大的调到最后,最小的调到最前。 输入: 10个整数。 输出: 最大的调到最后,最小的调到最前。 输入样例: 5 8 7 6 9 4 3 2 1 0 输出样例: 0 8 7 6 5 4 3 2 1 9 #include <stdio.h>void swap(int *px, int *py);int main(void) int a10, iTemp, *pMax, *pMin; int i; for(i = 0; i < 10; i+) scanf("%d", a + i); /*输入数组*/ pMax = a;

8、 /*最大值指针指向数组首地址*/ pMin = a; /*最小值指针指向数组首地址*/ for(i = 1; i < 10; i+) if(*(a+i) > *pMax) pMax = a + i; if(*(a+i) < *pMin) pMin = a + i; /*最大值是第1个元素,最小值是最后一个元素*/ if(pMax = a && pMin = a + 9) swap(pMax, pMin); else /*最小值与第一个元素交换*/ swap(a, pMin); /*最大值与最后一个元素交换*/ swap(a + 9, pMax); for(i

9、 = 0; i < 10; i+) printf("%d ", *(a + i); /*输出*/ return 0;void swap(int *px, int *py) int temp; temp = *px; *px = *py; *py = temp;5、 用指针实现查找二维数组中最大数及其位置/*exer 5-5 找出二维数组(设3行4列)中的最大数及其位置 */用指针实现:找出二维数组(设3行4列)中的最大数及其位置。 输入: 二维数组(设3行4列)。 输出: 最大数及其位置。 输入样例: 1 2 5 46 8 7 20 2 4 5 输出样例: 1 1 8

10、 #include <stdio.h>void main(void) int a34, (*p)4, iCol, iRow; int i, j; p = a; for(i = 0; i < 3; i+) for(j = 0; j < 4; j+) scanf("%d", *(p + i) + j); /*输入数组*/ iCol = 0; /*设最大数及其位置 */ iRow = 0; for(i = 0; i < 3; i+) for(j = 0; j < 4; j+) if(*(*(p + i) + j) > *(*(p + iR

11、ow) + iCol) iRow = i; iCol = j; /*修改位置*/ printf("%d %d %dn", iRow, iCol, aiRowiCol);或者#include <stdio.h>#include <stdlib.h>int main() int a34; int m,n,i,j; for(i=0;i<3;i+) for(j=0;j<4;j+) scanf("%d",&aij); m=0; n=0; for(i=0;i<3;i+) for(j=0;j<4;j+) if(a

12、ij>amn) m=i; n=j; printf("%d %d %dn",m,n,amn);6、 用指针实现子字符串提取/*exer 5-6 由键盘输入一串字符,从字符串下标为m开始 取出n个字符(m和n由键盘输入),形成一个新的字符串 */用指针实现:由键盘输入一串字符,从下标为m的字符开始,取出n个字符(m和n由键盘输入),形成一个新的字符串。 输入: 键盘输入一串字符。 输出: 从下标为m的字符开始,取出n个字符(m和n由键盘输入),形成一个新的字符串。 输入样例: 01234565 2 输出样例: 56 提示: 定义二个字符数组zfsour100、zfdest

13、100,zfsour存放原串,zfdest存放新串; 定义二个指针变量*pzfsour、*pzfdest; zfsour字符数组的首地址; 从键盘输入取字符的开始位置m(即下标值)和要取的字符个数n; 让指针变量pzfsour指向zfsour+m处,让pzfdest指向zfdest字符数组的首地址; 通过n次循环,逐次赋值、移动指针,即将原串中的n个字符存到新串字符数组中。#include <stdio.h>#include <string.h>void main(void) char szStrSour80, szStrDest80, *pszSour, *pszDest; int i, m, n; gets(szStrSour); /* 输入字符串 */ scanf("%d%d", &m, &n); /*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论