“21天好习惯“第一期-4

有一位优秀教师曾经对我们说,用C语言来解决数学题才是厉害的。所以,我最近就研究了关于使用C语言解决一些数学题的知识,发现果然生活中出现的一些数学题是可以用C语言来解决的。

#include <stdio.h>
#define PI 3.14159265

int main()
{
  double r;
  printf("请输入圆的半径:");
  scanf("%lf", &r);
  double C = 2 * PI * r;
  double S = PI * r * r;
  printf("圆的半径为:%.2lf\n周长为:%.2lf\n面积为:%.2lf", r, C, S);
}

“21天好习惯“第一期-4

 

比如说这个就是经典的解决有关圆的计算,现在用C语言后,我们解决这类问题的时间将大大减小,而且正确率也能得到保证。

到了后面,学会了C语言的循环和判断后,也开始能解决一些更具有难度的题目了。比如说判断一个数是否为质数。

#include <stdio.h>

int main(void)
{
    int a;
    int b = 0;
    do
    {
        printf("请输入一个整数:");
        scanf("%d", &a);
        if (a == 1 || a == 2)
        {
            printf("%d是质数\n", a);
        }
        else
        {
            for (int i = 2; i < a; i++)
            {
                b = a % i;
                if (b == 0)
                {
                    break;
                }
            }
            if (b == 0)
            {
                printf("%d不是质数\n", a);
            }
            else
            {
                printf("%d是质数\n", a);
            }
        }

    } while (a);
}

这个代码可以解决输入的数是否为质数。这对研究这方面的人员可能就有一定的帮助。

这里对我《“21天好习惯”第一期-2》进行一个修改。对于一个题目来说,解法可以是多种多样的。因为通往成功的路不止一条,但是对于学习编程的人员来说,代码应该是约简洁越能好的。这不仅能更轻松的发现错误,也方便别人看懂我们的原理。

“21天好习惯“第一期-4

现在还是这道题目,首先要感谢@仲舟学长的指点。他在算法组迎新群里发布了一段代码,能通过pta的检测并且也是获得10分的成绩。

#include<stdio.h>
int main()
{
long long b;
char a;
scanf("%c%lld",&a,&b);
printf("%c\n",(a-97-b%26+26)%26+97);
return 0;
}


 “21天好习惯“第一期-4

此时a到z的循环就是0到26的循环,周期是26。不管b让最终的结果转了几圈,最后的结果都是只看未满一圈的部分,所以只需要取b%26。因为正数部分使整体逆时针移动,所以b%26前面是负号。由于a-97-b%26的结果可能是负数,这个时候最巧妙的地方就出现了,给这个值加一个26来确保结果为正,(a-97-b%26+26)%26整体结果除以26的余数就是在0到26之间的映射,最后加上97,恢复原来的ASCII码值。

 这可能就是差距,我想获得10分写了20多行的代码,但是人家用了短短几行就将问题解决。他也不愧是算法组的成员,这也让我感受到了算法的魅力。算法真的可以让走过的路变的简洁。

21天好习惯 第一期-4

失败的只有一种人,就是在抵达成功之前放弃的人。

                                                                      ——江西师范大学软件学院2021级的一位学生         

                                                                                                            2021年10月26日

上一篇:力扣-97 交错字符串


下一篇:卢菲菲最强大脑记忆训练法全套教程 01