C语言数组应用举例
【例7-18】把一个整数按大小顺序插入已排好序的数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。
程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。
【例7-19】在二维数组a中选出各行最大的元素组成一个一维数组b。
a=( 3 16 87 65
4 32 11 108
10 25 12 37)
b=(87 108 37)
本题的编程思路是,在数组A的每一行中寻找最大的元素,找到之后把该值赋予数组B相应的元素即可。程序如下:
【例7-20】输入五个国家的名称按字母顺序排列输出。
本题编程思路如下:五个国家名应由一个二维字符数组来处理。然而C语言规定可以把一个二维数组当成多个一维数组处理。 因此本题又可以按五个一维数组处理,而每一个一维数组就是一个国家名字符串。用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。编程如下:
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。
- #include <stdio.h>
- int main(void){
- int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
- for(i=0;i<10;i++){
- p=i;q=a[i];
- for(j=i+1;j<10;j++)
- if(q<a[j]) {p=j;q=a[j];}
- if(p!=i){
- s=a[i];
- a[i]=a[p];
- a[p]=s;
- }
- printf("%d ",a[i]);
- }
- printf(" input number: ");
- scanf("%d",&n);
- for(i=0;i<10;i++)
- if(n>a[i]){
- for(s=9;s>=i;s--) a[s+1]=a[s];
- break;
- }
- a[i]=n;
- for(i=0;i<=10;i++)
- printf("%d ",a[i]);
- printf(" ");
- return 0;
- }
程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。
【例7-19】在二维数组a中选出各行最大的元素组成一个一维数组b。
a=( 3 16 87 65
4 32 11 108
10 25 12 37)
b=(87 108 37)
本题的编程思路是,在数组A的每一行中寻找最大的元素,找到之后把该值赋予数组B相应的元素即可。程序如下:
- #include <stdio.h>
- int main(void){
- int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
- int b[3],i,j,l;
- for(i=0;i<=2;i++){
- l=a[i][0];
- for(j=1;j<=3;j++)
- if(a[i][j]>l) l=a[i][j];
- b[i]=l;
- }
- printf(" array a: ");
- for(i=0;i<=2;i++){
- for(j=0;j<=3;j++)
- printf("%5d",a[i][j]);
- printf(" ");
- }
- printf(" array b: ");
- for(i=0;i<=2;i++)
- printf("%5d",b[i]);
- printf(" ");
- return 0;
- }
【例7-20】输入五个国家的名称按字母顺序排列输出。
本题编程思路如下:五个国家名应由一个二维字符数组来处理。然而C语言规定可以把一个二维数组当成多个一维数组处理。 因此本题又可以按五个一维数组处理,而每一个一维数组就是一个国家名字符串。用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。编程如下:
- #include <stdio.h>
- int main(void){
- char st[20],cs[5][20];
- int i,j,p;
- printf("input country"s name: ");
- for(i=0;i<5;i++)
- gets(cs[i]);
- printf(" ");
- for(i=0;i<5;i++){
- p=i;strcpy(st,cs[i]);
- for(j=i+1;j<5;j++)
- if(strcmp(cs[j],st)<0){
- p=j;
- strcpy(st,cs[j]);
- }
- if(p!=i){
- strcpy(st,cs[i]);
- strcpy(cs[i],cs[p]);
- strcpy(cs[p],st);
- }
- puts(cs[i]);
- }
- printf(" ");
- return 0;
- }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了