给数组中的元素按顺序编号C语言

给数组中的元素按顺序编号C语言,第1张

1.要加头文件:

#include "stdio.h"

2.scanf("%d",a[n]) 不是这样写的

应该为:scanf("%d",&a[n])

3.另外还有输出,以现在的样子输出结果是

A=(5,3,4,7,3,5,6) 则输出为: (2,0,1,4,0,2,3)

而不是要求的

A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4)

所以要改:

b[k]=j+1

【其实我觉得这条并不算错,如果要求不苛刻的话】

4.这个程序输出的格式必将不让人恭维,如果觉得有必要改的话,还是可以改改的,到不能算错

就算是把后面输出部分改成:

for(i=0i<10i++)

printf("%d ",a[i])

printf("\n")

for(i=0i<10i++)

printf("%d ",b[i])

printf("\n")

【这个没必要改,纯属美容工作】

你的问题是对十个数字,找出其中最大的三个数的序号(对应数组的下标和皮哪)。

方法不止一种,我的思路:

1、随机数生成10个数字组成数组num。

2、定义一个数组x,用于保存最大三个数字的下标(数字大小是从大到小)。

3、遍历num找出数组最小值的下标,将其保存到变量mi中。

4、用mi的值初始化x(也就是初始三个数都对应最小数字)。

5、再次遍历num,每次和x中对应的每一数对比,发现大于的,则当前x元素全部往后移动一位,并且将当前数值下标记录在x当前元素内。

最后得到的数组x就是题目要的序号。

PS:写程序考虑要扩展和通用,因此所有参数(数字个数,数字位数,最大数的个数)都定义成常量,只要修改常量可适应n个数排列,求最大m个数的序号。

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define MN 10//最大数字个数

#define N 100//单个数字不超过

#define M 3//想要统计的最大数量(题目要最大前3,可改其它值)

int main()

{

  int i=0,num[MN],mi=0,x[M]={0},*p=&x[0],*p2=NULL

  srand(time(NULL))

  printf("数组(随机)为:\n")

  while(i<MN)

  {

      num[i]=rand()%N

      if(num[i]<num[mi])mi=i//找出最小值序号

      printf("%d ",num[i++])

  }

  for(i=0i<Mi++)x[i]=mi//用最小值下标初始化x数组

  printf("\n")

  i=0

  while(i<MN)

  {

      p=&x[0]

      while(1)

      {

          if(num[i]>num[*p])

          {

              p2=&x[M-1]

              while(p2>p)*p2=*(p2-1),p2--//x当前位往后依次后移

              *p=i

              break

          }

          else p++

          if(p>&x[M-1])

              break

      }

      i++

  }

  printf("\n其中最大的三个数组序号分别为(序号从0开始):\n")

  for(i=0i<Mi++)

      printf("数字%d,序号%d。\n",num[x[i]],x[i])

  return 0

}

字段格式将文字改成数字即可。在数据库记录中,只有写入的先后顺序,你说的前几行,是指输出的结果,输出的结果由排序来确定。如 select * from tb order by 序号,


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6896163.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-29
下一篇2023-03-29

发表评论

登录后才能评论

评论列表(0条)

    保存