c语言必背的典型程序设计题目-数组、函数-------答案.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
C语言典型程序设计题目-数组、函数 以下是对给定文件的详细知识点解析: 数组局部必须会编写的程序 1. 使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 在这个程序中,我们可以看到两个不同的排序算法:选择法和冒泡法。 选择法 选择法是一种简单的排序算法,它的工作原理是:每次选择当前未排序的最小元素,将其放置在当前未排序的数组的开头,然后从剩余未排序的元素中继续选择最小元素,直到所有元素都被排序。 在这个程序中,我们可以看到选择法的实现: ```c void main(){ int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp; printf("Before sort:"); for(i=0;i<10;i++){ printf("%4d",a[i]); } printf("\n"); //排序 for(i=0;i<9;i++){ t=i; for(j=i+1;j<10;j++){ if(a[t]>a[j]){ t=j; } } if(t!=i){ temp=a[i]; a[i]=a[t]; a[t]=temp; } } printf("After sorted:"); for(i=0;i<10;i++){ printf("%4d",a[i]); } printf("\n"); } ``` 冒泡法 冒泡法是一种简单的排序算法,它的工作原理是:通过不断地比较相邻元素,如果两个元素的顺序不对,则交换它们,直到所有元素都被排序。 在这个程序中,我们可以看到冒泡法的实现: ```c void main(){ int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t; printf("Before sort:"); for(i=0;i<10;i++){ printf("%4d",a[i]); } printf("\n"); //排序 for(i=0;i<=n-1;i++){ for(j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("After sorted:"); for(i=0;i<10;i++){ printf("%4d",a[i]); } printf("\n"); } ``` 2. 数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。 在这个程序中,我们可以看到如何将一个新的元素插入到已经排序的数组中,并保持数组的顺序不变。 ```c void main(){ int a[10]={0,12,17,20,25,28,30}; int x, i, j=6; printf("Enter a number:"); scanf("%d",&x); a[0]=x; i=j; while(a[i]>x){ a[i+1]=a[i]; i--; } a[++i]=x; j++; for(i=1;i<=j;i++) printf("%8d",a[i]); printf("\n"); } ``` 3. 〔提高题目〕编号为1,2,3,……n的n个人按顺时针方向围坐一圈。任选一个正整数作为报数上限m,从第1个人开场按顺时针方向自1开场顺序报数,报到m时停顿报数。报m的人出列,从他在顺时针方向上的下一个人开场重新从1报数,如此下去,直至所有人全部出列为止。设计程序输出出列顺序。 在这个程序中,我们可以看到如何使用数组和循环来实现 Josephus 问题的解决方案。 ```c void main(){ int i,k,m,n,t,num[nmax]; printf("please input the total of numbers:"); scanf("%d",&n); printf("please input the upper bound of numbers:"); scanf("%d",&m); for(i=0;i<n;i++) //数组初始化 num[i]=0; i=0; // TO DO: 实现 Josephus 问题的解决方案 } ``` 这个文件中包含了三个典型的程序设计题目,每个题目都展示了不同的编程技术和算法,都是C语言必背的典型程序设计题目。
- 粉丝: 4
- 资源: 13万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助