实验一 c语言开发环境使用和数据类型运算符表达式

任务1:

点击查看代码
#include <stdio.h>

int main()
{
    // 第一个小人
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    
    // 第二个小人
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    
    return 0;
}
![屏幕截图 2026-10-17 174310](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017175021474-1415116594.png)
点击查看代码
#include <stdio.h>

int main()
{
    // 第一行:两个小人的头部
    printf(" O      O \n");
    // 第二行:两个小人的躯干
    printf("<H>    <H>\n");
    // 第三行:两个小人的腿
    printf("I I    I I\n");
    
    return 0;
}
![屏幕截图 2026-10-17 175059](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017175111100-510326783.png)

任务2:
点击查看代码
#include <stdio.h>

int main()
{
    double a, b, c;

    // 输入三边边长
    scanf("%lf%lf%lf", &a, &b, &c);

    // 判断能否构成三角形
    // 补足括号里的逻辑表达式
    if(a + b > c && a + c > b && b + c > a)
        printf("能构成三角形\n");
    else
        printf("不能构成三角形\n");

    return 0;
}
![屏幕截图 2026-10-17 175310](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017175312099-522485712.png)

任务三:
点击查看代码
#include <stdio.h>
int main()
{
    char ans1, ans2; // 保存用户输入的答案

    printf("每次课及时预习/复习了没?(是-输入y或Y,否-输入n或N) :");
    ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1

    getchar(); // 这一行是为了吸收第一次输入后按下的回车符(\n),防止影响第二次输入

    printf("\n动手敲代码实践了没?(是-输入y或Y,否-输入n或N) :");
    ans2 = getchar();

    // 待补足,判断ans1和ans2都是y(大小写均可)
    if ((ans1 == 'y' || ans1 == 'Y') && (ans2 == 'y' || ans2 == 'Y')) 
        printf("\n罗马不是一天建成的,继续保持哦:)\n");
    else
        printf("\n罗马不是一天毁灭的,我们来建设吧\n");

    return 0;
}
![image](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017175649471-61753287.png)

回答:去掉line9后,输入第一个答案并回车,程序会直接跳过第二次输入并输出最终结果。这是因为键盘输入字符并按下回车时,输入缓冲区会同时残留一个换行符 \n,第一个 getchar() 读走字符后,第二个 getchar() 会直接读取残留的换行符赋给 ans2,导致程序未等待用户真实输入就做出了错误判断;这证明了在连续使用 getchar() 时,必须用额外的 getchar() 清除缓冲区中的回车符,才能保证后续读取正确。 任务四:
点击查看代码
// 计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
#include <math.h> // 引入数学库以使用 round() 函数

int main()
{
    int year;
    
    // 补足代码
    // 1000000000.0 是一年的秒数 (365*24*60*60)
    year = (int)round(1000000000.0 / (365 * 24 * 60 * 60));
    
    printf("10亿秒约等于%d年\n", year);
    return 0;
}
![image](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017180111955-957130558.png) 任务五:
点击查看代码
// 摄氏温度转换成华氏温度
#include <stdio.h>

int main() {
    double c, f;
    
    scanf("%lf", &c);
    
    // 待补足:摄氏温度 -> 华氏温度
    f = 9.0 / 5.0 * c + 32;
    
    printf("摄氏度c = %.2f时,华氏温度f = %.2f\n\n", c, f);
    
    return 0;
}
![屏幕截图 2026-10-17 180256](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017180256879-603941198.png)

任务六:
点击查看代码
#include <stdio.h>
#include <math.h> // 引入数学库以使用 sqrt() 函数

int main() {
    double a, b, c;
    double s, area;
    
    // 从键盘输入三角形三边边长
    scanf("%lf %lf %lf", &a, &b, &c);
    
    // 计算半周长
    s = (a + b + c) / 2.0;
    
    // 用海伦公式计算面积
    area = sqrt(s * (s - a) * (s - b) * (s - c));
    
    // 打印输出,面积保留到小数点后3位
    // 为了匹配样例输出,边长用 %g 输出(去掉多余的0)
    printf("a = %g, b = %g, c = %g, area = %.3f\n", a, b, c, area);
    
    return 0;
}
![屏幕截图 2026-10-17 180407](https://img2024.cnblogs.com/blog/3861550/202610/3861550-20261017180432648-1595664202.png)

posted @ 2026-10-17 18:07  魏子翔  阅读(5)  评论(0)    收藏  举报