「C語言」「刷題」XUPT Online Judge經典題型,xupt
在學校OJ網( http://www.xyjudge.com/)上刷了一些題,有的題型值得整理在博客上。
3.6日才剛剛開始刷,慢慢添加那些比較經典的,並盡量用多種方法求解後思考哪一種最適合。

![]()
1 #include <stdio.h>
2 #include <math.h>
3 #define A 2
4
5 int f(int i,int k)
6 {
7 int j;
8 j=k*A*pow(10,i);
9 return j;
10 }
11
12 int main()
13 {
14 int n,i,j,k,sum=0;
15 scanf("%d",&n);
16 k=n;
17 for(i=0;i<n;i++)
18 {
19 j=f(i,k);
20 sum+=j;
21 k--;
22 }
23 printf("%d",sum);
24 return 0;
25 }
2+22+222+...+n個2

![]()
1 #include <stdio.h>
2
3 int main()
4 {
5 int m,n,max,min,i;
6 scanf("%d%d",&m,&n);
7 if(m<n)
8 {
9 m=m+n;
10 n=m-n;
11 m=m-n;
12 }
13 for(i=n;i>0;i--)
14 {
15 if(m%i==0 && n%i==0)
16 {
17 max=i;
18 break;
19 }
20 }
21 for(i=m;;i++)
22 {
23 if(i%m==0 && i%n==0)
24 {
25 min=i;
26 break;
27 }
28 }
29 printf("%d %d",max,min);
30 return 0;
31 }
最大公約數與最小公倍數

![]()
1 #include <stdio.h>
2
3
4 int main()
5 {
6 int a,b[5]={0,0,0,0,0},i=0,len=0;
7 scanf("%d",&a);
8 while(i<5)
9 {
10 b[i]=a%10;
11 a=a/10;
12 len++;
13 if(a==0)
14 break;
15 i++;
16 }
17 printf("%d\n",len);
18 for(i=len-1;i>0;i--)
19 printf("%d ",b[i]);
20 printf("%d\n",b[i]);
21 for(i=0;i<len;i++)
22 printf("%d",b[i]);
23 return 0;
24 }
判斷一個數的位數及逆序數(倒著輸出)

![]()
1 #include <stdio.h>
2 #include <math.h>
3
4 int main()
5 {
6 int i,j,k,t,sum;
7 for(i=100;i<=999;i++)
8 {
9 sum=0;
10 k=i;
11 for(j=0;j<3;j++)
12 {
13 t=k%10;
14 sum+=pow(t,3);
15 k=k/10;
16 }
17 if(i==sum)
18 printf("%d\n",i);
19 }
20 return 0;
21 }
100到999的水仙花數(該三位數中每位的3次方和等於這位數)

![]()
1 #include <stdio.h>
2 #include <math.h>
3
4 void ifperfect(int n)
5 {
6 int i,k=0,a[100]={0},sum=0;
7 for(i=1;i<n;i++)
8 {
9 if(n%i==0)
10 {
11 a[k]=i;
12 sum+=a[k];
13 k++;
14 }
15 }
16 if(n==sum)
17 {
18 printf("%d its factors are ",n);
19 for(i=0;i<sizeof(a)-1;i++)
20 {
21 if(a[i+1]==0)
22 break;
23 printf("%d ",a[i]);
24 }
25 printf("%d\n",a[i]);
26 }
27 }
28
29 int main()
30 {
31 int n,i,j;
32 scanf("%d",&n);
33 for(i=1;i<n;i++)
34 ifperfect(i);
35 return 0;
36 }
輸出n以內的完全數(它等於它的所有因子之和)

![]()
1 #include <stdio.h>
2
3 int main()
4 {
5 int i,j,a[10];
6 for(i=0;i<10;i++)
7 scanf("%d",&a[i]);
8 for(i=0;i<9;i++)
9 {
10 for(j=i+1;j<10;j++)
11 {
12 if(a[i]>a[j])
13 {
14 a[i]^=a[j];
15 a[j]^=a[i];
16 a[i]^=a[j];
17 }
18 }
19 }
20 for(i=0;i<10;i++)
21 {
22 printf("%d\n",a[i]);
23 }
24 return 0;
25 }
數組排序