Ⅰ.找數組中最大數算法:
提供幾種思路:
① 用類似於比較大小的方法,從數組的第一個開始,與其他數比較,用一個整型數來表示布爾量,若這個數大於之後的任意一個數,那麼布爾量爲1(通過),否則0(失敗),且從第二個數繼續開始,以此類推。
用這種思路要考慮一個特殊情況:到最後一個數之前,還未通過,則最後一個數爲最大的
這種方法呆板,且有個個特殊情況,不方便,但思路簡單。
② 設置一個max量, max量被賦值爲第一個數,往數組後走,只要大於這個max的量,就進行交換。
代碼:
#include<stdio.h>
main()
{
int a[10]={1,2,3,4,5,44,7,8,9,10};
int i;
int max,maxb;
max=a[0];maxb=0;
for(i=0;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
maxb=i;
}
}
printf("max=%d , is %d\n",max,maxb+1);
return 0;
}
這種方法我覺得更簡單,而且無特殊情況
③ 直接排序
利用排序的方法(代碼),雙重循環即可
int a[n];//這樣子對一些老的編譯器可能不合適
for(i=1;i<n-1;i++)//注意這裏不必到最後一個數,直到倒數第二個排好,就ok
for(j=i+1;j<=n-1;j++)
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}//從小到大
這種方法對後面的衍生題有用
衍生題:找出第二大的數,第三大的數,和第二小的數
這種的話,最方便的就是用第二種方法,直接對應即可。
而用第二種思路,方法也是很巧妙,思路是讓第二大的數跟着最大的數走,結束爲止
但不是很方便求第三大,第二小。。。
Ⅱ.閏年(這個煩死了,做個筆記,下次懶得翻)
if(y%4==0&&y%100!=0||y%400==0) i=29;
else i=28;
就是兩種情況:能被4整除同時不能被100整除或者能被400整除。