A : 公约数与公倍数
题目描述:
输入两个正整数m和n,求其最大公约数和最小公倍数。
优秀代码
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是一个数字。
优秀代码
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
}
点评 : 一个循环就完成了计算,缩进也到位,该题比较 。
C : 求N以内的完数
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
优秀代码
// 由于这道题大家实在写的不够简练。我自己写了一份,顺便给大家参考下格式
#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 : 序列求和
题目描述
有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
优秀代码
#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之间的水仙花数
题目描述
如果一个三位数等于它自己的每一位数字的立方之和,则称此数为“水仙化数”,如153=13+53+33。给出范围的起止值,输出该范围的水仙花数。
(提示:可使用ctype.h中的函数)
优秀代码
#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;
}
点评 : 这道题很多人都忽略了一个点。水仙花数是三位数。
F:数组排序
题目描述
定义一个10个元素的整型数组,输入10个整数到数组,对数组排序,然后输出。注意:输出时,每个元素之间以空格相间,但最后一个元素后面没有空格,直接换行。
优秀代码
#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;
}
点评:我不管我就喜欢那些看着舒服(缩进到位)的代码。