版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理一維數(shù)組問(wèn)題導(dǎo)入請(qǐng)編寫(xiě)如下程序:輸入60名學(xué)生的C語(yǔ)言成績(jī),要求輸出高于平均分的成績(jī)以及不及格的人數(shù)。分析:為了保存60名學(xué)生的成績(jī),需要定義60個(gè)變量(假定為a1,a2,…a60)來(lái)存放,且用變量與平均分(假定為pj)一一比較如下:if(a1>pj)printf(“%f\n”,a1);if(a2>pj)printf(“%f\n”,a2);……if(a60>pj)printf(“%f\n”,a60);問(wèn)題解決請(qǐng)編寫(xiě)如下程序:輸入60名學(xué)生的C語(yǔ)言成績(jī),要求輸出高于平均分的成績(jī)以及不及格的人數(shù)。關(guān)鍵技術(shù):數(shù)組1、什么是數(shù)組?一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序的集合一維數(shù)組的定義一維數(shù)組的定義類型說(shuō)明符數(shù)組名[常量表達(dá)式];2.例:inta[10];定義一個(gè)數(shù)組,數(shù)組名a,有10個(gè)元素,每個(gè)元素的類型均為int。這10個(gè)數(shù)組元素分別是:a[0]、a[1]、a[2]、a[3]、a[4]、....、a[8]、a[9]。一維數(shù)組的定義3.說(shuō)明(3)常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度。下標(biāo)從0開(kāi)始!例如:intn;scanf("%d",&n);inta[n];
(4)數(shù)組大小可以是整型常量和符號(hào)常量,但不能是變量(2)數(shù)組名后是[],不能是()。×(1)數(shù)組名:按標(biāo)識(shí)符規(guī)則。本例a就是數(shù)組名。ints[100];floatb[8];#defineN50inta[N];(5)同類型數(shù)組可以一起定義,只需逗號(hào)隔開(kāi)。inta[10],b[20];一維數(shù)組的初始化(1)定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。intx[5]={1,2,3,4,5};(2)可以只給一部分元素賦初值。intx[5]={1,2};系統(tǒng)自動(dòng)給指定值的數(shù)組元素賦值:x[0]=1,x[1]=2,其他元素值均為0。(3)如果一個(gè)數(shù)組的全部元素值都為0,可以寫(xiě)成:intx[5]={0,0,0,0,0};或intx[5]={0};(4)對(duì)全部元素賦初值時(shí),可以不指定長(zhǎng)度。intx[5]={1,2,3,4,5};等價(jià)于intx[]={1,2,3,4,5};(5)利用scanf函數(shù)任意輸入方式進(jìn)行數(shù)組元素的初始化。inta[5],i;for(i=0;i<5;i++)scanf(“%d”,&a[i]);數(shù)組元素的引用引用形式:數(shù)組名[下標(biāo)]說(shuō)明:(1)下標(biāo)的取值范圍:0≤下標(biāo)≤元素個(gè)數(shù)-1(2)下標(biāo)可以是整型常量或表達(dá)式。例如:a[0]=a[5]+a[7]-a[2*3]
舉例
數(shù)組元素初始化和引用。從鍵盤(pán)輸入十個(gè)學(xué)生的成績(jī),并將其輸出。#include"stdio.h"main(){inti,a[10];printf("輸入數(shù)組元素:");printf("輸出數(shù)組元素:");}for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%5d",a[i]);
舉例
將從1開(kāi)始的10個(gè)奇數(shù)逆序輸出。#include"stdio.h"main(){inti,a[10]={1,3,5,7,9,11,13,15,17,19};printf("輸出數(shù)組元素:\n");}for(i=0;i<10;i++)a[i]=2*i+1;for(i=9;i>=0;i++)printf("%5d",a[i]);
問(wèn)題實(shí)現(xiàn)
輸入60名學(xué)生的C語(yǔ)言成績(jī),要求輸出高于平均分的成績(jī)以及不及格的人數(shù)。#include"stdio.h“#defineN60main(){floatcj[N],sum,pj;inti,count;sum=0;count=0;printf(“請(qǐng)輸入學(xué)生成績(jī):\n");printf(“不及格的人數(shù):%d\n”,count);}for(i=0;i<N;i++)scanf(“%f”,&cj[i]);for(i=0;i<N;i++){if(cj[i]>pj)printf("%.2f",cj[i]);if(cj[i]<60)count++;}for(i=0;i<N;i++)sum=sum+cj[i];pj=sum/N;
課后練一練
1、從鍵盤(pán)輸入10個(gè)整數(shù),找出其中的最大數(shù)并輸出。2、求學(xué)生的總評(píng)成績(jī)?,F(xiàn)有十個(gè)學(xué)生,從鍵盤(pán)上輸入他們的平時(shí)成績(jī)、期終成績(jī),輸出總評(píng)成績(jī)??傇u(píng)成績(jī)=平時(shí)成績(jī)*40%+期終成績(jī)*60%.預(yù)習(xí)下講字符數(shù)組主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理字符數(shù)組一維字符數(shù)組的定義1.一維字符數(shù)組的定義例如:charc[10];意思是定義一個(gè)字符數(shù)組c,它有10個(gè)元素。字符數(shù)組的初始化(1)定義時(shí)逐個(gè)字符給數(shù)組中各元素。charc[5]={‘c’,’h’,’i’,’n’,’a’};china\0china\0\0\0\0\0(2)可省略數(shù)組長(zhǎng)度。charc[]={‘c’,’h’,’i’,’n’,’a’};系統(tǒng)根據(jù)初值個(gè)數(shù)確定數(shù)組的長(zhǎng)度,數(shù)組c的長(zhǎng)度自動(dòng)為5。(3)字符數(shù)組可以用字符串來(lái)初始化。
charc[6]=”china”;charc[10]={“china”};/*花括號(hào)可以省略*/
引用
(1)“%s”格式輸入時(shí),遇空格或回車(chē)結(jié)束,但獲得的字符中不包含回車(chē)及空格本身,而是在字符串末尾添’\0’。方法一:用%c格式符逐個(gè)輸入輸出。例如:charc[6];for(i=0;i<6;i++){scanf(“%c”,&c[i]);printf(“%c”,c[i]);}方法二:用%s格式符進(jìn)行字符串輸入輸出。例如:charc[6];scanf(“%s”,c);printf(“%s”,c);
舉例
三個(gè)同學(xué)姓名的輸入輸出。程序如下:#include"stdio.h"main(){charname1[10],name2[10],name3[10];printf("請(qǐng)輸入姓名:\n");scanf("%s%s%s",name1,name2,name3);printf("輸出的姓名為:\n");printf("%s,%s,%s\n",name1,name2,name3);}
程序的運(yùn)行結(jié)果表明:%s輸入時(shí),空格或回車(chē)表示輸入的分隔符
字符串處理函數(shù)
(1)輸入字符串函數(shù)——gets()格式:gets(字符數(shù)組名)
例如:chars[12];gets(s);功能:從鍵盤(pán)輸入1個(gè)字符串。允許輸入空格,而是以回車(chē)作為輸入結(jié)束。將上例修改為gets()輸入:#include"stdio.h"main(){charname1[10],name2[10],name3[10];printf("請(qǐng)輸入姓名:\n");gets(name1);gets(name2);gets(name3);printf("輸出的姓名為:\n");printf("%s,%s,%s\n",name1,name2,name3);}
字符串處理函數(shù)
(2)輸出字符串函數(shù)——puts()格式:puts(字符數(shù)組名)
例如:chars[12]=“hangzhou”;puts(s);功能:輸出1個(gè)字符串在屏幕上。將上例修改為puts()輸出:#include"stdio.h"main(){charname1[10],name2[10],name3[10];printf("請(qǐng)輸入姓名:\n");gets(name1);gets(name2);gets(name3);printf("輸出的姓名為:\n");puts(name1);puts(name2);puts(name3);}上面兩個(gè)函數(shù)的使用仍然是需要“stdio.h”包含,接下介紹的字符串函數(shù),我們應(yīng)使用包含頭文件“string.h”
串連接函數(shù)(strcat)
(1)格式:strcat(字符數(shù)組名1,字符數(shù)組名2);(2)功能:把字符數(shù)組2中的字符串(連同尾部的’\0’)連接到字符數(shù)組1中字符串的后面,并刪去字符串1后的串結(jié)束標(biāo)志’\0’
。本函數(shù)返回值是字符數(shù)組1的首地址。(3)說(shuō)明:字符數(shù)組1必須足夠大。
舉例
#include"string.h"voidmain(){charst1[30]="Mynameis";charst2[10];printf("請(qǐng)輸入姓名:\n");gets(st2);
strcat(st1,st2);puts(st1);}寫(xiě)出下面程序的運(yùn)行情況。
程序運(yùn)行情況輸入Zhangyi↙時(shí),輸出結(jié)果是什么?MynameisZhangyi輸出結(jié)果:
串拷貝函數(shù)(strcpy)
(1)格式:strcpy(字符數(shù)組名1,字符數(shù)組名2);(2)功能:把字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。串結(jié)束標(biāo)志“\0”也一同拷貝。
舉例
寫(xiě)出下面程序的運(yùn)行情況。輸出結(jié)果:#include"string.h"voidmain(){charst1[15],st2[]="CLanguage";
strcpy(st1,st2);puts(st1);}CLanguage
說(shuō)明
(3)說(shuō)明:①字符數(shù)組1必須寫(xiě)成數(shù)組名形式,字符數(shù)組2可以是數(shù)組名形式也可以是字符串常量。
②不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接賦給一個(gè)字符數(shù)組。例如:charstr1[20],str2[]=“program”;
str1=“program”;str1=str2;
串比較函數(shù)(strcmp)
(1)格式:strcmp(字符數(shù)組名1,字符數(shù)組名2);(2)功能:按照ASCII碼順序(即字典順序)比較兩個(gè)數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。
字符串1=字符串2,返回值=0;字符串1>字符串2,返回值>0;字符串1<字符串2,返回值<0。(3)說(shuō)明:不能用比較運(yùn)算符直接比較兩個(gè)字符串。錯(cuò)誤的用法例如:charstr1[]=“progress”,str2[]=“program”;
if(str1!=str2)……
舉例
寫(xiě)出下面程序的運(yùn)行情況。輸出結(jié)果:#include"string.h"voidmain(){intk;charst1[15],st2[]="CLanguage";printf("請(qǐng)輸入一個(gè)字符串:\n");gets(st1);k=strcmp(st1,st2);if(k==0)printf("%s與%s相等。\n",st1,st2);if(k>0)printf("%s大于%s。\n",st1,st2);if(k<0)printf("%s小于%s。\n",st1,st2);}CLang小于CLanguage。
程序運(yùn)行情況輸入CLang↙時(shí),輸出結(jié)果是什么?
測(cè)串長(zhǎng)度函數(shù)(strlen)
(1)格式:strlen(字符數(shù)組名);(2)功能:測(cè)字符串的實(shí)際長(zhǎng)度(不含字符串結(jié)束標(biāo)志‘\0’),并作為函數(shù)返回值。
舉例
寫(xiě)出下面程序的運(yùn)行情況。輸出結(jié)果:#include"string.h"voidmain(){intk;charst[]="CLanguage";k=strlen(st);printf(“字符串(%s)的長(zhǎng)度為%d。\n",st,k);}字符串(CLanguage)的長(zhǎng)度為10。
單字符輸入輸出函數(shù)
單個(gè)字符的輸出函數(shù)
putchar(字符變量或字符常量);單個(gè)字符的輸入函數(shù)字符變量=getchar();例如:利用單個(gè)字符輸入輸出函數(shù)實(shí)現(xiàn)從鍵盤(pán)上輸入任意一個(gè)字符,并將該字符輸出在顯示器上。#include<stdio.h>main(){charch;puts("請(qǐng)輸入任意一個(gè)字符:");
ch=getchar();puts("顯示輸入的字符:");
putchar(ch);}
課后練一練
2、從鍵盤(pán)輸入任意一個(gè)字符串,統(tǒng)計(jì)該字符串中的字母、數(shù)字以及其他字符的個(gè)數(shù)。
1、從鍵盤(pán)輸入任意一個(gè)字符串,將該字符串中的大寫(xiě)字母都轉(zhuǎn)換成小寫(xiě),并將轉(zhuǎn)換后的字符串進(jìn)行輸出。
預(yù)習(xí)下講結(jié)構(gòu)體主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理結(jié)構(gòu)體問(wèn)題導(dǎo)入學(xué)號(hào)姓名高等數(shù)學(xué)C語(yǔ)言英語(yǔ)總分101張圣丹758677232102徐麗萍928890270103周京京798868225104申洪偉839382258105胡瀚文768778241106張騰偉688088226107於斌649878222108孫盛兵768460220109任高翔538777197110方轆恒888082238問(wèn)題解決分析:一個(gè)學(xué)生的信息包含了學(xué)號(hào)、姓名、3門(mén)課成績(jī)、總分。分別定義簡(jiǎn)單變量難以反映它們之間的聯(lián)系將它們組成一個(gè)組合項(xiàng),其中可以包含若干個(gè)類型不同的數(shù)據(jù)項(xiàng)結(jié)構(gòu)體類型:將不同類型的數(shù)據(jù)進(jìn)行組合的一種用戶自定義的類型。關(guān)鍵技術(shù):結(jié)構(gòu)體(記錄)結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型定義的一般形式為:
struct
結(jié)構(gòu)體名{
成員列表};結(jié)構(gòu)體類型的說(shuō)明(1)struct是聲名結(jié)構(gòu)體類型時(shí)必須使用的關(guān)鍵字,不能省略。(2)struct結(jié)構(gòu)體名是一個(gè)類型名,它的功能和基本數(shù)據(jù)類型有著同樣的地位和作用,都可以用來(lái)定義變量的類型,只不過(guò)這種類型是要用戶自己制定而已。(3)成員表由若干個(gè)成員組成,每個(gè)成員都是該結(jié)構(gòu)的一個(gè)組成部分。對(duì)每個(gè)成員也必須作類型說(shuō)明,其形式為:類型說(shuō)明符
成員名;(4)大括號(hào)和外面的分號(hào)都不能省略。問(wèn)題實(shí)現(xiàn)structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
};關(guān)鍵字
不能省略結(jié)構(gòu)體名,和標(biāo)準(zhǔn)類型
名一樣可以定義變量成員列表,每個(gè)成員又稱分量或域.
成員名定名規(guī)則與變量同作為語(yǔ)句,必須以分號(hào)結(jié)束案例結(jié)構(gòu)體類型定義的實(shí)現(xiàn):結(jié)構(gòu)體變量的定義(1)先聲明結(jié)構(gòu)體類型再定義結(jié)構(gòu)體變量。struct結(jié)構(gòu)體名{成員表列;};[struct]結(jié)構(gòu)體名變量名表列;structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
};structstudentx,y;structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
};
studentx,y;結(jié)構(gòu)體變量的定義(2)在聲明類型的同時(shí)定義變量
struct[結(jié)構(gòu)體名]{成員表列;}變量名表列;structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}x,y;struct
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}x,y;
說(shuō)明
1、結(jié)構(gòu)體變量:能夠賦值、存取或運(yùn)算,編譯時(shí),分配空間
結(jié)構(gòu)體類型:不能賦值、存取或運(yùn)算,編譯時(shí),不分配空間2、成員可以是一個(gè)結(jié)構(gòu)體變量。structstudent
{intnum;
charname[20];
charsex;
floatscore;structdatebirthday;}student1;structdate
{intmonth;
intday;
intyear;};
結(jié)構(gòu)體變量的使用
一般形式:結(jié)構(gòu)體變量名.成員名“.”是成員(又叫分量)運(yùn)算符。它的優(yōu)先級(jí)最高structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}x,y;x.math=60;x.c_language=85;x.english=77;x.sum=x.math+x.c_language+x.english;
結(jié)構(gòu)體變量的初始化
1、直接用賦值運(yùn)算初始化structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}x,y;x.math=60;x.c_language=85;x.english=77;2、通過(guò)scanf函數(shù)初始化scanf(“%f%f%f”,&x.math,&x.c_language,&x.english);
問(wèn)題實(shí)現(xiàn)
#include"stdio.h”main(){structstudent{intnum;
charname[20];
floatmath,c_language,english,sum;
}x;printf(“請(qǐng)輸入x學(xué)生學(xué)號(hào)、姓名、三門(mén)成績(jī):\n");
printf(“學(xué)號(hào)\t姓名\t數(shù)學(xué)\tC語(yǔ)言\t英語(yǔ)\t總分\n”);printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",x.num,x.name,x.math,x.c_language,x.english,x.sum);}scanf(“%d%s%f%f%f”,&x.num,x.name,&x.math,&x.c_language,&x.english);x.sum=x.math+x.c_language+x.english;
課后練一練
1、仿照一位學(xué)生成績(jī)信息的實(shí)現(xiàn),自己編寫(xiě)一個(gè)學(xué)生通訊錄信息(學(xué)號(hào)、姓名、性別、QQ號(hào)、手機(jī)號(hào)),通過(guò)鍵盤(pán)輸入信息,并且按照表格的形式輸出。預(yù)習(xí)下講結(jié)構(gòu)體數(shù)組主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理結(jié)構(gòu)體數(shù)組問(wèn)題導(dǎo)入學(xué)號(hào)姓名高等數(shù)學(xué)C語(yǔ)言英語(yǔ)總分101張圣丹758677232102徐麗萍928890270103周京京798868225104申洪偉839382258105胡瀚文768778241106張騰偉688088226107於斌649878222108孫盛兵768460220109任高翔538777197110方轆恒888082238結(jié)構(gòu)體實(shí)現(xiàn)了一條信息的輸入和輸出,那么怎樣實(shí)現(xiàn)一個(gè)班級(jí)成績(jī)表的輸入和輸出呢?問(wèn)題解決結(jié)構(gòu)體數(shù)組:數(shù)組元素都是結(jié)構(gòu)體類型的數(shù)組。關(guān)鍵技術(shù):結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組的定義(1)先聲明結(jié)構(gòu)體類型再定義結(jié)構(gòu)體數(shù)組。struct結(jié)構(gòu)體名{成員表列;};[struct]結(jié)構(gòu)體名數(shù)組名[數(shù)組大小];structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
};structstudentx[5];structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
};
studentx[5];結(jié)構(gòu)體數(shù)組的定義(2)在聲明類型的同時(shí)定義結(jié)構(gòu)體數(shù)組
struct[結(jié)構(gòu)體名]{成員表列;}數(shù)組名[數(shù)組大小];structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}x[5];struct
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}x[5];
結(jié)構(gòu)體數(shù)組的初始化
1、直接用賦值運(yùn)算初始化structstudent
{intnum;
charname[20];
floatmath;
floatc_language;
floatenglish;
floatsum;
}
x[3]={{101,”張力”,60,70,80},{102,”王強(qiáng)”,66,78,80},{103,”李斯”,63,70,90}};2、通過(guò)循環(huán)+scanf函數(shù)初始化for(i=0;i<3;i++)scanf(“%d%s%f%f%f”,&x[i].num,x[i].name,&x[i].math,&x[i].c_language,&x[i].english);
問(wèn)題實(shí)現(xiàn)
#include"stdio.h”#defineN3main(){structstudent{intnum;
charname[20];
floatmath,c_language,english,sum;
}x[N];inti;printf(“請(qǐng)輸入3個(gè)學(xué)生學(xué)號(hào)、姓名、三門(mén)成績(jī):\n");
}for(i=0;i<N;i++){scanf(“%d%s%f%f%f”,&x[i].num,x[i].name,&x[i].math,&x[i].c_language,&x[i].english);x[i].sum=x[i].math+x[i].c_language+x[i].english;}printf(“學(xué)號(hào)\t姓名\t數(shù)學(xué)\tC語(yǔ)言\t英語(yǔ)\t總分\n”);for(i=0;i<N;i++)printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",x[i].num,x[i].name,x[i].math,x[i].c_language,x[i].english,x[i].sum);
課后練一練
1、仿照3位學(xué)生成績(jī)信息的實(shí)現(xiàn),自己編寫(xiě)5個(gè)學(xué)生通訊錄信息(學(xué)號(hào)、姓名、性別、QQ號(hào)、手機(jī)號(hào)),通過(guò)鍵盤(pán)輸入信息,并且按照表格的形式輸出。預(yù)習(xí)下講二維數(shù)組主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理我們生活中表格數(shù)據(jù)是很常見(jiàn)的,比如要描述5個(gè)學(xué)生3門(mén)課成績(jī)大家最熟悉的Excel表就很容易表達(dá)出來(lái),那么我們?nèi)绾卧贑語(yǔ)言中來(lái)表達(dá)這類數(shù)據(jù)呢?二維數(shù)組知識(shí)引入二維數(shù)組的定義1.二維數(shù)組定義的一般形式類型說(shuō)明符數(shù)組名[行大小常量表達(dá)式][列大小常量表達(dá)式]例如:inta[3][4]定義了一個(gè)3×4(3行4列)的整型數(shù)組a二維數(shù)組初始化二維數(shù)組初始化的方法如下。(1)分行給二維數(shù)組賦初值(推薦使用)inta[3][4]={{1,2,3,4},{4,5,6,7},{6,7,8,9}};(2)將所有數(shù)據(jù)寫(xiě)在一個(gè)花括弧內(nèi),按數(shù)值排列的順序?qū)Ω髟刭x初值。inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}
(3)可以對(duì)部分元素賦初值。inta[3][4]={{1,2},{4},{6,7,8}};a數(shù)組分布如圖所示。(4)如果對(duì)全部數(shù)組元素賦值,則第一維的長(zhǎng)度可以不指定,但必須指定第二維的長(zhǎng)度,全部數(shù)據(jù)寫(xiě)在一個(gè)大括號(hào)內(nèi)。如:inta[][3]={1,2,3,4,5,6,7,8,9,10,11,12};第一維長(zhǎng)度4省略。120040006780二維數(shù)組的引用二維數(shù)組元素的表示形式:數(shù)組名[下標(biāo)][下標(biāo)]例:inta[3][4],表示行下標(biāo)值最小從0開(kāi)始,最大為3-1=2;列下標(biāo)值最小為0,最大為4-1=3,即:a[0][0]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]2.二維數(shù)組的理解二維數(shù)組是一種特殊的一維數(shù)組
應(yīng)用
#include"stdio.h"#defineN5main(){inti,j;intscore[N][3];printf("請(qǐng)輸入五個(gè)同學(xué)三門(mén)課的成績(jī):\n");for(i=0;i<N;i++)for(j=0;j<3;j++)scanf("%d",&score[i][j]);printf("輸出五個(gè)同學(xué)三門(mén)課的成績(jī):\n");for(i=0;i<N;i++){printf("第%d位同學(xué):",i+1);for(j=0;j<3;j++)printf("%5d",score[i][j]);printf("\n");}}輸入五個(gè)同學(xué)三門(mén)課的成績(jī)并輸出真題解析1#include<stdio.h>
voidmain()
{intj,k,sum=0;inta[3][2];printf("Enteranarray:\n");for(j=0;j<3;j++)for(k=0;k<2;k++)scanf("%d",(1));for(j=0;j<3;j++){(2)for(k=0;k<2;k++)sum=
(3);printf("sumofrow%dis%d\n",
(4),sum);}}
輸入一個(gè)3行2列的矩陣,分別輸出各行元素之和。運(yùn)行示例:Enteranarray:
63-81312
sumofrow0is9
sumofrow1is-7
sumofrow2is15(1)A、a[j][k]B、a[k][j]C、&a[j][k]D、&a[k][j]
(2)A、;B、sum=-1;C、sum=1;D、sum=0;
(3)A、sum+a[j][k]B、sum+a[j][j]C、sum+a[k][k]D、0
(4)A、kB、jC、0D、1
CDAB真題解析2#include<stdio.h>main(){intcol,row,i,j;inta[2][3];printf("Enterarray(2*3):");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);(1);row=0;輸入一個(gè)2*3的二維數(shù)組,找出最大值以及它的行下標(biāo)和列下標(biāo),并輸出該結(jié)果。
運(yùn)行示例:
Enterarray(2*3):3210-96-1max=a[0][2]=103210-96-1(1)A、col=0;B、col=1;C、col=0D、col=1
(2)A、a[i][j]>a[row][col]B、a[i][j]<a[row][col]C、a[i][j]==a[row][col]D、a[i][j]=a[row][col]
(3)A、row=j;B、row=i;C、row=j+1;D、row=i+1;
(4)A、a[i][j]B、a[col][row]C、a[row][col]D、a[j][i]CABCfor(i=0;i<2;i++)for(j=0;j<3;j++)if((2)){(3)col=j;}printf("max=a[%d][%d]=%d\n",row,col,(4));for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}}
課后練一練
1、將數(shù)組a的每一行均除以該行上的主對(duì)角元素(第一行同除以a[0][0],第二行同除以a[1][1]……),然后輸出a數(shù)組。預(yù)習(xí)下講冒泡排序主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理冒泡排序
冒泡排序思想
將數(shù)據(jù)按由小到大(升序)進(jìn)行冒泡排序的具體思路:(1)通過(guò)相鄰兩個(gè)數(shù)之間的比較和交換;(2)使排序碼(數(shù)值)較小的數(shù)逐漸從底部移向頂部,
排序碼較大的數(shù)逐漸從頂部移向底部;(3)這個(gè)過(guò)程就像水底的氣泡一樣逐漸向上冒,故而得名。
冒泡排序演示動(dòng)畫(huà)
輸入6個(gè)數(shù),(34,2,56,5,13,23)用“冒泡法”對(duì)6個(gè)數(shù)排序(由小到大)。3425651323趟數(shù)-i每趟比較次數(shù)—j交換i=1不交換交換交換交換第1趟排完后:23451323565
冒泡排序演示動(dòng)畫(huà)
輸入6個(gè)數(shù),(34,2,56,5,13,23)用“冒泡法”對(duì)6個(gè)數(shù)排序(由小到大)。2513233456趟數(shù)-i每趟比較次數(shù)—j不交換i=2交換交換交換第2趟排完后:23451323564
冒泡排序演示動(dòng)畫(huà)
輸入6個(gè)數(shù),(34,2,56,5,13,23)用“冒泡法”對(duì)6個(gè)數(shù)排序(由小到大)。2513233456趟數(shù)-i每趟比較次數(shù)—j不交換i=3不交換不交換第3趟排完后:32513233456
冒泡演示結(jié)論
(2)對(duì)于n個(gè)數(shù)的排序,需進(jìn)行n-1趟冒泡,第i趟比較次數(shù)需進(jìn)行n-j次兩兩比較。(1)對(duì)于6個(gè)數(shù)的排序,需進(jìn)行5趟冒泡,第i趟比較次數(shù)需進(jìn)行6-i次兩兩比較。
冒泡排序?qū)崿F(xiàn)
for(i=1;i<=5;i++)
//i是控制冒泡的趟數(shù)
for(j=0;j<6-i;j++)
//j是每趟比較次數(shù)的控制if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}//當(dāng)遇到前者a[j]比后者a[j+1]大時(shí),進(jìn)行交換,否則不交換#include<stdio.h>main(){inta[6],i,j,t;printf("請(qǐng)輸入任意的6個(gè)整數(shù):\n");for(i=0;i<6;i++)scanf("%d",&a[i]);printf(“排序后輸出序列:\n”);for(i=0;i<6;i++)printf("%3d",a[i]);}輸入任意6個(gè)整數(shù)用“冒泡法”對(duì)6個(gè)數(shù)排序(由小到大)。
真題練一練
AABC
課后練一練
1、從鍵盤(pán)輸入任意10個(gè)同學(xué)的大學(xué)英語(yǔ)成績(jī),用“冒泡法”對(duì)10個(gè)分?jǐn)?shù)排序(由大到?。┖筝敵鱿鄳?yīng)的名次。預(yù)習(xí)下講選擇排序算法主講:廖智蓉項(xiàng)目5簡(jiǎn)易的通訊錄管理選擇排序數(shù)組名作為函數(shù)參數(shù)
選擇排序
將數(shù)據(jù)按由小到大進(jìn)行簡(jiǎn)單選擇排序的具體思路:(1)首先從(K1,K2,…,Kn)中選擇最小值,假如它是Kz,則將Kz與K1對(duì)換;(2)然后從(K2,K3,…,Kn)中選擇最小值Kz,再將Kz與K2對(duì)換;(3)如此進(jìn)行選擇和調(diào)換n-2趟。(4)第(n-1)趟,從Kn-1和Kn中選擇較小的值Kz,將Kz與Kn-1對(duì)換,最后剩下的就是該序列中的最大值,一個(gè)由小到大的有序序列就這樣形成了。
選擇排序
輸入6個(gè)數(shù),用“選擇法”對(duì)6個(gè)數(shù)排序(由小到大)。j=i+161955323趟數(shù)i=0kijjjkjjj掃描完后,且k!=i,則a[k]與a[i]進(jìn)行交換參數(shù)說(shuō)明:i是控制趟數(shù)的同時(shí)也是每趟的第一個(gè)數(shù)下標(biāo)。k是跟蹤每趟最小值下標(biāo)j是掃描每趟待排序下標(biāo)去找最小值,直到掃描到最后一個(gè)數(shù)16955323第0趟排完后:
選擇排序
輸入6個(gè)數(shù),用“選擇法”對(duì)6個(gè)數(shù)排序(由小到大)。j=i+1趟數(shù)i=1kijjkjjj掃描完后,且k!=i,則a[k]與a[i]進(jìn)行交換1695532313955623第一趟排完后:136
95523第二趟排完后:13655923第三趟排完后:136
9
2355第四趟排完后:
選擇排序的實(shí)現(xiàn)
for(i=0;i<5;i++)
//做第i趟排序
{k=i;for(j=i+1;j<6;j++)
//選最小的記錄if(a[k]>a[j])k=j;//記下目前找到的最小值所在的位置//在內(nèi)層循環(huán)結(jié)束,也就是找到本輪循環(huán)的最小的數(shù)以后,再進(jìn)行交換
if(k!=i){t=a[i];a[i]=a[k];a[k]=t}}#include<stdio.h>main(){inta[6],i,j,t,k;for(i=0;i<6;i++)scanf("%d",&a[i]);for(i=0;i<6;i++)printf("%3d",a[i]);}
數(shù)組名作為函數(shù)參數(shù)
使用數(shù)組名作為函數(shù)參數(shù)時(shí),實(shí)參與形參都應(yīng)使用數(shù)組名(或指針變量,見(jiàn)項(xiàng)目六)。當(dāng)數(shù)組名作為函數(shù)實(shí)參時(shí),不是把數(shù)組的值傳遞給形參,而是把實(shí)參數(shù)組的起始地址傳遞給形參數(shù)組,實(shí)參和形參的地址是相同的,即當(dāng)形參的值發(fā)生變化時(shí),實(shí)參的值也發(fā)生了變化。
舉例
輸入十個(gè)同學(xué)的成績(jī),要求用函數(shù)進(jìn)行冒泡排序(降序)main(){inta[10],i;printf("請(qǐng)輸入十個(gè)同學(xué)的成績(jī)\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort(a);printf("排序后的成績(jī)?yōu)?\n");for(i=0;i<10;i++)printf("%3d",a[i]);printf("\n");}#include"stdio.h“#d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45164-2024熔模鑄件缺陷分類及命名
- 二零二五年度百貨商場(chǎng)停車(chē)場(chǎng)管理合同樣本3篇
- 二零二五版員工股權(quán)激勵(lì)與管理合同模板3篇
- 二零二五年防盜門(mén)研發(fā)、生產(chǎn)、銷售一體化合作協(xié)議3篇
- 2024版家具經(jīng)銷商合作協(xié)議范本
- 二零二五年度音樂(lè)器材行業(yè)標(biāo)準(zhǔn)制定與執(zhí)行合同3篇
- 2024版云計(jì)算服務(wù)租賃合同
- 二零二五版?zhèn)€人子女教育還借款合同3篇
- 2024版前期物業(yè)服務(wù)管理協(xié)議
- 二零二五版體育健身器材研發(fā)與銷售合同3篇
- 內(nèi)鏡下粘膜剝離術(shù)(ESD)護(hù)理要點(diǎn)及健康教育課件
- 2024年民族宗教理論政策知識(shí)競(jìng)賽考試題庫(kù)及答案
- 項(xiàng)目七電子商務(wù)消費(fèi)者權(quán)益保護(hù)的法律法規(guī)
- 品質(zhì)經(jīng)理工作總結(jié)
- 供電搶修述職報(bào)告
- 集成電路設(shè)計(jì)工藝節(jié)點(diǎn)演進(jìn)趨勢(shì)
- 新型電力系統(tǒng)簡(jiǎn)介演示
- 特種設(shè)備行業(yè)團(tuán)隊(duì)建設(shè)工作方案
- 眼內(nèi)炎患者護(hù)理查房課件
- 肯德基經(jīng)營(yíng)策略分析報(bào)告總結(jié)
- 買(mǎi)賣(mài)合同簽訂和履行風(fēng)險(xiǎn)控制
評(píng)論
0/150
提交評(píng)論