重庆邮电大学计算机科学与技术学院.ppt
重庆邮电大学计算机科学与技术学院
冯潇
;数组的定义、引用、初始化和输出
和数组有关的经典算法
冒泡法、选择法、折半查找法、求集合中最大或最小的元素
向函数传递一维数组;重点、难点;假设集合中有班上30个同学的高数成绩,找出高数成绩的最高分,并将最高分打印到屏幕上
算法分析:
定义变量存放全班30个同学的高数成绩,定义变量MaxScore,初值为0
……
MaxScore=元素1;/*假设集合中第一个元素值最大*/
for(i=0;i30;i++)
{
if(元素iMaxScore)MaxScore=元素i
};保存大量同类型的相关数据
如矩阵运算,表格数据等;数组的定义;数组元素的引用;全部赋初值
charch[4]={‘h’,’a’,’l’,’\0’};
intarr[]={3,7,5,8};
局部赋初值
floatf[10]={1.7,2.1};
二维数组的初始化
inta[2][3]={1,2,3,4,5,6};
inta[][3]={{1,2,3},{4,5,6}};
inta[][3]={{1,2},{4}};;数组的物理存储结构;只能逐个对数组元素进行操作〔字符数组例外〕;用法一:求表达式计算结果类型所占用的字节数
sizeof(表达式)
inta=5;
sizeof(a+5);
用法二:求某种类型所占用的字节数
sizeof(数据类型名)
x=sizeof(double)+2;
printf(“%d”,x);
;#includestdio.h
#defineARR_SIZE30
intmain()
{
intscore[ARR_SIZE]={0},MaxScore=0,i;
printf(Pleaseenterscores:);
for(i=0;iARR_SIZE;i++)
{
scanf(%d,score[i]);
};MaxScore=score[0];/*假设第一个元素是最大值*/
for(i=0;iARR_SIZE;i++)
{
if(MaxScorescore[i])
{
MaxScore=score[i];
}
}
printf(MaxScore=%d\n,MaxScore);
return0;
}
;打印出成绩为100分同学的学号;折半查找;……
intmain()
{
intscore[ARR_SIZE]={0},i;
intlow,high,mid;
printf(Pleaseenterscores:);
for(i=0;iARR_SIZE;i++)
{
scanf(%d,score[i]);
}
printf(Pleaseenterthesearchingnumber:);
scanf(%d,num);;low=0;
high=ARR_SIZE-1;
while(low=high)
{
mid=(low+high)/2;
if(numscore[mid])
high=mid-1;
elseif(numscore[mid])
{low=mid+1;}
else
{printf(No%d,mid);}
}
return0;
};按从高到低的分数对全班同学的成绩进行排序
算法:
冒泡法
选择法;核心思想
将相邻元素进行比较,较小〔较大〕的放在前面
;……
intmain()
{
intscore[ARR_SIZE]={0},i,j,temp;
……
for(i=0;iARR_SIZE-1;i++)
{
for(j=0;jARR_SIZE-i;j++)
{
if(score[j]score[j+1])
{temp=score[j];score[j]=score[j+1];score[j+1]=temp;}
}
}
……
return0;
};