十個數演算法
1. 設計一個計算10個數的平均數的演算法 (用直到型和當型)
演算法可以這樣描述:
S1:S=0;
S2:I=1;
S3:輸入一個數G;
S4:使S+G,其和仍放S中;
S5:使I的值增加1;
S6:如果I>10,退出循環,如果I≤10重復S3;
S7:將平均數S/10存放在A中;
S8:輸出A.
按著演算法就可以畫程序框圖了
2. 輸入10個數,用冒泡排序法按由小到大順序排序並輸出c語言的
冒泡排序的程序代碼如下:
#include<stdio.h>
int main()
{
int a[10]={0};
int i=0,j=0,t=0;
for(i=0;i<10;i++)
{scanf("%d",&a[i]);}
for(i=0;i<10;i++)
{for(j=0;j<10-i;j++){
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;}
任意輸入十個數據,程序運行結果:
(2)十個數演算法擴展閱讀:
冒泡排序演算法的原理如下:
1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2、對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
3、針對所有的元素重復以上的步驟,除了最後一個。
4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
3. 利用選擇法,描述將10個數按從大到小順序排列的基本思路與演算法流程
選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最大的記錄作為有序序列中第i個記錄。基於此思想的演算法主要有簡單選擇排序、樹型選擇排序和堆排序。
java選擇排序法代碼
import java.util.Random;
public class ArrayDemo {
public static void main(String[] args) {
Random random=new Random();
int[] pData=new int[10];
for(int i=0;i<pData.length;i++){ //隨機生成10個排序數
Integer a =random.nextInt(100);
pData[i]= a;
System.out.print(pData[i]+" ");
}
System.out.println();
pData=Choose(pData);
for(int i=0;i<pData.length;i++){
System.out.print(pData[i]+" ");
}
System.out.println();
}
public static int[] Choose(int[] pData){
System.out.println();
int k;
for (int i = 0; i < pData.length; i++) {
k = i;
for (int j = i; j < pData.length; j++) {
if(pData[j]<pData[k]){k = j;}
}
int a=pData[i];
pData[i]=pData[k];
pData[k]=a;
}
return pData;
}
}
(3)十個數演算法擴展閱讀:
其他排序方法:
簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;
以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。
以下為簡單選擇排序的存儲狀態,其中大括弧內為無序區,大括弧外為有序序列:
初始序列:{49 27 65 97 76 12 38}
第1趟:12與49交換:12{27 65 97 76 49 38}
第2趟:27不動:12 27{65 97 76 49 38}
第3趟:65與38交換:12 27 38{97 76 49 65}
第4趟:97與49交換:12 27 38 49{76 97 65}
第5趟:76與65交換:12 27 38 49 65{97 76}
第6趟:97與76交換:12 27 38 49 65 76 97 完成
4. 設計一個計算10個數的平均數的演算法的程序框圖.
思路分析:我們用一個循環依次輸入10個數,再用一個變數存放數的累加和,在求出10個數的和後,除以10,就可得到10個數的平均數.本題可用兩種循環方式. 解法一:用循環形式2循環結構設計演算法框圖如圖1-1-9(1): 虛線框內就是循環形式2循環結構,其中包含一個條件分支結構. (1) (2) 圖1-1-9 解法二:用循環形式1循環結構設計演算法框圖如圖1-1-9(2).虛線框內就是循環形式1循環結構,其中包含一個條件結構. 點評:一個循環結構,可以用形式1,也可以用形式2.但根據條件限制的不同,有時用形式1比形式2好,有時用形式2比形式1好,關鍵看條件.有時用兩種類型都很方便,我們要學會分析題目的控制循環條件,循環結構前、後都可以有多個語句,這兩個循環結構內還包含著一個順序結構.一般說來,這三種結構貫穿於程序中,相互結合,使程序更完美.但在一個演算法中,這三種結構不一定同時存在,可能會有一種或兩種不存在.
5. 『』構造一個演算法,找出十個數字中最小的那個數『』怎麼做
定義最小值變數,初始化為第一個數字值。
依次與剩餘9個數對比, 如果當前最小值,比這個數小,則賦值該數為最小值。
遍歷後, 最小值變數中存儲的 就是十個數的最小值了。
6. 依次將10個數輸入,要求將其中最大的數輸出.這個問題的演算法怎麼寫才好啊><
用打擂台的方法。。。基本意思就是將第一個數放進去,然後依次和10個數比,大的留下。演算法如下:#include<stdio.h>
int main()
{
int a[10],i,max;//定義一個數組來存放著10數。
printf("please enter 10 numbers:\n");
for(i=0;i<10;i++)//用一個for循環來輸入10數。
scanf("%d",&a[i]);
for(max=a[0],i=0;i<10;i++)//用for循環讓這10個數一次和max比。
if(max<a[i])
max=a[i];
printf("The max number is:%d\n",max);
return 0;
}經過驗證 沒有錯誤。這是學習數組的一個非常基本的程序
7. 設計一個計算10個數的平均數的演算法 (用直到型和當型)
演算法可以這樣描述:
S1:S=0;
S2:I=1;
S3:輸入一個數G;
S4:使S+G,其和仍放S中;
S5:使I的值增加1;
S6:如果I>10,退出循環,如果I≤10重復S3;
S7:將平均數S/10存放在A中;
S8:輸出A.
按著演算法就可以畫程序框圖了