A : 公約數(shù)與公倍數(shù)
題目描述:
輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
優(yōu)秀代碼
author:
2016150111
result: 正確
codes:
#include<stdio.h>
int main()
{
int m,n,a,b,c;
scanf("%d%d",&m,&n);
m>=n?(a=m,b=n):(a=n,b=m);
do
{
c=a%b;
a=b;
b=c;
}while(c!=0);
printf("%d %d",a,(m*n/a));
return 0;
}
點評 : 考慮了m大于n的情況,縮進到位。
B : 求1!+2!+3!+....+n! 之值
題目描述
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一個數(shù)字。
優(yōu)秀代碼
author:
2016150127
result: 正確
codes:
#include<stdio.h>
int main()
{
int n,i,sum=0,index=1;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
index=index*i;
sum+=index;
}
printf("%d",sum);
return 0;
//5->153;2->3
}
點評 : 一個循環(huán)就完成了計算,縮進也到位,該題比較 。
C : 求N以內的完數(shù)
題目描述
一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為"完數(shù)"。 例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數(shù)"。 編程序找出N之內的所有完數(shù),并按下面格式輸出其因子:
優(yōu)秀代碼
// 由于這道題大家實在寫的不夠簡練。我自己寫了一份,順便給大家參考下格式
#include <stdio.h>
int main () {
int num, i, j; // 注意逗號后面有個空格
scanf("%d", &num);
for (i=2; i<n; i++) { // 此處的前花括號是否換行皆可
int sum = 0;
for (j=1; j<=i/2; j++) // 計算到i/2
if (i % j == 0) sum += j;
if (sum == i) {
printf("%d its factors are ", i);
for(j=1; j<=i/2; j++) // 再次計算因子然后輸出
if (i % j == 0) printf("%d ", j);
putchar('\n');
}
}
return 0;
}
}
點評 : 代碼縮進很到位,
D : 序列求和
題目描述
有一分數(shù)序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數(shù)列的前N項之和,保留兩位小數(shù)。
優(yōu)秀代碼
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
double up=2,down=1,sum=0,t;
for(int i=0;i<n;i++) {
sum+=up/down;
t=up;
up=up+down;
down=t;
}
printf("%.2lf\n",sum);
return 0;
}
點評 : 做過的題,不做評價,關鍵縮進到位。
E : 輸出m到n之間的水仙花數(shù)
題目描述
如果一個三位數(shù)等于它自己的每一位數(shù)字的立方之和,則稱此數(shù)為“水仙化數(shù)”,如153=13+53+33。給出范圍的起止值,輸出該范圍的水仙花數(shù)。
(提示:可使用ctype.h中的函數(shù))
優(yōu)秀代碼
#include <stdio.h>
int main()
{
int a,b,c,d,e,f;
scanf("%d%d",&a,&b);
for(c=a;c<=b;c++)
{
if(c>=100 && c<=999) {
d=c/100;
e=c%100/10;
f=c%10;
if(c==d*d*d+e*e*e+f*f*f)
{
printf("%d\n",c);
}
}
}
return 0;
}
點評 : 這道題很多人都忽略了一個點。水仙花數(shù)是三位數(shù)。
F:數(shù)組排序
題目描述
定義一個10個元素的整型數(shù)組,輸入10個整數(shù)到數(shù)組,對數(shù)組排序,然后輸出。注意:輸出時,每個元素之間以空格相間,但最后一個元素后面沒有空格,直接換行。
優(yōu)秀代碼
#include<stdio.h>
#define k 10
int main()
{
int a[k],i,j,t,n,p,c;
int flag;
scanf("%d",&p);
for(n=0;n<p;n++) {
for(i=0;i<k;i++)
scanf("%d",&a[i]);
for(i=0;i<k;i++) {
flag=0;
for(j=0;j<k-1;j++)
if(a[j]>a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
flag=1;
}
if(flag==0)
break;
}
for(c=0;c<k;c++)
printf(c==9?"%d\n":"%d ",a[c]);
}
return 0;
}
點評:我不管我就喜歡那些看著舒服(縮進到位)的代碼。