您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
1、数组转置问题
思想:关键就是找2个指针变量,和第三个交换空间变量,一个指针指向头,一个指针指向尾,都向中间靠拢,进行数组的转置,数字的交换;
(1)、代码如下:
#include<stdio.h>
void 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)、代码如下:
#include<stdio.h>
int 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)、运行结果:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。