第四章 数 组汇总.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ⒊ 查 找 查找是在一组数中,寻找一个特定的数,并显示结果。 ⑴顺序查找 顺序查找算法:构造循环,使循环的变量遍历数组每个元素的 下标。循环的过程中让特定的数和每个元素比较,相等则表示找到 该数,并输出其下标(位置)。 程序设计中标志的设置和应用: 在程序设计中,经常要记录一些状态,作为判断的条件。因此 需要在程序中设置一些标志,通常标志是整型变量。 如查找问题,可以先设置一个整型变量iFlag=0表示没有找到, 在查找的过程中一旦找到后,将iFlag赋值为1,结束查找后,可以 由iFlag值所代表的逻辑状态,确定是否已找到特定的数。 标志设置框图 int iFlag; iFlag=0; 是否找到? iFlag=1; yes no 顺序查找程序 #include stdio.h void main(void) { int i,iSel,iFlag,a[10]={4,3,5,1,10,12,2,6,7,9}; iFlag=0; scanf(“%d”,iSel); for(i=0;i10;i++) if(iSel==a[i]) { iFlag=1; printf(“The position is %d\n”,i); } if (iFlag ==1) printf(“Found! %d”,); else printf(“Not found!); } 设置标志为没找到。 循环遍历所有元素 比较设置标志输出位置。 chp4ex7 ⑵折半查找——适用于在有序数组中查找 在一个有序的一维数组中查找某一个数。已知某数组按升序排 列,给定一个数,找出该数在数组中的位置。 可以通过将区间折半,快速缩小查找区间,提高效率! 折半查找算法演示 折半查找程序 #include stdio.h void main(void) { int iTop,iBot,iMid,iSel,iFlag,a[10]={1,2,3,5,6,8,9,10,11,12}; iFlag=0; iTop=0; iBot=9; scanf(“%d”,iSel); do{ iMid=(iTop+iBot)/2; if(iSel==a[iMid]) {iFlag=1; printf(“iS has be found : a[%d]”,iMid);} else if(iSela[iMid]) iBot=iMid-1; else iTop=iMid+1; }while(iTop=iBotiFlag==0); if(iFlag==0) printf(“Not found!\n”); } 初始化查找标志及顶、底。 查找循环 折半。 找到。 没找到,调整iTop或iBot chp4ex8 专题二、字符数组 ⑴统计字符串中的各元音字母的个数 #include stdio.h void main(void) { char str[80],ch[6]={‘a’,’e’,’i’,’o’,’u’,’\0’}; int i,iCount[5]={0,0,0,0,0}; gets(str); for(i=0;str[i]!=‘\0’;i++) { switch(str[i]) { case ‘a’: case ‘A’: iCount[0]++;break; case ‘e’: case ‘E’: iCount[1]++;break; case ‘i’ : case ‘ I’: iCount[2]++;break; case ‘o’
显示全部