第四周《C语言及程序设计》实践项目26 实现线性表基本操作的函数
来源:互联网 发布:java开发webservice 编辑:程序博客网 时间:2024/05/16 07:01
【项目1-有序数组中插入数据(函数版)】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目1-有序数组中插入数据(函数版)】.cpp * 作 者:张易安 * 完成日期:2016年 9 月 9 日 * 版 本 号:v1.0 * * 问题描述: 有一个足够“大”的数组a,其中已经存储了n个呈升序排列的数据。调用函数insert(a, n, m), * 可以将数m插入到a中的合适位置,使其仍然保持升序,并且返回值为数组中有效数字的个数(即原先的n加1)。 * 例如,若a中数据为1 7 8 17 23 24 59 62 101,n=9,需要插入的数字m为50,调用函数insert(a, n, m)后,a中数据为1 7 8 17 23 24 50 59 62 101,n=10。 */#include<stdio.h>#define N 100int insert(int[] ,int ,int );int main(){int a[N]={1,7,8,17,23,24,59,62,101};int i,n=9;int m=50;n = insert(a,n,m);for(i=0;i<n;i++){printf("%d\t",a[i]);}printf("\n");return 0; } /* insert(a,n,m)的函数功能是插入一个数字到顺序数组中 入口参数: a-存放数字的数组n-数字的个数m-插入的数字*/ int insert(int a[],int n,int m) { int i=n-1;//先是把数组的个数减少一个 ,因为是从0开始a[0]=1 while(a[i]>m&&i>=0)//当个数大于0且数组中的值大于m时 { a[i+1]=a[i];//数组中的值向后退一位 i--; } i++;//因为不加一的话就会在24上赋值 a[i]=m;//m的值赋给数组 n++;//10个数字return n; } //体会,当看不懂一个程序的时候。最好的方法就是把自己当做电脑按着步骤自顶向下一步一步的执行,或者一步一步调试便于理解运行结果
【项目2 - 删除数组元素】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目2 - 删除数组元素】.cpp * 作 者:张易安 * 完成日期:2016年 9 月 9 日 * 版 本 号:v1.0 * * 问题描述:del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数。函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素)。函数的原型为: int del (int a[10],int n,int x)(1)请实现这个函数,并完成测试。(2)如果在函数调用时,要求数组中的元素呈升序排列呢? */#include<stdio.h>int del(int a[],int n,int x);int main(){int a[20]={12,45,78,47,58,25,36,98,56,25,41,45,48,42,35,59,75,41,24,86};int i,n;n = del(a,20,75);for(i=0;i<n;i++){printf("%d\n",a[i]);}printf("\n");return 0; } /* del(int a[],int n,int x)函数是为了珊瑚数组中的一个元素 输入参数 a[]-数组元素n-数组个数x-要删除的数字 */int del(int a[],int n,int x){int p,q=0;for(p=0;p<n;p++){if(a[q]!=x){a[p]=a[q];p++;}} return p;//我就想不通了,为什么把p还给主函数了后就会输出不一样的解雇,难道是改变了数组? }运行结果
【项目3 - 数组的排序】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目4-工资的排序】.cpp * 作 者:张易安 * 完成日期:2016年 9 月 9 日 * 版 本 号:v1.0 * * 问题描述:从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。做完打开文件看看结果,玩这么多数据于股掌之间,相信你会有成就感的。 */#include<stdio.h>void bubble_sort(int arr[],int num);void output_array(int arr[],int num);int main(){int a[20]={87,76,62,58,77,85,92,88,77,67,80,68,88,87,64,59,61,76,75,63};int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};bubble_sort(a,20);output_array(a,20);bubble_sort(b,15);output_array(b,15);return 0; } void bibble_sort(int arr[],int num){int i,j,t;for(j=0;j<num-1;j++)//num-1趟比较 for(i=0;i<num-j-1;i++)//每趟进行num-J次两两比较 if(arr[i]<arr[i+1]) { t=arr[i]; arr[i]=arr[i+1]; arr[i+1]=t;}return;}void output_array(int arr[],int num){int i;for(i=0;i<num-1;i++){printf("%d",arr[i]);}printf("%d\n",arr[num-1]);return; } //又是这个算法,要记下来,自己做一直都想不起来!运行结果
【项目4 - 查成绩】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目4-工资的排序】.cpp * 作 者:张易安 * 完成日期:2016年 9 月 9 日 * 版 本 号:v1.0 * * 问题描述:score1.txt提供了某大学两个班某次测验的数据,包括每位同学的学号及成绩。 *请编程序,输入学号,查找出该同学的成绩。 *提示1:可以定义两个int型数组,其中一个n存放学号,另一个s存放成绩,可以保证两个数组中,元素下标相同,对应的是同一位同学。例如n[18]值为3123,s[18]为98,说明学号为3123的同学成绩为98。 *提示2:因为数据无序,运用顺序查找算法,在n数组中依据学号进行查找,在s数组中对应下标的值则为其成绩。例如,通过在n中的查找,得出学号为3123的同学的下标为18,则其成绩为s[18]。 *下面是完成应用的部分代码,已经能够输出成绩清单。请在此基础上实现有关的函数: */#include<stdio.h>#include<stdlib.h>int readData(int[], int []); int search(int[], int, int); int main(){int num[200],score[200];int count;int index;int key;count = readData(num,score);scanf("%d",&key);index = search(num,count,key);if(index>=count) printf("不存在学号为%d的同学\n",key);else printf("序号为%d的同学的成绩是:%d\n",key,score[index]); return 0; } int readData(int n[],int s[]){int c=0;FILE *fp;fp = fopen("scorel.txt","r");if(fp==NULL){printf("open file error!\n");exit(0); }//套路 while(fscanf(fp,"%d%d",&n[c],&s[c])!=EOF){c++; } fclose(fp);return c;}int search(int n[],int c,int k){int i;for(i=0;i<c;i++){if(n[i]==k) break;}if(i==c) i=-1; return i;}运行结果
【项目4 - 查成绩】
0 0
- 第四周《C语言及程序设计》实践项目26 实现线性表基本操作的函数
- 第7周 C语言及程序设计提高例程-26 实现线性表基本操作的函数
- C语言及程序设计提高例程-26 实现线性表基本操作的函数
- 第四周《C语言及程序设计》实践项目2 模块化程序设计及C语言中的函数
- 第四周《C语言及程序设计》实践项目7 返回指针的函数
- 第四周《C语言及程序设计》实践项目37 操作字符串数组
- 第四周《C语言及程序设计》实践项目39 动态存储管理与动态数组的实现
- 第四周《C语言及程序设计》实践项目16 数组的引入
- 第四周《C语言及程序设计》实践项目20 经典:查找的艺术
- C语言提高-第26/27讲: 实现线性表基本操作的函数/编写查找和排序函数
- 第四周《C语言及程序设计》实践项目39 问题求解——求素数
- 第四周《C语言及程序设计》实践项目40 问题求解方法——穷举
- 第四周《C语言及程序设计》实践项目43 从文本文件中读入数据
- 第四周《C语言及程序设计》实践项目22 用指针法访问数组元素
- 第四周《C语言及程序设计》实践项目32 二维数组及其定义
- 第四周《C语言及程序设计》实践项目5 认识递归
- 第四周《C语言及程序设计》实践项目11 体验结构体
- 第四周《C语言及程序设计》实践项目14 开发一个电子词典
- Maven+Struts2+MyBatis+Spring搭建教程
- 事件驱动编程---队列应用--银行排队模拟--学习与思考
- 亚马逊AWS EC2 配置总结
- unity如何调用另一个脚本中的变量
- 编程珠玑第九章--性能之代码调优
- 第四周《C语言及程序设计》实践项目26 实现线性表基本操作的函数
- 有符号数除以2的幂
- PHP 真正多线程的使用
- Raspberry Pi 的基礎 - 安裝 CentOS 7 for ARM
- Android Animation学习(一) Property Animation介绍
- linqJS,让JavaScript赋予强大的linq功能
- LeetCode 20. Valid Parentheses
- 解决含EditText页面的软键盘自动弹出问题
- Android Animation学习(二) ApiDemos解析:基本Animatiors使用