本帖最后由 千亩计者 于 2018-12-4 17:38 编辑
两个都是用C语言写的,这个是先排序,再求解#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a[] = {2,3,4,5,6,7,2};
int i,j,max,num,length,temp,newlength;
length = sizeof(a)/sizeof(a[0]);//数组的长度是sizeof(a)/sizeof(a[0])
printf("排序前的数组:\n");
for(j=0;j<length;j++){
printf("a[%d] = %d\n",j,a[j]);
}
for(j=length;j>0;j--){
max = 0;
for(i=0;i<j;i++){
if(a[i]>max){
max = a[i];
num = i;//保存该轮循环中得到的最大数的下标
}
}
//这三的作用是将该轮循环得到的最大值与数组中的最后一个值进行交换
temp = a[j-1];
a[j-1] = max;//每轮循环得到的最大值被放在了数组最后,当两轮循环结束的时候,数组中的数就是从小到大排列的
a[num] = temp;//通过之前标记的最大数下标实现对该最大数的准确替换
}
printf("排序后的数组:\n");
for(j=0;j<length;j++){
printf("a[%d] = %d\n",j,a[j]);
}
//排序结束后求重复两次的那个数
for(i=0;i<length;i++){
if((a[i]-a[i+1])==0){
printf("%d\n",a[i]);
break;
}
}
return 0;
}
|