c语言 输入十个整数,从大到小排序,并输出来。求解题思路 求C语言编程题,求助各位大神,谢谢~ 输入10个整数,将它们...

C\u8bed\u8a00\u7a0b\u5e8f\u8bbe\u8ba1\uff1a \u4ece\u7528\u6237\u8f93\u516510\u4e2a\u6574\u6570\uff0c\u5bf9\u5176\u6309\u7167\u4ece\u5c0f\u5230\u5927\u7684\u987a\u5e8f\u6392\u5e8f\uff0c\u5e76\u8f93\u51fa\u7ed3\u679c\u3002

//\u8981\u6c42\u4efb\u610f\u8f93\u516510\u4e2a\u6570\uff0c\u7136\u540e\u6309\u4ece\u5c0f\u5230\u5927\u987a\u5e8f\u8f93\u51fa
#include
int main()
{
int a[10];
int i,j;
int temp;
printf("\u8bf7\u8f93\u516510\u4e2a\u6574\u6570\uff1a");
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("\u6392\u5217\u540e\u987a\u5e8f\u4e3a\uff1a");
for(i=0;i<10;i++)
{
printf("%d",a);
}
printf("\n");
return 0;
}

\u6269\u5c55\u8d44\u6599\uff1a\u2460printf()\u51fd\u6570\u662f\u683c\u5f0f\u5316\u8f93\u51fa\u51fd\u6570,\u4e00\u822c\u7528\u4e8e\u5411\u6807\u51c6\u8f93\u51fa\u8bbe\u5907\u6309\u89c4\u5b9a\u683c\u5f0f\u8f93\u51fa\u4fe1\u606f\u3002
\u683c\u5f0f\u8f93\u51fa\uff0c\u5b83\u662fc\u8bed\u8a00\u4e2d\u4ea7\u751f\u683c\u5f0f\u5316\u8f93\u51fa\u7684\u51fd\u6570\uff08\u5728stdio.h\u4e2d\u5b9a\u4e49\uff09\u3002\u7528\u4e8e\u5411\u7ec8\u7aef\uff08\u663e\u793a\u5668\u3001\u63a7\u5236\u53f0\u7b49\uff09\u8f93\u51fa\u5b57\u7b26\u3002\u683c\u5f0f\u63a7\u5236\u7531\u8981\u8f93\u51fa\u7684\u6587\u5b57\u548c\u6570\u636e\u683c\u5f0f\u8bf4\u660e\u7ec4\u6210\u3002
\u8981\u8f93\u51fa\u7684\u6587\u5b57\u9664\u4e86\u53ef\u4ee5\u4f7f\u7528\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7a7a\u683c\u548c\u4e00\u4e9b\u6570\u5b57\u7b26\u53f7\u4ee5\u5916\uff0c\u8fd8\u53ef\u4ee5\u4f7f\u7528\u4e00\u4e9b\u8f6c\u4e49\u5b57\u7b26\u8868\u793a\u7279\u6b8a\u7684\u542b\u4e49\u3002
\u7b80\u5355\u70b9\u7406\u89e3\u5c31\u662f\uff0c\u5728\u4e00\u6bb5\u7a0b\u5e8f\u4e2d\u4f60\u6b63\u786e\u4f7f\u7528\u8be5\u51fd\u6570\uff0c\u53ef\u4ee5\u5728\u8be5\u7a0b\u5e8f\u8fd0\u884c\u7684\u65f6\u5019\u8f93\u51fa\u4f60\u6240\u9700\u8981\u7684\u5185\u5bb9\u3002
\u2461printf\u51fd\u6570\u662f\u4e00\u4e2a\u6807\u51c6\u5e93\u51fd\u6570\uff0c\u5b83\u7684\u51fd\u6570\u539f\u578b\u5728\u5934\u6587\u4ef6\u201cstdio.h\u201d\u4e2d\u3002\u4f46\u4f5c\u4e3a\u4e00\u4e2a\u7279\u4f8b\uff0c\u4e0d\u8981\u6c42\u5728\u4f7f\u7528printf\u51fd\u6570\u4e4b\u524d\u5fc5\u987b\u5305\u542bstdio.h\u6587\u4ef6\u3002
printf()\u51fd\u6570\u7684\u8c03\u7528\u683c\u5f0f\u4e3a:printf("",)\u3002
\u5176\u4e2d\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\u7528\u4e8e\u6307\u5b9a\u8f93\u51fa\u683c\u5f0f\u3002\u683c\u5f0f\u63a7\u5236\u4e32\u53ef\u7531\u683c\u5f0f\u5b57\u7b26\u4e32\u548c\u975e\u683c\u5f0f\u5b57\u7b26\u4e32\u4e24\u79cd\u7ec4\u6210\u3002

