首页 > 编程知识 正文

c语言数组编程题,数组c语言例题

时间:2023-05-05 14:05:24 阅读:135720 作者:196

【例子7.18】按照大小顺序将整数插入经过排序的数组中。

要按大小将数量插入排序数组中,必须首先确定排序是从大到小。 按照从大到小的顺序排序,可以逐一比较要插入的数量和数组中的各数量,如果找到小于最初插入数量的要素I,该要素的前面就是插入位置。 然后,从数组的最后一个元素到该元素,一次移动一个单元格。 最后将插入数赋予要素I即可。 如果插入的数量小于所有元素的值,则会将其插入到最后一个位置。

main () )

{

int i,j,p,q,s,n,a [ 11 ]={ 127,3,6,28,54,68,87,105,162,18 };

for(I=0; i10; I )

{ p=i; q=a[i];

for(j=I1; j10; j )

if(q

if(p!=i )

{

s=a[i];

a[i]=a[p];

a[p]=s;

}

printf('%d ',a[i] );

}

打印(ninput number : (n ) );

scanf('%d ',n );

for(I=0; i10; I )

if(na(I ) ) ) ) ) ) )。

{for(s=9; s=i; s--; a[s1]=a[s];

黑; }

a[i]=n;

for(I=0; i=10; I )

printf('%d ',a[i] );

打印((n );

}

本程序首先按照从大到小的顺序对数组a中的10个进行排序,并输出排序结果。 输入要插入的下一个整数n。 再用一个for语句逐个比较n和数组要素,如果发现有na[i],用一个内循环将I以下的各要素的值逐个向后移动。 后退移动应该从后向前,从a[9]到a[i]。 向后移动,摆脱外部循环。 将插入点设为I,将n赋予a[i]即可。 如果所有元素都大于插入的数量,则不会进行后续移动。 此时,i=10,结果,将n给定为a[10]。 最后一个循环输出插入数后数组的每个元素值。

程序运行时,输入数为47。 从结果可以看出,47插入在54和28之间。

【例7.19】在二维排列a中选择各行最大的要素进行一维排列b。

a=(3168765

4 32 11 108

10 25 12 37 )

b=(8710837 ) )。

正题的编程思路是,在数组a的各行中寻找最大的要素,找到后将其值赋予数组b的相应要素即可。 步骤如下。

main () )

{

inta [ ] [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=a ) I ) ) j;

b[i]=l; }

printf((Narraya:(n ) );

for(I=0; i=2; I )

{for(j=0; j=3; j )

printf ()、a ) I )、j );

打印((n ); }

打印(narrayb : (n ) );

for(I=0; i=2; I )

printf ()、b(I );

打印((n );

}

程序中的第一个for语句嵌套了for语句,构成了双重循环。 外侧循环逐行控制处理,将各行的第0列的要素赋予l。 进入内循环后,将l与后面各列的元素进行比较,将大于l的给予l。 当内部循环结束时,l是该行的最大元素,然后将l的值赋予b[i]。 当所有外环完成时,数组b中已经加载了a中每行的最大值。 以下两个for语句分别输出数组a和数组b。

【例7.20】按字母顺序输入并输出5个国家的名称。

正题的编程思路如下。 五个国家名称必须用一个二维字符数组处理。 但是,在c语言中规定了可以将一个二维数组作为多个一维数组来处理。 因此,这个问题还可以用5个一维数组来处理,每个一维数组都是国名字符串。 用字符串比较函数比较各一维数组的大小,重新排列后输出结果即可。 编程如下。

main () )

{

char st[20],cs[5][20];

int i,j,p;

打印计数名称: (n );

for(I=0; i5; I )

gets(cs[I];

打印((n );

for(I=0; i5; I )

{ p=i; strcpy(ST,cs[i] );

for(j=I1; j5; 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函数输入5个国家名称字符串。 在上述的c语言中,可以将一个二维排列作为多个一维排列来处理,但在本程序中,表示cs[5][20]是二维文字排列,5个一维排列cs[0]、cs[1]、cs[2]、cs[2] 因此,在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五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。