swust oj代碼+解析0086/0160/0489/1175/1181/0288/0287/0616/0276/1158,0133

0086(楊輝三角)/0160/0489/1175/1181(超出lld的數)/0288(定義數組/三目運算符)/0287(one+two=3)/0616/0276/1158,0133(水王爭霸)



(0086)1.利用楊輝三角的定義,將其看成二維數組,每個數等於它正上方的數以及其左邊一個數的和;
2.爲了使每一次循環中的求和有效,需要虛擬出第0行以及第0列,併合理賦值。



(0160)



(0489)坑點:並沒有默認輸入的a,b是a<b(0189也是這樣)




(1175) 坑點:m=0時i=0。






(1181)1.當數據長過long long int時,就可以考慮使用數組來表達了,數據溢出會錯得很奇怪。能夠正確使用數組,是需要找規律的[笑淚];
2.注意臨界點,不注意會有錯;
3.新get的求次方的方法:頂上一句#include<math.h> 然後pow(x,y),表示x的y次方;
4. initialized已初始化的
local variable 'm' used without having been initialized輸入缺&時會出現這個提示。




(0288)
1. 定義整型數組時給它賦初值;
2.對數組進行輸入時用scanf("%s",a);a爲數組名;
3.將b數組定義成int是錯的,定義成char就對了,這是accepted和wrong answer的區別之在 ;
a[i]是字母,故j爲字母,故b[]爲char ,不要隨隨便便把int char隨便交叉用,就算換也儘量用強行轉換符號;
4.三目運算符格式: 判斷表達式1?表達式2:表達式3
5.桶運算。






(0287)one+two=3的轉換,現在的辦法比較笨:將英文數字看成字符串存到數組裏,遇到加號/等號停止,達到數字切割的目的。比較好理解。




(0616)定義-輸入-定義(×)定義-定義-輸入(√)



(0276)


(1158)




0133代碼:

#include<stdio.h>
#include<string.h>
struct candidate
{
	char name[20];
	char num[10005];
};
struct candidate ca[1005];
int main()
{
	int i,j,t,n;
	struct candidate temp;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s %s",ca[i].name,ca[i].num);
	}
	for(i=0;i<n;i++)
	{
		t=i;
		for(j=i+1;j<n;j++)
		{
			if(strlen(ca[t].num)<strlen(ca[j].num))t=j;
			if(strlen(ca[t].num)==strlen(ca[j].num))
			{
				if(strcmp(ca[j].num,ca[t].num)>0)t=j;
				if(strcmp(ca[j].num,ca[t].num)==0 && strcmp(ca[j].name,ca[t].name)<0)t=j;
			}
		}
		temp=ca[i];ca[i]=ca[t];ca[t]=temp;
	}
	for(i=0;i<n;i++)
	{
		printf("%s\n",ca[i].name);
	}
	return 0;
}

tips:
1.struct candidate ca[1005];一行需要放在int main外,否則會因爲空間不夠而在輸入之前便無法運行.int main裏結構體數組比一般數組所能包容的量小.
2.由於水帖數長度(數字長度)可能有10000那麼長,所以不能用long long int之類的,lld最大十九位,long最大十位,相比之下還是太小.於是,便用數組來保存每一位數(沒辦法所以要用字符數組了).因此用#include<string.h>的一些函數來比較水帖數多少更加方便.
3.對於結構體ca[i]與ca[t]內數組的交換,如果用strcpy函數將兩個數組分別交換,strcpy會條件難以實現,導致編譯的時候出現error而無法運行.最好的辦法是定義一個struct candidate temp;然後就可以直接交換啦,而且還會很準確.



還是學渣一枚,不過還是加油咯。很感謝wubo給我講解很多,楓林也幫忙了,還有每天說晚安的,十一點四十催我碎覺的。真的晚,但心安;晚安。
移自本人qq空間

written by Sneexy


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章