Ⅰ 編寫簡單的單片機c語言程序 1、指定數組找最大值 2、排序
#include<stdio.h>
#defineNR10//數組元素個數
/*從主函數開始*/
intmain(intargc,char**argv)
{
intar[NR];
inti;
fprintf(stdout,"請輸入%d個整數: ",NR);
/*獲取並檢查用戶輸入*/
while(1)
{
/*循環獲取NR個數據*/
for(i=0;i<NR;i++)
{
if(fscanf(stdin,"%d",&ar[i])!=1)
{
fprintf(stdout,"輸入錯誤!請重新輸入: ");
while(getchar()!=' ');//丟棄多餘非法字元
break;//打破內層for循環
}
}
/*檢查是否獲取到NR個數據*/
if(i!=NR)
{
continue;
}
else
{
break;
}
}
/*查找最大值和最小值*/
intmax,min;
max=ar[0];//假定第一個數為最大值
min=ar[0];//同時假定也第一個數為最大值
/*從第二個數開始比較查找最值*/
for(i=1;i<NR;i++)
{
if(ar[i]>max)//最大值
{
max=ar[i];
}
if(ar[i]<min)//最小值,不能使用elseif,否則會跳過比較
{
min=ar[i];
}
}
fprintf(stdout,"最大值為:%d最小值為:%d ",max,min);
/*接下來:查找第二大值*/
intsecond;
/*先獲取前兩個數的第一大和第二大值*/
ar[0]>ar[1]?(max=ar[0],second=ar[1]):
(max=ar[1],second=ar[0]);
/*從第2個數開始比較查找*/
for(i=2;i<NR;i++)
{
if(ar[i]>max)//查找最大值:目的是為了比較第二大值
{
second=max;//先把最大值保存給第二大值
max=ar[i];
}
elseif(second<ar[i])//比最大值小的數再看看是否大於第二大值
{
second=ar[i];
}
}
fprintf(stdout,"第二大值為:%d ",second);
return0;
}
(1)c語言冒泡排序找最大擴展閱讀
一、c語言程序求數組內所有數的和:
1、通過索引的方式就可以訪問到數組內部的元素,索引是從0到數組長度-1。
2、數組點Lenth就是數組的長度。
二、c語言程序冒泡排序:
1、比較相鄰的兩個元素的大小,如果第一個比第二個大就互換一下。
2、然後每一對都做如上操作,如此一來最後一個元素肯定是最大的數了。
3、除了最後一個元素,重復以上步驟。然後倒數第二個就是次大的值了
4、一次按照這個邏輯直到沒有任何數字可以比較了。
Ⅱ c語言冒泡排序從大到小
#include <stdio.h>
void bubble_sort(int a[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if(a[j] < a[j + 1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int number[10] = {95, 45, 15, 78, 84, 51, 24, 12, 38, 97};
int i,SIZE=10;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
printf("%d ", number[i]);
printf("\n");
}
Ⅲ C語言冒泡排序法是什麼
冒泡排序法,是C語言常用的排序演算法之一,意思是對一組數字進行從大到小或者從小到大排序的一種演算法。
具體方法是:
相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不用交換。重復這樣的過程,一直到最後沒有數值需要交換,則排序完成。
C語言常見的排序演算法:
1、冒泡排序
基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出一個未排序中最大的數放到數組後面。
2、快速排序
基本思想:選取一個基準元素,通常為數組最後一個元素(或者第一個元素)。從前向後遍歷數組,當遇到小於基準元素的元素時,把它和左邊第一個大於基準元素的元素進行交換。在利用分治策略從已經分好的兩組中分別進行以上步驟,直到排序完成。
3、直接插入排序
基本思想:和交換排序不同的是它不用進行交換操作,而是用一個臨時變數存儲當前值。當前面的元素比後面大時,先把後面的元素存入臨時變數,前面元素的值放到後面元素位置,再到最後把其值插入到合適的數組位置。
4、直接選擇排序
基本思想:依次選出數組最小的數放到數組的前面。首先從數組的第二個元素開始往後遍歷,找出最小的數放到第一個位置。再從剩下數組中找出最小的數放到第二個位置。以此類推,直到數組有序。
以上內容參考 網路-排序演算法、網路-c語言冒泡排序
Ⅳ C語言冒泡排序法
#include<stdio.h> //鏈接標准頭文件
#define N 5 //定義常量N並賦值為5
void main() //主函數入口
{ //表示主函數開始
int i,j; //定義整形變數i和j
int grade[N],temp; //定義N維(N=5,也就是五維啦^^)整形數組和整形變數temp
printf("輸入5個數\n"); //在屏幕上顯式「輸入5個數」並且換行
for(i=0;i<N;i++) //開始for循環,從i=0,每次加1,直到i=4,共需循環5次
{ //循環體開始
scanf("%d",&grade[i]); //依次獲取用戶輸入的整數值並存入數組grade中
} //循環結束
for(i=0;i<N;i++) //開始外層for循環,從i=0,每次加1,直到i=4
{ //外層循環體開始
for(j=0;j<N-1-i;j++) //開始外層for循環,從j=0,每次加1直到i等於外層循環的N-j-1
{ //內層循環體開始
if(grade[j]<grade[j+1]) //條件判斷
{ //如果整形數組前面的數比其後的小,執行以下語句
temp=grade[j+1]; //將比較大的數賦值給temp
grade[j+1]=grade[j]; //將比較小的數賦值給數組中後面的變數
grade[j]=temp; //將比較大的數賦值給數組中前面的變數
} //從此便完成大小變數的交換,使得大值往前放
} //結束內層循環
} //結外內層循環,完成排序
printf("最後排序為:\n");//在屏幕顯式「最後排序為:」並換行
for(i=0;i<N;i++) //同開始的for循環類似
{ //開始循環輸出
printf("%d",grade[i]); //只是這里要逐個輸出數組中的五個數值
} //結束循環輸出
printf("\n"); //輸出換行到屏幕,看不到什麼效果,可刪掉
} //結束main()函數
Ⅳ 求C語言冒泡排序比較3個數的大小
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#defineLEN100/*數組長度上限*/
/*升序冒泡排序*/
/*參數說明:*/
/*intarr[]:排序目標數組*/
/*intlen:元素個數*/
voidbubbleSortAsc(intarr[],intlen){
inti,j,temp;
for(i=0;i<len-1;i++)
for(j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
/*列印數組*/
voidprintArr(intarr[],intlen){
inti;
for(i=0;i<len;i++)
printf("%d ",arr[i]);
putchar(' ');
}
intmain(void){
intarr[LEN]={3,5,1};
intlen=3;
puts("初始數組:");
printArr(arr,len);
putchar(' ');
puts("升序排列:");
bubbleSortAsc(arr,len);/*升序冒泡排序*/
printArr(arr,len);
putchar(' ');
getch();/*屏幕暫留*/
free(arr);
return0;
}
運行結果
Ⅵ c語言,輸入十個整數,要求用到冒泡演算法,輸出最大值最小哦值,再去掉最大最小值求平均數
#include"stdio.h"
intmain(intargc,char*argv[]){
intn,s,min,max,t;
printf("Pleaseenter10integers... ");
for(s=n=0;n<10;n++){
scanf("%d",&t);
if(max<t||n==0)
max=t;
if(min>t||n==0)
min=t;
s+=t;
}
printf(" TheMAX=%d TheMIN=%d TheAVE=%g ",max,min,(s-max-min)/8.0);
return0;
}
運行樣例:
Ⅶ C語言冒泡排序。
#include<stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++) /*進行9次循環 實現9趟比較*/
for(i=0;i<9-j;i++) /*在每一趟中進行9-j次比較*/
if(a[i]>a[i+1]) /*相鄰兩個數比較,想降序只要改成a[i]<a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers: ");
for(i=0;i<10;i++)
printf(" %d",a[i]);
}
(7)c語言冒泡排序找最大擴展閱讀:
冒泡排序演算法的運作
1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。
3、針對所有的元素重復以上的步驟,除了最後已經選出的元素(有序)。
4、持續每次對越來越少的元素(無序元素)重復上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。
簡單的表示
#include <stdio.h>
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
int main()
{
int a[10] = {2,1,4,5,6,9,7,8,7,7};
int i,j;
for (i = 0; i < 10; i++)
{
for (j = 9; j > i; j--)//從後往前冒泡
{
if (a[j] < a[j-1])
{
swap(&a[j], &a[j-1]);
}
}
}
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
return 0;
}
參考資料來源:冒泡排序-網路
Ⅷ C語言:採用冒泡排序方法,對10個數按由小到大的的順序排序
代碼如下(對10個整數進行升序排序):
#include<stdio.h>
int main()
{
int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};
//排序
for(i=1;i<10;i++)//外循環控制排序趟數,n個數排n-1趟
{
for(j=0;j<10-1;j++)//內循環每趟比較的次數,第j趟比較n-i次
{
if(a[j]>a[j+1])//相鄰元素比較,逆序則交換
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("排序後的結果是: ");
for(i=0;i<10;i++)
{
printf("%d",a<i>);
}
printf(" ");
return 0;
}
冒泡法:
演算法分析:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底為升序,最小值沉底為降序。
(8)c語言冒泡排序找最大擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在當前項目中的函數原型、類型定義和宏
你可以在#include命令中使用宏。如果使用宏,該宏的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
當上述程序代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的內容;如果還沒定義,則插入myProject.h的內容。