作C语言编程实现:对输入100个整数进行隆序(从大到小)排序,按每行十个数输出排序后的数据?
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:
#include
int main()
{
int i,j,a[10],t;
printf("输入数");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10;j++)
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("从大到小");
for (i = 0; i < 10; i++)
printf("%2d", a[i]);
return 0;
}
扩展资料:
代码还可以设计,如下:
#include
int main()
{
int a[10],i,j,t;//定义数组;
for(i=0;i<10;i++){
scanf("%d",&a[i]);//给数组赋值;
}
for(i=0;i<9;i++)//10个数,进行9轮比较;
for(j=0;j<10-i;j++){//第一个数比较9次,依次递减;
if(a[j]>a[j+1]) {//交换值;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++){
printf("%d
",a[i]);//输出数组的值;
}
return 0;
}
}
printf("the sorted numbers:
");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf("
");
}
参考资料:百度百科-printf
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;
}
扩展资料:算法原理
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
#define arrSize 100
typedef enum {swap_right,swap_left}swap_dir;
void init_arr(int* arr,int size);
void quickSort(int* arr, int size);
void print_arr(int* arr,int size);
int main() {
int arr[arrSize];
printf("请输入%d个整数(绝对值小于100000的整数,便于显示):\n",arrSize);
init_arr(arr, arrSize);
printf("完成输入!!!\n");
printf("开始排序\n");
quickSort(arr, arrSize);
printf("结束排序!!!\n");
printf("开始输出\n");
print_arr(arr, arrSize);
printf("结束输出!!!\n");
return 0;
}
void init_arr(int* arr, int size) {
for (int i = 0; i < size; i++) {
printf("请输入第 %d 个整数:",i+1);
scanf("%d",arr+i);
}
}
void quickSort(int* arr, int size) {
if (arr == NULL || size <= 1)
return;
int key_index = 0;
int key_num = arr[key_index];
int front_index = 0;
int back_index = size - 1;
swap_dir dir = swap_right;
while (front_index < back_index) {
if (dir == swap_right) {
if (arr[back_index] < key_num) {
arr[key_index] = arr[back_index];
arr[back_index] = key_num;
key_index = back_index;
front_index++;
dir = swap_left;
}
else {
back_index--;
}
}
else if (dir == swap_left) {
if (arr[front_index] > key_num) {
arr[key_index] = arr[front_index];
arr[front_index] = key_num;
key_index = front_index;
back_index--;
dir = swap_right;
}
else {
front_index++;
}
}
}
if (key_index > 0)
quickSort(arr,key_index);
if (key_index < size -1)
quickSort((arr+key_index + 1),(size - 1 - key_index));
}
void print_arr(int* arr, int size) {
for (int i = 0; i < size; i++) {
printf("%5d ",*(arr + i));
if ((i + 1) % 10 == 0) {
printf("\n");
}
}
}
#include <stdio.h>
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;++j)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main()
{
int a[100],i;
for(i=0;i<100;++i)
scanf("%d",&a[i]);
sort(a,100);
for(i=0;i<100;++i)
printf("%d%c",a[i],(i+1)%10?' ':'
');
return 0;
}
给你一个方法。使用初学者的,用冒泡排序排完放到一个整型数组,然后用判断到10就输出,然后输出换行符,如此类推
如有用,希望采纳
#include<stdio.h>
void main()
{int num[100],i,j,tmp;
for(i=0;i<100;i++)scanf("%d",num+i);
for(i=0; i<100; i++)
{
for(j=i+1; j<100; j++)
{
if(num[i] > num[j])
{
tmp = num[i];
num[i] = num[j];
num[j] = tmp;
}
}
}
for(i=0;i<10;i++)
{for(j=0;j<10;j++)printf("%d ",num+10*i+j);printf("\n");}
}
纯手打
使用C语言编程,对市场十种常见商品进行信息录入,并可实现排序输出功能...
使用C语言编程,对市场十种常见商品进行信息录入,并可实现排序输出功能 谢谢 我来答 1个回答 #热议# 没有文化的年迈农民工退休后干点啥好?匿名用户 2014-01-04 展开全部 很久以前大一刚入学时候做的商品管理系统,多文件结构,编译的时候编译Mainfile.c就行,当时还不懂事~用了goto语句,不过可以替换成循环【...
C语言,编程实现:输出以下图形
include <stdio.h>#include <math.h>int main(){int i,j;for(i=-2; i<=2; i++){for( j=2; j>=-2; j--){if(abs(i)+abs(j)<=2)printf("*");elseprintf(" ");}printf("\\n");}return 0;} 把整个图形看成直角坐标系 ...
用c语言编写一程序实现如下功能:输入1、2、3、4、5、6、70(分别对应星 ...
C语言实现输入1到7的数字,输出对应是星期几,参考代码如下: #include "stdio.h" int main() { int d; const char wd[7][3]= {"一","二","三","四","五","六","日"}; scanf("%d",&d); printf("星期%s",wd[d-1]); return 0; } 本回答被网友采纳 已赞过 已踩过< 你对这个回答的...
c语言编程题:用选择法对数组中15个整数按由小到大排序。
include<stdio.h>#include<stdlib.h>void select_sort(int *a, int n){ int i, j, min, t; for( i =0; i < n -1; i ++){ min = i; \/\/查找最小值 for( j = i +1; j < n; j ++) if( a[min] > a[j])min = j; \/\/交换 if( min !=...
c语言编程, printf();的具体实现是?
代码实现如下:include <stdio.h>#include <stdlib.h>int main(){float c, f;scanf("%f", &c);f = (5.0 \/9.0) * c + 32;printf("%f" , f);return 0;}
c语言编程 对于一个具有10个元素的数组,先键盘输入数组元素的值,再求...
include "stdio.h"int main(){ double a[10],sum=0; int i; printf("请输入数组的10个元素:\\n"); for(i=0;i<10;i++) { scanf("%lf",&a[i]); sum+=a[i]; } printf("10个元素的和为:%lf\\n",sum);} ...
用C语言对一维数组排序,并输出已排好元素的原来位置
之后将指针数组内的地址值依次取出来与a数组首地址相减,得到的就是原来的位置。利用的原理:数组内地址是连续的!include <stdio.h>int main(){ int a[5]={3, 8, 4, 7, 6}, b[5]={8, 7, 6, 4, 3},c[5],i,j,*p[5]; for(i=0;i<5;i++) { for(j=0;j...
如何利用c语言编程实现矩阵对角线元素之和
1、首先在电脑中,打开Dev-c++软件,点击“新建源代码”,如下图所示。2、具体程序如下,如下图所示。3、此次的程序最终目的是求出3x3的整型矩阵对角线元素之和,所以要向计算机输入3x3矩阵中的所有元素。4、其次要对输入的矩阵的元素进行放置于相应的位置,以便于之后的计算其对角元素之和。5、最后...
C语言编程:从键盘中输入十个数对一个一维数组赋值,并将其中的奇数存放到...
int i,j=0;printf("Please Input Ten Numbers:\\n");for(i=0;i<10;i++);{ scanf("%d",&a[i]);if(a[i]%2!=0){ b[j]=a[i];j++;} } printf("Output the JiShu:");for(i=0;i<j;i++)printf(" %d",b[i]);getch();} 这是用win-tc编的,很简单!希望对朋友有...
c语言:编程实现:键盘输入一组学生成绩,输入以-1作为输入的结束。统计这...
include <stdio.h>void main() \/\/ 改成 int main (){ int score, max, min, average, sum, i = 1; scanf("%d\\n", &score); \/\/ 如果这时候输入是 -1 呢 sum = max = min = score; while (score != -1) { \/\/ 这种应该用 do while scanf("%d", &...
徭党依托: //#include "stdafx.h"//vc++6.0加上这一行.#include "stdio.h" int main(int argc, char *argv[]){ int i,a[100]; printf("Please enter 100 integers...\n"); for(i=0;i<100;scanf("%d",a+i++)); for(i--;i;printf("%d ",a[i--])); printf("%d\n",a[0]); return 0; }
北川羌族自治县17275256841: c语言 从键盘中输入100个整数 输出其中的最大值 最小值和平均值,并统计其中的偶数?(保留两位小数) - ?
徭党依托: #include <stdio.h>int main() {int n;int sum = 0;float avg;int maxnum = 0;int minnum = 0;int evencount = 0;for(int i =0;i<100;i++){权scanf("%d",&n);maxnum = maxnum > n ? maxnum:n;minnum = minnum ? (minnum > n ? n:...
北川羌族自治县17275256841: 请编写一个程序,从键盘输入100个整数,统计其中偶数的平均值.用简单的c语言程序 - ?
徭党依托: #include<stdio.h> int main() {int s[100],i,j=0,sum;double average;for(i=0;i<100;i++)scanf("%d",&s[i]);for(i=0;i<100;i++){ if(s[i]%2==0)sum+=s[i];j++}average=sum/j;printf("%lf",average); return 0; }
北川羌族自治县17275256841: (C语言编程)键盘输入100个整数,计算并输出大于等于0的个数和平均值(保留2位小数) - ?
徭党依托: #inlude "stdio.h" int main() {int sum=0,a[100],i,j,count; count=0; printf("请输入100个整数:\n"); for(i=0;i<100;i++) { scanf("%d",&a[i]); if(a[i]>=0) { sum+=a[i]; count++; } } printf("大于等于0数有%d个:\n",count); printf("平均数为:%.2f\n",(float)sum/count); }
北川羌族自治县17275256841: 输入一百个数并把这一百数按从大到顺序输出,用C语言怎样编程??? - ?
徭党依托: 从大到小对不 #include void main() { int i,j,t,a[100]; //定义 for(i=0;i<101;i++) //作一百次循环 scanf("%d",&a[i]); //输出 for(i=0;i<101;i++) //冒泡法 { for(j=0;j<101-i;j++) if (a[j]
北川羌族自治县17275256841: C语言编程 将100个实数输入到一个一维数组中,求出各元素的和、平均值、最小值和最大值及其所在的行号和列 - ?
徭党依托: //将100个实数输入到一个一维数组中,求出各元素的和、平均值、最小值和最大值及其所在的行号和列 #include <stdio.h>#define M 100 int main() { float c[M]; int i,n=0; float sum=0.0,ave,min,max;//和、平均值、最小值和最大值 int minx,maxx;...
北川羌族自治县17275256841: C语言编程:将100个实数输入到一个一维数组中,求出各个元素的和、平均值、最小值和最大值及其所在行号和列号?
徭党依托: float array[100]; float sum=0; float min; float max; int min_index=0; int max_index=0; for(int i=0;i<100;i++) {array[i]=0; //最好初始化一下,免得你输入的有问题cin>>array[i];sum+=array[i];if(i==0) //保留第一个最小数和最大数,你也可以把min...
北川羌族自治县17275256841: 用c语言输入100个整数,输出最大值最小值,平均值,并排序 - ?
徭党依托: #include#include int main() {int n,i,j,tmp,sum,a[1000]; printf("请输入n的值:\n"); scanf("%d",&n); printf("请输入%d个数:\n",n); for(i=0;i {scanf("%d",&a[i]); //录入数据. sum=sum+a[i]; //直接求和,方便后面求平均值} for(i=0;i ...
北川羌族自治县17275256841: 编程题:从键盘输入100个整数,从中找出最大数和最小数 - ?
徭党依托: #include <stdio.h> void main() { int num[100]; int i; for(i=0;i<100;i++)//用循环来进行输入数据 scanf("%d",&num[i]);//对于输入应该要使用取地址符 int max,min; max=min=num[0];//这里初始化最大值和最小值,让它们刚开始均等于第一个数 ...
北川羌族自治县17275256841: 求解:用C语言编写程序,从键盘上输入100个字符,存入名为“file.txt“文件中.. - ?
徭党依托: #includemain() { FILE *p=fopen("file.txt","w"); char s[128]; scanf("%s",s); // 读取多少都可以,但不要超过127 fprintf(p,"%s\n",s); // 存入到"file.txt”文件 }