版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
會計(jì)學(xué)1C語言程序設(shè)計(jì)第十一講例5:輸入若干個(gè)正整數(shù),以0或負(fù)數(shù)結(jié)束,將其中個(gè)位不為0的數(shù)輸出,并統(tǒng)計(jì)滿足條件的數(shù)據(jù)個(gè)數(shù)。輸入xn=0
count++
fori=0ton-1a[i]%10!=0T輸出a[i]F
x>0a[n]=xcount=0n++輸入x#include<iostream.h>voidmain(){inta[100],x,n,i,count;n=0;count=0;cin>>x;while(x>0){ a[n]=x;n++; cin>>x;}for(i=0;i<n;i++) if(a[i]%10!=0) {cout<<a[i]<<""; count++; }cout<<"個(gè)數(shù)是:"<<count;}輸出count第1頁/共29頁例6:輸入任意n個(gè)數(shù),將其中能被5整除的數(shù)組成一個(gè)新的數(shù)組。舉例3106525715ab01234561052515mmmmm第2頁/共29頁#include"iostream.h"voidmain(){ inta[100],b[100],n,m,i; cin>>n; for(i=0;i<n;i++) cin>>a[i]; m=0; for(i=0;i<n;i++) if(a[i]%5==0) { b[m]=a[i]; m++; } for(i=0;i<m;i++) cout<<b[i]<<"";}輸入nm=0
m++
fori=0ton-1a[i]%5==0Tb[m]=a[i]F
fori=0ton-1輸入a[i]
fori=0tom-1輸出b[i]第3頁/共29頁
基本思想:假設(shè)數(shù)組a已經(jīng)按由小到大的順序排好序,設(shè)三個(gè)變量low,high和mid分別代表首元素,最后一個(gè)元素以及中間元素的下標(biāo),初值分別為:low=0、high=n-1、mid=(low+high)/2。從中間元素開始查找,用x和a[mid]比較,此時(shí)有三種情況:1)若x==a[mid],則查找成功;2)若x<a[mid],則令high=mid-13)若x>a[mid],則令low=mid+1折半查找法第4頁/共29頁例:數(shù)組元素為:{5,13,19,21,37,56,64,75,80,88,92}1.查找x=21的情況(1)low=0;high=10;mid=(0+10)/2=5513192137566475808892lowmidhigh因?yàn)閍[mid]>x,所以向左找,令high=mid-1=4(2)low=0;high=4;mid=(0+4)/2=2513192137566475808892lowmidhigh因?yàn)閍[mid]<x,所以向右找,令low=mid+1=3(3)low=3;high=4;mid=(3+4)/2=3513192137566475808892lowmidhigh因?yàn)閍[mid]==x,查找成功,所查元素的下標(biāo)為mid012345678910012345678910012345678910第5頁/共29頁(1)low=0;high=10;mid=(0+10)/2=5因?yàn)閍[mid]<x,所以向右找,令low=mid+1=6(2)low=6;high=10;mid=(6+10)/2=8513192137566475808892lowmidhigh因?yàn)閍[mid]<x,所以向右找,令low=mid+1=9(3)low=9;high=10;mid=(9+10)/2=9513192137566475808892lowmidhigh因?yàn)閍[mid]>x,所以向左找,令high=mid-1=82.查找x=85的情況513192137566475808892lowmidhigh此時(shí)low>high,查找失敗012345678910012345678910012345678910第6頁/共29頁#include<iostream.h>voidmain(){ inta[100],i,n,x,low,high,mid;
cin>>n; for(i=0;i<n;i++) cin>>a[i]; cin>>x;
low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(x==a[mid]) break; elseif(x<a[mid]) high=mid-1; else low=mid+1; } if(x==a[mid]) cout<<"YES:"<<mid; else cout<<"NO";}第7頁/共29頁#include<iostream.h>voidmain(){inti,j,temp,n,a[100];
cin>>n;for(i=0;i<n;i++)cin>>a[i];
for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]) {temp=a[i];a[i]=a[j]; a[j]=temp;}
for(i=0;i<n;i++) cout<<a[i]<<"";}例:將任意n個(gè)數(shù)由小到大排序。排序#include<iostream.h>voidmain(){inti,j,n,temp,di,a[100];
cin>>n;for(i=0;i<n;i++)cin>>a[i];
for(i=0;i<n-1;i++)
di=i;for(j=i+1;j<n;j++)if(a[di]>a[j]) di=j;if(i!=di){temp=a[i];a[i]=a[di]; a[di]=temp;}
for(i=0;i<n;i++) cout<<a[i]<<"";}{選擇排序法}第8頁/共29頁例:用冒泡法對n個(gè)數(shù)進(jìn)行排序(從小到大)排序過程:(1)比較第一個(gè)數(shù)與第二個(gè)數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個(gè)數(shù)與第三個(gè)數(shù);依次類推,直至第n-1個(gè)數(shù)和第n個(gè)數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個(gè)元素位置上;(2)對前n-1個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個(gè)元素位置;(3)重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束。相鄰兩數(shù)比較,大數(shù)小數(shù)
第9頁/共29頁3 8 4 2 13 8 4 2 13 8 4 2 13 4 8 2 13 4 2 8 13 4 2 1 8第一趟3 4 2 1 83 4 2 1 83 2 4 1 83 2 1 4 8第二趟3 2 1 4 82 3 1 4 82 1 3 4 8第三趟2 1 3 4 81 2 3 4 8第四趟a[1]a[2]a[3]a[4]a[5]
j=1to4
j=1to3
j=1to2
j=1to1由小到大排序第10頁/共29頁#include<stdio.h>voidmain(){inta[100],n,i,j,temp;scanf("%d",&n);for(i=1;i<=n;i++) scanf("%d",&a[i]);for(i=1;i<n;i++) for(j=1;j<=n-i;j++) if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }for(i=1;i<=n;i++) printf("%5d",a[i]);}第11頁/共29頁1 3 4 98 5 2 35 2 4 67 6 2 1a0a1a2a30 1 2 3a0[0] a0[1] a0[2] a0[3]a1[0] a1[1] a1[2] a1[3]a2[0] a2[1] a2[2] a2[3]a3[0] a3[1] a3[2] a3[3]a第12頁/共29頁二維數(shù)組的基本概念類型名數(shù)組名[常量1][常量2];例如:inta[3][4];整型二維數(shù)組名字為a3行a[0]a[0]
存儲結(jié)構(gòu)
邏輯結(jié)構(gòu)a[0][0]數(shù)組a
定義4列共12個(gè)元素a[0]a[0]a[1][0]a[1][1]
a[1][2]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]是一個(gè)矩陣或一張表格第0行第1行第2行第0列第1列第2列第3列a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]按行存儲a[0]a[1]a[2][0][1][2][3]一維數(shù)組個(gè)數(shù)一維數(shù)組中元素的個(gè)數(shù)第13頁/共29頁分行初始化例inta[2][3]={{1,2},{4}};例inta[][3]={{1,2},{4}};部分初始化a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]120400行長度可以省略例inta[2][3]={{1,2,3},{4,5,6}};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456全部初始化a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]120400第14頁/共29頁按存儲順序初始化例inta[2][3]={1,2,4};例inta[2][3]={1,2,3,4,5,6};全部初始化部分初始化例inta[][3]={1,2,3,4,5};行長度可以省略a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]124000a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123450第15頁/共29頁123456789101112二維數(shù)組的輸入和輸出例1:將一個(gè)3×4矩陣輸入到數(shù)組中并按行輸出。#include"stdio.h"voidmain(){inta[3][4],i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",a[i][j]);printf("\n");}}01 2 3012第16頁/共29頁舉例例2:寫結(jié)果。#include<stdio.h>voidmain(){ inti,x[3][3]={{6,5},{4,3},{2,1}}; for(i=0;i<3;i++) printf("%d",x[i][2-i]);}650430210012012032第17頁/共29頁例3:程序功能是求二維數(shù)組每列元素的平均值,修改程序中的錯(cuò)誤。#include"iostream.h"#defineM3;voidmain(){inta[M][M]={1,2,3,4,5,6,7}inti,j;for(i=0;i<M;i++){for(j=0;j<M;j++) ave[i]=ave[i]+a[i][j];ave[i]=ave[i]/M;}for(j=0;j<M;j++)cout<<""<<ave[j];}#include"iostream.h"#defineM3voidmain(){inta[M][M]={1,2,3,4,5,6,7};inti,j;floatave[M];for(i=0;i<M;i++){for(j=0;j<M;j++) ave[i]=ave[i]+a[j][i];ave[i]=ave[i]/M;}for(j=0;j<M;j++) cout<<""<<ave[j];}={0}第18頁/共29頁#include<stdio.h>voidmain(){inta[50][50],m,n,i,j,row,column,max;cin>>m>>n;for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<m;i++)for(j=0;j<n;j++)
if(max<a[i][j])
{max=a[i][j]; row=i; column=j;}
printf("max=%d,row=%d,column=%d",max,row,column);}例4:求二維數(shù)組中最大元素值及其行列號row=0;column=0;第19頁/共29頁例5:將二維數(shù)組行列元素互換,存到另一個(gè)數(shù)組中a=123456b=142536舉例#include<iostream.h>#include<iomanip.h>voidmain(){inta[50][50],b[50][50];intm,n,i,j;cin>>m>>n;for(i=0;i<m;i++)for(j=0;j<n;j++) cin>>a[i][j];for(i=0;i<n;i++)for(j=0;j<m;j++) b[i][j]=a[j][i];for(i=0;i<n;i++){for(j=0;j<m;j++)cout<<setw(3)<<b[i][j];cout<<endl;}}沿主對角線將矩陣a翻轉(zhuǎn)所得到的矩陣就是a的轉(zhuǎn)置矩陣第20頁/共29頁
矩陣的和運(yùn)算123456789+111654987=234101010161616
矩陣的積運(yùn)算123456789321654987=?????????1*3+2*6+3*9i行上的元素分別與j列上的元素相乘后的累加和作為結(jié)果矩陣的[i][j]矩陣的運(yùn)算
矩陣的差運(yùn)算123456789+111654987=012-202-202第21頁/共29頁例6:打印楊輝三角形。(a+b)n……111121133114641#include<stdio.h>#defineM30voidmain(){inta[M][M]={0},i,j,n;scanf("%d",&n);for(i=0;i<n;i++){a[i][0]=1; a[i][i]=1; }
for(i=2;i<n;i++)for(j=1;j<i;j++) a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<n;i++){ for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); }}舉例0123401234第22頁/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年復(fù)旦大學(xué)未來備考題庫創(chuàng)新學(xué)院招聘工程管理教育中心工作人員崗位1名及答案詳解參考
- 2025貴州六枝特區(qū)人力資源和社會保障局招聘城鎮(zhèn)公益性崗位2人模擬筆試試題及答案解析
- 2025年中國科大物理學(xué)院勞務(wù)派遣崗位招聘備考題庫及1套完整答案詳解
- 2025年江門國際旅行衛(wèi)生保健中心(江門海關(guān)口岸門診部)招聘備考題庫參考答案詳解
- 長沙市一中城南初級中學(xué)2026年春季教師招聘備考題庫及1套參考答案詳解
- 2025年廊坊文安縣中醫(yī)院面向社會招聘臨時(shí)工作人員備考題庫帶答案詳解
- 2025年電子城社區(qū)衛(wèi)生服務(wù)中心招聘備考題庫帶答案詳解
- 2025年中國作家協(xié)會所屬單位公開招聘工作人員13人備考題庫及一套完整答案詳解
- 《動畫影視作品中的傳統(tǒng)節(jié)日文化視覺呈現(xiàn)與傳播路徑優(yōu)化》教學(xué)研究課題報(bào)告
- 2025福建醫(yī)科大學(xué)安全保衛(wèi)工作人員招聘2人(十四)備考核心題庫及答案解析
- GB/T 41932-2022塑料斷裂韌性(GIC和KIC)的測定線彈性斷裂力學(xué)(LEFM)法
- 2023年浙江省大學(xué)生物理競賽試卷
- GB/T 7253-2019標(biāo)稱電壓高于1 000 V的架空線路絕緣子交流系統(tǒng)用瓷或玻璃絕緣子元件盤形懸式絕緣子元件的特性
- GB/T 2007.1-1987散裝礦產(chǎn)品取樣、制樣通則手工取樣方法
- GB/T 18226-2015公路交通工程鋼構(gòu)件防腐技術(shù)條件
- KRONES克朗斯吹瓶機(jī)課件
- 礦井提升與運(yùn)輸斜井提升課件
- 光纖通信期末試題
- 變電站主要電氣設(shè)備簡介課件
- 自然辯證法2018年版課后思考題答案
- LED顯示屏售后服務(wù)方案
評論
0/150
提交評論