作业帮 > 综合 > 作业

关于C语言,计算圆的面积和周长.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 02:16:41
关于C语言,计算圆的面积和周长.
输入两组圆的半径,计算圆面积与周长.为什么我执行出来,我试输入5和6.21结果总是"00".明明输入的是正数..为什么为这样
#include
int main(){
\x09double pi = 3.1415926;
\x09double r1, r2, area, s;
\x09scanf_s("%ld\n%d", &r1, &r2);
\x09if (r1 > 0){
\x09\x09area = pi*r1 * 2;
\x09\x09s = 2 * pi*r1;
\x09\x09printf("%.6ld %.6ld", area, s);
\x09}
\x09else{
\x09\x09printf("0");
\x09}
\x09if (r2 > 0){
\x09\x09area = pi*r2 * 2;
\x09\x09s = 2 * pi*r2;
\x09\x09printf("%.6ld %.6ld", area, s);
\x09}
\x09else{
\x09\x09printf("0");
\x09}
\x09return 0;
}
代码大致思路没有错.
不过,采用浮点型数据的时候,输入输出的格式不是用%d(整数),而是用%f
所以,把你的代码里,%ld改成%lf,%d改成%f,%.6ld改成%.6lf就可以了.
另外,面积公司改成 area = pi * r1 *r1;
再问: 原来如此,公式那里是手快没注意- -...可是我改过来以后,第一组数据输出正确了,第二组还是输出0...好奇怪...
再答: scanf遇到换行符就结束了,不再进行读取。所以用scanf读取多行数据,是不可以的。 替换方法1:空格分隔 scanf("%lf %lf", &r1, &r2); 替换方法2:按行读取 scanf("%lf", &r1); getchar(); //读取换行符 scanf("%lf", &r2);
再问: 同志啊,为什么的我答案和题目要求都一样了,还是判定我为wrong answer.好崩溃.我干脆把题目贴上来,你帮帮忙看看到底哪里出问题...p.s.我们系统不能用scanf_s,我提交都是换成scanf..
真的十分感谢!!
再答: 不知道考点是什么,写了两段代码,自己试试看吧。

#include <stdio.h>
int main() {
    double pi = 3.1415926;
    double r[10];
    int i = 0, k;

    while (1) {
        if (scanf("%lf", &r[i]) <=0)
                break;
        i++;
        getchar();
    }

    for(k=0; k<i; k++) {
        if (r[k] > 0.0)
            printf("%.6lf %.6lf\n", pi * r[k] * r[k], 2 * pi * r[k]);
        else
            printf("0\n");
    }

    return 0;
}

#include <stdio.h>
int main() {
    double pi = 3.1415926;
    double r;

    while (1) {
        if (scanf("%lf", &r) <=0)
                break;
        getchar();

        if (r > 0.0)
            printf("%.6lf %.6lf\n", pi * r * r, 2 * pi * r);
        else
            printf("0\n");
    }

    return 0;
}