用冒泡排序法对输入的10个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中
收起
知与谁同
2018-07-21 17:55:40
6245
0
2
条回答
写回答
取消
提交回答
-
#include <stdio.h>
#define LEN 10
void ReadNumber(int *num)
{
int i;
for (i=0; i<LEN; i++)
{
scanf("%d", &num[i]);
}
}
void Sort(int *num)
{
int i, j;
int single, temp;
for(i=LEN; i>0; i--)
{
single = 0;
for (j=0; j<LEN-1; j++)
{
if (num[j]<num[j+1])
{
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
single = 1;
}
}
if (single == 0)
{
break;
}
}
}
int find(int *num, int CheckNumber)
{
int i=0;
while(i<LEN)
{
if ( num[i] == CheckNumber)
{
return i+1;
}
i++;
}
return 0;
}
void main()
{
int num[LEN];
// int i;
ReadNumber(num);
// for(i=0; i<LEN; i++)
// {
// printf("%d", num[i]);
// }
Sort(num);
// putchar(10);
// for(i=0; i<LEN; i++)
// {
// printf("%d", num[i]);
// }
// putchar(10);
// i=0;
// if (i = find(num, 3))
// {
// printf("%d", i);
// }
find(num, 4);
}
2019-07-17 22:50:12
-
int main(void)
{
int i,j,array[20],temp;
printf("Input 20 integer:"); /*输入20个整数*/
for(i=0;i<20;i++)
scanf("%d",&array[i]);
printf("\n");
for(i=0;i<20;i++) /*用双重循环,冒泡法排序*/
for(j=i;j<20;j++)
if(array[i]<array[j])
for(i=0;i<20;i++) /*输出排序后的数组元素*/
printf("%d\t",array[i]);
printf("\nInput integer:"); /*输入一个整数*/
scanf("%d",&temp);
for(i=0;i<20&&temp<=array[i];i++) /*在排序后的数组中查找*/
if(temp==array[i])
printf("array[%d] is needed.\n",i); /*在数组中有可能有相等的元素*/
if(temp!=array[i-1])
printf("array[] have not the integer.");/*数组中没有所输入的数*/
getch();
return 0;
}
程序运行结果:
Input 20 integer:1 2 3 4 5 66 77 33 22 33 4 66 4 8 7 6 55 33 222 20
222 77 66 66 55 33 33 33 22 20
8 7 6 5 4 4 4 3 2 1
Input integer:4
array[14] is needed.
array[15] is needed.
array[16] is needed.
2019-07-17 22:50:12