实验三 : 优秀代码
2016-10-13 本文已影响0人
jzh123s
A : 计算圆内接正n边形的面积
题目描述:
输入圆半径R、正整数n,计算并输出圆内接正n边形的面积。
面积公式:nR*Rsin(2π/n)/2。
C语言中已定义正弦函数sin(x),其中x是弧度。使用sin(x)需包含头文件math.h。
π的取值为3.1415926。
优秀代码
//这是一个计算圆内接正n边形面积
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main()
{
int n;
double r,Area;
//printf("请输入半径和正多边形的边数");
scanf("%lf,%d",&r,&n);
Area=n*r*r*sin(2*PI/n)/2;
printf("Area=%.2lf\n",Area);
return 0;
}
点评 : 很标准的一段代码。
B : 一元二次方程的两个实根求解
题目描述
输入一元二次方程ax^2+bx+c=0的系数a、b、c。
假设输入始终满足b^2-4ac>0且a不等于0,计算并输出该方程的两个实根。
C语言中计算非负实数的平方根函数: double sqrt(double);
头文件:math.h。
优秀代码
#include<stdio.h>
#include<math.h>
int main ()
{
int a , b , c ;
double delta , x1 , x2 ;
//printf ( "请输入一元二次方程的系数a,b,c" );
scanf ( "%d%d%d", &a , &b , &c );
delta=b*b-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
//printf ( "该方程的两个实根分别是" );
printf ( "x1=%.2lf x2=%.2lf \n", x1 , x2 );
return 0;
}
点评 : 声明了delta变量方便重用,避免了冗余。格式和缩进把握的也不错。
C : 大写字母加密
题目描述
有一种古典加密方法就是按照字母表顺序,把每个字母循环右移k位,从而转换为加密的另一个字母。
例如偏移2位,即A对应C,B对应D,……X对应Z,Y对应A,Z对应B。
当前设定加密规则是:循环右移4位。
注:要求用表达式实现加密。
优秀代码
#include<stdio.h>
int main()
{ char ch, ch1;
ch=getchar();
ch1='A'+(ch-'A'+4) % 26;
printf("%c\n", ch1);
return 0;
}
点评 : 一行代码实现了整个加密流程,缩进还能再改进下
D : 求三个数中的最大数
题目描述
有三个整数a b c,由键盘输入,输出其中的最大的数。
优秀代码
#include <stdio.h>
int main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a>b?a:b;
max=c>max?c:max;
printf("%d",max);
return 0;
}
点评 : 利用了三段式替代了大量的if语句
E : 判断字母
题目描述
输入一个字符,判定该字符是否是字母。
(提示:可使用ctype.h中的函数)
优秀代码
//这是判断字母的代码
#include<stdio.h>
#include<ctype.h>
int main()
{
char c;
c = getchar();
//读取一个字符
if(c>='a'&&c<='z' || c>='A'&&c<='Z')
printf("ALPHA\n");
else
printf("NO\n");
return 0;
}
点评 : 手动判断了c的范围,对&&和||的优先级也把控的很到位
PS:早期不建议使用内置函数偷懒,能自己实现的尽量自己实现。