数组的2道简单问题-创新互联
1、数组转置问题
10年的右玉网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整右玉建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“右玉网站设计”,“右玉网站推广”以来,每个客户项目都认真落实执行。思想:关键就是找2个指针变量,和第三个交换空间变量,一个指针指向头,一个指针指向尾,都向中间靠拢,进行数组的转置,数字的交换;
(1)、代码如下:
#includevoid arrayRev(int *a, int count); void printT(int *a, int count); void printT(int *a, int count){ int i; for(i = 0; i < count; i++){ printf("%d ", a[i]); } } void arrayRev(int *a, int count){ int low = 0; int high = count-1; int tmp; while(low < high){ tmp = a[low]; a[low] = a[high]; a[high] = tmp; low++; high--; } } int main(void){ int a[] = {1, 4, 2, 6, 8, 9, 11, 43, 12, 55,}; int len; len = sizeof(a)/sizeof(a[0]); printf("转置前:\n"); printT(a, len); arrayRev(a, len); printf("\n转置后:\n"); printT(a, len); printf("\n"); return 0; }
(2)、运行结果:
2、寻找一个数组中的第二大数字
无序数组中的一堆数字,寻找第二个大的数字?
思想:一次for循环就可以搞定了,开始给出一个默认大和第二大的数字,然后对其后的每个数字通过if比较就可以了;
(1)、代码如下:
#includeint secondMax(int *a, int len); void printT(int *a, int count); void printT(int *a, int count){ int i; for(i = 0; i < count; i++){ printf("%d ", a[i]); } printf("\n"); } int secondMax(int *a, int len){ int max = a[0] > a[1] ? a[0] : a[1]; int second = a[0] > a[1] ? a[1] : a[0]; int i; for(i = 2; i < len; i++){ if(a[i] > max){ second = max; max = a[i]; }else if(a[i] > second){ second = a[i]; }else{ ; } } return second; } int main(void){ int a[] = {44, 4, 66, 6, 8, 33, 22, 2 ,55 ,1}; int len = sizeof(a)/sizeof(a[0]); int num; num = secondMax(a, len); printT(a, len); printf("%d\n", num); return 0; }
(2)、运行结果:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:数组的2道简单问题-创新互联
网站地址:http://lswzjz.com/article/dspoie.html