#include #include #define LEN 100 /*\u6570\u7ec4\u957f\u5ea6\u4e0a\u9650*/#define elemType int /*\u5143\u7d20\u7c7b\u578b*//*\u8f93\u5165\u6570\u7ec4*/void inputArr (elemType arr[], int len) {int i;for (i=0; i<len; i++)scanf ("%d",&arr[i]);putchar ('\n');}/*\u6253\u5370\u6570\u7ec4*/void printArr (elemType arr[], int len) {int i;for (i=0; i<len; i++)printf ("%d\t",arr[i]);putchar ('\n');}/*\u964d\u5e8f\u9009\u62e9\u6392\u5e8f*//*\u53c2\u6570\u8bf4\u660e\uff1a*//*int arr[]\uff1a\u6392\u5e8f\u76ee\u6807\u6570\u7ec4*//*int len\uff1a\u5143\u7d20\u4e2a\u6570*/void sort_xz (elemType arr[], int len) {elemType temp;int i, j, k;for(i=0; i<len-1; i++) { /*\u5916\u5faa\u73af\u63a7\u5236\u8d9f\u6570\uff0cn\u4e2a\u6570\u9009n-1\u8d9f*/ k=i; /*\u5047\u8bbe\u5f53\u524d\u8d9f\u7684\u7b2c\u4e00\u4e2a\u6570\u4e3a\u6700\u503c,\u8bb0\u5728k\u4e2d */ for(j=i+1; j<len; j++) /*\u4ece\u4e0b\u4e00\u4e2a\u6570\u5230\u6700\u540e\u4e00\u4e2a\u6570\u4e4b\u95f4\u627e\u6700\u503c*/if(arr[k]<arr[j]) /*\u82e5\u5176\u540e\u6709\u6bd4\u6700\u503c\u66f4\u5927\u7684*/k=j; /*\u5219\u5c06\u5176\u4e0b\u6807\u8bb0\u5728k\u4e2d*/if(k!=i) { /*\u82e5k\u4e0d\u4e3a\u6700\u521d\u7684i\u503c\uff0c\u8bf4\u660e\u5728\u5176\u540e\u627e\u5230\u6bd4\u5176\u66f4\u5927\u7684\u6570*/temp=arr[k];arr[k]=arr[i];arr[i]=temp;} /*\u5219\u4ea4\u6362\u6700\u503c\u548c\u5f53\u524d\u5e8f\u5217\u7684\u7b2c\u4e00\u4e2a\u6570*/}}int main (void) {elemType arr[LEN];int len;printf ("\u8bf7\u8f93\u5165\u6570\u7ec4\u5143\u7d20\u4e2a\u6570\uff1a");scanf ("%d",&len); printf ("\u8bf7\u8f93\u5165\u5305\u542b%d\u4e2a\u5143\u7d20\u7684\u6570\u7ec4\uff1a\n",len);inputArr (arr, len);puts ("\u6392\u5e8f\u540e\u6570\u7ec4\uff1a");sort_xz (arr, len); /*\u964d\u5e8f\u9009\u62e9\u6392\u5e8f*/printArr (arr,len);putchar ('\n');getch (); /*\u5c4f\u5e55\u6682\u7559*/free (arr);return 0;}\u8fd0\u884c\u7ed3\u679c

1、数组形式。

解题思路: 判断比较的躺数,每趟相邻的两个数再进行比较,应用两次 for 循环

具体代码:

void PrintArr(int* arr, int sz)

{

int i = 0;

for (i = 0; i < sz; i++)

{

printf("%d ", *(arr + i));

}  

return 0;

}

void BubbleSort(int arr[],int  sz)

{

int i = 0;

for (i = 0; i < sz - 1; i++)

{

int j = 0;

for (j = 0; j < sz - i - 1; j++)//用for循环的元素个数控住多少趟

{

if (arr[j] > arr[j + 1])

{

int tmp = arr[j];

arr[j] = arr[j+1];

arr[j + 1] = tmp;

}

}

}

}

int main()

{

int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

int sz = sizeof(arr) / sizeof(arr[0]);

BubbleSort(arr, sz);

PrintArr(arr, sz);

system("pause");

return 0;

}

2、指针形式。

创建两个变量start、end,记住数组起始与结束位置元素的地址,应用两次 while 循环交换地址

指针冒泡排序 :

void PrintArr(int* arr, int sz)

{

int i = 0;

for (i = 0; i < sz; i++)

{

printf("%d ", *(arr + i));

}  

return 0;

}

void BubbleSort(int *arr, int  sz)

{

int start = arr;

int end = arr + sz - 1;

//趟数

while (start < end)

{

int *cur = start;

while (cur < end)

{

if (*cur > *(cur+1))

{

int tmp = *cur;

*cur = *(cur + 1);

*(cur + 1) = tmp;

}

cur++;

}

end--;

}

}

int main()

{

int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

int sz = sizeof(arr) / sizeof(arr[0]);

BubbleSort(arr, sz);

PrintArr(arr, sz);

system("pause");

return 0;

}

扩展资料:

算法原理

冒泡排序算法的原理如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。



冒泡排序:

#include<stdio.h> 

int main()

{ int a[10];

int i,j,t;

printf("input 10 numbers:
");

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

scanf("%d",&a[i]);//输入10个数值

printf("
");

for(j=0;j<9;j++) //进行9轮比较

for(i=0;i<9-j;i++) //每一轮中进行9-j次比较

if(a[i]<a[i+1]) //相邻两个数比较

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf("output 10 numbers:
");

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

printf("%d ",a[i]); //按顺序输出10个数值

printf("
");

return 0;

}

当然很多行可以省掉。只是这样更清楚。



输入十个数保存到,整形的数组中然后用选择排序。
int temp=0; //临时存储
int[] array={6,5,7,8,1,9,3,2,0,4};
for(int i=0;i<10;i++)
{
for (int k = i + 1; k < 10; k++)
{
if (array[i] > array[k])
{
temp = array[k];
array[k] = array[i];
array[i] = temp;
}
}
} //即可

#include<stdio.h>
int main()
{int a[10],i;
for(i=0;i<10;i++) //用于十个元素排例。
scanf(“%d”,&a[i]);//对十个元素输入数值
for(i=0;i<10;i++)//从小到大排例输入的十个元素。
printf(“%d”,a[i]);
return 0;
}

用冒泡法 看书上例题 或者网上搜冒泡法 现在一下记不得那么多编码

扩展阅读:从小c到大 ... c语言三个数求最大值 ... c#输入整数 ... 输入十个数求偶数之和 ... 输入十个数求平均值 ... c语言按从小到大输出 ... 输入十个整数求和 ... c语言求两个整数之和 ... 输入十个整数将其逆序输出 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网