用javascript int最大值写函数求数组最大值

c程序语言,数 组,求编程实现1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:(1)数组为整型数组(10个元素)。(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。 (4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?
2.编程实现:在给定的字符串中查找满足条件的第一个字符。要求:(1)字符串采用初始化的方式处理。(2)通过scanf函数读入一个任意字符。(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n
n),形成n
n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。要求: (1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。(4)输入一个n
n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。 (6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。 (7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。要求: (1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。 (2)用scanf函数输入一个要找的数。 (3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。 (4)任意输入一些数据,检查程序的正确性。 (5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。最后通过测试几组差别较大的数据检查程序的正确性。 (6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。5.编程实现:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分要求: (1)数组类型为实型,输入成绩由scanf函数实现。(2)输出已输入的原始成绩数据(3×5)。 (3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。(4)j计算单科平均成绩后输出。 6.编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr()用于统计一个字符串的长度。编写函数cmpStr()用于判断两个字符串的大小。 要求: (1)不允许使用字符处理库函数。(2)在主函数以初始化的方式输入两个字符串str1、str2。调用函数lenStr()计算字符串的长度。 (3)调用函数cmpStr()判断两个字符串的大小,如果str1大于等于str2,调用函数catStr()进行两个字符串的连接,将str1连接在str2后,否则,将str2连接在str1后,调用函数lenStr()统计连接后的字符串长度。 (4)在主函数中输出两个原始字符串和各自的长度以及处理后字符串及其长度。
无法使用QT78
第一题:考虑到第四小问 程序用宏定义#include#define N 10 //定义数组元素个数void fun(int a[ ]){ int max=0,min=0; for(i=0;i<N;i++) {
if(a[i]>a[max])
if(a[i]<a[min])
} } printf("数组中第%d个数%d是最大值.\n",max+1,a[max]); printf("数组中第%d个数%d是最小值.\n",min+1,a[min]);}void main(){ int a[N]; printf("输入数组元素:"); for(i=0;i<N;i++) {
scanf("%d",&a[i]); } fun(a);}第二题#includevoid main(){ char str[]="abcdefg"; printf("输入字符:"); scanf("%d",&ch); len=strlen(str); for(i=0;i<i++) {
if(str[i]==ch)
printf("字符%c是第%d个字符\n",ch,i+1);
} } if(i==len) {
printf("no found!\n") }}改天继续补上
为您推荐:
扫描下载二维码求助 写一个PHP函数,它查找并且返回某个数组的最大值。并附上测试结果
[问题点数:20分,结帖人falchang]
求助 写一个PHP函数,它查找并且返回某个数组的最大值。并附上测试结果
[问题点数:20分,结帖人falchang]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年5月 总版技术专家分月排行榜第一
2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2010年6月 PHP大版内专家分月排行榜第二
2010年8月 PHP大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。& & & & 复制代码代码如下:& & & & & & 数组的最大值的获取& &
上一篇:下一篇:
相关经验教程
论文写作技巧三种算法求解一个数组的子数组最大和 - Fangzhen - 博客园
随笔 - 367, 文章 - 174, 评论 - 109, 引用 - 0
题目:要求一个数组连续下标和的最大值,数组的元素可正、可负、可为零,例如-2,5,3,-6,4,-8,6将返回8。这题是很经典的一道面试题,也有各种解法,从算法分析上,时间复杂度也有很大差别,下面我就给出三种不同的解法。方法一:暴力枚举法此种方法最简单,我想应该也是每个人拿到题目想到的第一种解法了,学过一点编程的人都应该能编出此类程序。记sum[i..j]为数组中第i个元素到第j个元素的和(其中0&=i&j&=n-1),通过遍历所有的组合之和,就能找到最大的一个和了。伪代码如下:int maxSubArray(int *A,int n) {&&& int maxium = -INF; //保存最大子数组之和&&& for i=0 to n-1 do &&&&&&& sum = 0; //sum记录第i到j的元素之和&&&&&&& for j=i to n-1 do&&&&&&&&&&& sum += A[j];&&&&&&& if sum&maxium do //更新最大值 &&&&&&&&&&& maxium = &&&}此种方法的时间复杂度为O(n2),显然不是一种很好的办法,也不是公司面试希望你写出这样的程序的。方法二:分支界定这里再介绍一种更高效的算法,时间复杂度为O(nlogn)。这是个分治的思想,解决复杂问题我们经常使用的一种思维方法&#8212;&#8212;分而治之。而对于此题,我们把数组A[1..n]分成两个相等大小的块:A[1..n/2]和A[n/2+1..n],最大的子数组只可能出现在三种情况:&&& A[1..n]的最大子数组和A[1..n/2]最大子数组相同;&&& A[1..n]的最大子数组和A[n/2+1..n]最大子数组相同;&&& A[1..n]的最大子数组跨过A[1..n/2]和A[n/2+1..n]前两种情况的求法和整体的求法是一样的,因此递归求得。第三种,我们可以采取的方法也比较简单,沿着第n/2向左搜索,直到左边界,找到最大的和maxleft,以及沿着第n/2+1向右搜索找到最大和maxright,那么总的最大和就是maxleft+maxright。而数组A的最大子数组和就是这三种情况中最大的一个。伪代码如下:int maxSubArray(int *A,int l,int r) {&&& if l&r do &&&&&&& mid = (l+r)/2;&&&&&&& ml = maxSubArray(A,l,mid); //分治 &&&&&&& mr = maxSubArray(A,mid+1,r);&&&&&&& for i=mid downto l do &&&&&&&&&&& &&&&&&& for i=mid+1 to r do &&&&&&&&&&& &&&&&&& return max(ml,mr,maxleft+maxright); //归并 &&&&&&& then //递归出口 &&&&&&&&&&& return A[l]; }方法三:动态规划这算是一个经典的动态规划的题目了,如果不知道动态规划可以先不去理解这个名词。用通俗点的语言描述这个算法就是:令cursum(i)表示数组下标以i为起点的最大连续下标最大的和,而maxsum(i)表示前i个元素的最大子数组之和。那么我们就可以推出下一个maxsum(i+1)应该为cursum(i+1)和maxsum(i)中选取一个最大值。递推式为:cursum(i) = max{A[i],cursum(i-1)+A[i]};maxsum(i) = max{maxsum(i-1),cursum(i+1)};伪代码为:int maxSubArray(int *A,int n) { &&& cursum = A[0]; &&& maxsum = A[0];&&& for i=1 to n-1 do&&&&&&& /*当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。*/ &&&&&&& if cursum&0 do &&&&&&&&&&& cursum = 0;&&&&&&& cursum += A[i]; &&&&&&& if cursum&maxsum do&&&&&&&&&&& maxsum = &&& }这种算法时间复杂度只是O(n),效果非常好!具体实现代码如下:#include&&iostream&#include&&iterator&#include&&algorithm&#include&&cstdlib&#include&&ctime&using&namespace&const&int&INF=0x7fffffff;int&max_sub_array(int&arr[],int&n,int&&left,int&&right){&&&&int&maxium=-INF;&&&&int&&&&&for(int&i=0;i&n;i++){&&&&&&&&sum=0;&&&&&&&&for(int&j=i;j&n;j++){&&&&&&&&&&&&sum+=arr[j];&&&&&&&&&&&&if(sum&maxium){&&&&&&&&&&&&&&&&maxium=&&&&&&&&&&&&&&&&left=i;&&&&&&&&&&&&&&&&right=j;&&&&&&&&&&&&}&&&&&&&&}&&&&}&&&&return&}int&max_sub_array(int&arr[],int&l,int&r,int&&left,int&&right){&&&&if(l&r){&&&&&&&&int&mid=(l+r)/2;&&&&&&&&int&ll,&&&&&&&&int&suml=max_sub_array(arr,l,mid,ll,lr);&&&&&&&&int&rl,&&&&&&&&int&sumr=max_sub_array(arr,mid+1,r,rl,rr);&&&&&&&&int&sum_both=0;&&&&&&&&int&max_left=-INF;&&&&&&&&int&ml,&&&&&&&&for(int&i=i&=l;i--)&&&&&&&&{&&&&&&&&&&&&sum_both+=arr[i];&&&&&&&&&&&&if(sum_both&max_left){&&&&&&&&&&&&&&&&max_left=sum_&&&&&&&&&&&&&&&&ml=i;&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&int&max_right=-INF;&&&&&&&&sum_both=0;&&&&&&&&for(int&i=mid+1;i&=r;i++)&&&&&&&&{&&&&&&&&&&&&sum_both+=arr[i];&&&&&&&&&&&&if(sum_both&max_right){&&&&&&&&&&&&&&&&max_right=sum_&&&&&&&&&&&&&&&&mr=i;&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&sum_both=max_left+max_&&&&&&&&if(suml&sumr)&{&&&&&&&&&&&&if(sumr&sum_both)&{&&&&&&&&&&&&&&&&left=&&&&&&&&&&&&&&&&right=&&&&&&&&&&&&&&&&return&sum_&&&&&&&&&&&&}&&&&&&&&&&&&else&{&&&&&&&&&&&&&&&&left=&&&&&&&&&&&&&&&&right=&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&else{&&&&&&&&&&&&if(suml&sum_both)&{&&&&&&&&&&&&&&&&left=&&&&&&&&&&&&&&&&right=&&&&&&&&&&&&&&&&return&sum_&&&&&&&&&&&&}&&&&&&&&&&&&else&{&&&&&&&&&&&&&&&&left=&&&&&&&&&&&&&&&&right=&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&}&&&&&&&&}&&&&}&&&&else&{&&&&&&&&left=l;&&&&&&&&right=r;&&&&&&&&return&arr[l];&&&&}}int&max_sub_array_(int&arr[],int&n,int&&left,int&right){&&&&int&cursum=arr[0];&&&&int&maxsum=arr[0];&&&&int&pos=0;&&&&pos=0;&&&&for(int&i=1;i&n;i++)&{//&&&&&&&&if(cursum&0)//&&&&&&&&&&&&cursum=0;&&&&&&&&cursum+=arr[i];&&&&&&&&if(cursum&arr[i])&&&&&&&&{&&&&&&&&&&&&pos=i;&&&&&&&&&&&&cursum=arr[i];&&&&&&&&}&&&&&&&&if(cursum&maxsum)&&&&&&&&{&&&&&&&&&&&&maxsum=&&&&&&&&&&&&left=&&&&&&&&&&&&right=i;&&&&&&&&}&&&&}&&&&return&}void&test1(){&&&&int&arr[]={-2,5,3,-6,4,-8,6};&&&&int&len=sizeof(arr)/sizeof(arr[0]);&&&&int&left,&&&&int&&&&&cout&&"arr:";&&&&copy(arr,arr+len,ostream_iterator&int&(cout,&"&"));&&&&cout&&&&&&sum=max_sub_array(arr,len,left,right);&&&&cout&&"method1:("&&left&&","&&right&&")&&";&&&&cout&&"sum="&&sum&&&&&&sum=max_sub_array(arr,0,len-1,left,right);&&&&cout&&"method2:("&&left&&","&&right&&")&&";&&&&cout&&"sum="&&sum&&&&&&sum=max_sub_array(arr,len,left,right);&&&&cout&&"method3:("&&left&&","&&right&&")&&";&&&&cout&&"sum="&&sum&&}void&test2(){&&&&const&int&LEN=10;&&&&int&arr[LEN];&&&&int&sign[LEN];&&&&srand(time(0));&&&&for(int&i=0;i&LEN;i++){&&&&&&&&int&val=rand()%1000;&&&&&&&&if(val%2==0)&&&&&&&&&&&&sign[i]=1;&&&&&&&&else&&&&&&&&&&&&sign[i]=-1;&&&&}&&&&for(int&i=0;i&LEN;i++){&&&&&&&&int&val=rand()%100;&&&&&&&&arr[i]=val*sign[i];&&&&}&&&&int&left,&&&&int&&&&&int&len=LEN;&&&&cout&&"arr:";&&&&copy(arr,arr+len,ostream_iterator&int&(cout,&"&"));&&&&cout&&&&&&sum=max_sub_array(arr,len,left,right);&&&&cout&&"method1:("&&left&&","&&right&&")&&";&&&&cout&&"sum="&&sum&&&&&&sum=max_sub_array(arr,0,len-1,left,right);&&&&cout&&"method2:("&&left&&","&&right&&")&&";&&&&cout&&"sum="&&sum&&&&&&sum=max_sub_array(arr,len,left,right);&&&&cout&&"method3:("&&left&&","&&right&&")&&";&&&&cout&&"sum="&&sum&&}int&main(){&&&&test2();}&其中test1函数是题目给出的数组测试,test2是进行随机产生数来测试。大致的效果如下:test1测试:&test2测试:&&参考:/hazir/archive//2447289.html &&&&}

我要回帖

更多关于 javascript 取最大值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信