C措辞教程第四章: 数组(8)



  在二维数组a中选出各行最大年夜的元素构成一个一维数组b。 a=3 16 87 65 4 32 11 108 10 25 12 37b=(87 108 37) 本题的编程思绪是,在数组A的每一行中寻觅最大年夜的元素,找到之后把该值授予数组B呼应的元素即可。措施如下:
main()
{
static 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("\narray a:\n");
for(i=0;i<=2;i )
{ for(j=0;j<=3;j )
printf("]",a[i][j]);
printf("\n");}
printf("\narray b:\n");
for(i=0;i<=2;i )
printf("]",b[i]);
printf("\n");
}

  措施中第一个for语句中又嵌套了一个for语句构成了双重轮回。外轮回节制逐行处置,并把每行的第0列元素授予l。进入内轮回后,把l与背面各列元素角力计较,并把比l大年夜者授予l。内轮回竣事时l 即为该行最大年夜的元素,然后把l值授予b[i]。等外轮回一切完成时,数组b中已装入了a各行中的最大年夜值。背面的两个 for语句别离输入数组a和数组b。

  输入五个国度的称呼按字母挨次布列输入。
  本题编程思绪如下:五个国度名应由一个二维字符数组来处置。然则C措辞规定端方可以把一个二维数组当成多个一维数组处置。 因此本题又可以按五个一维数组处置, 而每一个一维数组就是一个国度名字符串。用字符串角力计较函数角力计较各一维数组的大年夜小,并排序, 输入后果即可。
编程如下:
void main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i )
gets(cs[i]);
printf("\n");
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("\n");
}

  本措施的第一个for语句中,用gets函数输入五个国度名字符串。下面说过C措辞允许把一个二维数组按多个一维数组处置, 本措施阐明cs[5][20]为二维字符数组,可分为五个一维数组cs[0],cs[1],cs[2],cs[3],cs[4]。因此在gets函数中运用cs[i]是合法的。 在第二个for语句中又嵌套了一个for语句构成双重轮回。 这个双重轮回完成按字母挨次排序的使命。在外层轮回中把字符数组cs[i]中的国名字符串拷贝到数组st中,并把下标i授予P。 进入内层轮回后,把st与cs[i]今后的各字符串作角力计较,若有比st小者则把该字符串拷贝到st中,并把其下标授予p。内轮回完成后如p不便是 i 阐明有比cs[i]更小的字符串呈现,因此互换cs[i]和st的内容。 至此已确定了数组cs的第i号元素的排序值。然后输入该字符串。在外轮回一切完成之后即完成一切排序和输入。

本章小结

1.数组是措施计划中最常用的数据构造。数组可分为数值数组(整数组,实数组),字符数组以及背面把要介绍的指针数组,构造数组等。

2.数组可以是一维的,二维的或多维的。

3.数组范例阐明由范例阐明符、数组名、数组长度 (数组元素个数)三部分构成。数组元素又称为下标变量。 数组的范例是指下标变量取值的范例。

4.对数组的赋值可以用数组初始化赋值, 输入函数静态赋值和赋值语句赋值三种办法完成。 对数值数组不克不及用赋值语句全体赋值、输入或输入,而必需用轮回语句逐一对数组元素终了利用。



版权声明: 原创作品,允许转载,转载时请务必以超链接方式标明文章 原始理由 、作者信息和本声明。不然将追究司法责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975605.html