实验1 C语言简单程序编写

实验任务1

垂直方向上打印两个字符小人:

task1_1.c:

#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;
}

运行测试截图:cf0077d35fa029198367e395193802c9

水平方面上打印两个字符小人:

task1_2.c:

#include <stdio.h>
int main()
{
    printf(" O      O \n");
    printf("<H>    <H>\n");
    printf("I I    I I\n");
    
    return 0;
}

运行测试截图:

8eb688194a9600ac6fe3c6c1f95dffef

实验任务2

task2.c:

#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; }

运行测试截图:

f9f34a9c3da75b40baf4d81718215ce8

实验任务3

task3.c:

#include <stdio.h>
int main()
{
    char ans1, ans2; 
   
    printf("每次课及时预习/复习了没? (是-输入y或Y, 否-输入n或N) :  ");
    ans1 = getchar(); 
    
    getchar(); 
    
    printf("\n动手敲代码实践了没? (是-输入y或Y, 否-输入n或N) :  ");
    ans2 = getchar();
    
    if ((ans1 == 'y' || ans1 == 'Y') && (ans2 == 'y' || ans2 == 'Y'))
        printf("\n罗马不是一天建成的, 继续保持哦:)\n");
   
    else
        printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
    
    return 0;
}

运行测试截图:

49d11e35883b70e9066e9b06d72e9160

删去源代码line9后:

运行测试截图:

070ab5687bfe8b6b5ad4c73f88d06a6d

分析和结论:键盘输入是行缓冲模式,y 后面的回车 '\n' 会留在输入缓冲区,line9是用来清理输入缓冲区中的回车符 '\n',让第二次输入能正常读取用户的真实答案。

实验任务4

task4.c:

// 计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
#include <math.h>

int main()
{
    int year;

    year = (int)round(1000000000.0 / (365 * 24 * 3600));

    printf("10亿秒约等于%d年\n", year);
    
return 0; }

运行测试截图:

458baa815e56c4fe997e7be50f0332f6

实验任务5

task5.c:

// 摄氏温度转换成华氏温度
#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; }

测试截图:

aecb6dc7eddf10e1b0c1cb16c9c05754

实验任务6

task6.c:

include <stdio.h>
#include <math.h>
int main() {
    double a, b, c;

    scanf("%lf %lf %lf", &a, &b, &c);

    double s = (a + b + c) / 2.0;

    double area = sqrt(s * (s - a) * (s - b) * (s - c));
     
    printf("area = %.3f\n", area);

    return 0;
}

运行测试截图:

d61f02c09d9d08d78f0d60abb679cc0a

实验总结:

1.核心收获与思考:实验任务3和4给我的印象比较深,任务三中关于get char()作用的讨论使我联想到oj里输入字符判断类型并输出 ASCII码的那道题,同样的关键字,在不同位置,不同情况况下,所表示出的含义是不一样的 ,让我明白了代码的多样性,在平时学习里也应该多关注,多积累。实验4包括课上讲过的int()取整型和round()四舍五入,课上讲过的内容在课后立刻就能在题目中显现,让我明白了上课需要认真读老师展示的每一行代码,让自己有个印象,才能在课后面对实际问题时及时想到大体思路。

2.待解疑问:对于实验任务3中的思考问题的了解还是不够深入,我会加快自学进度并在下次课堂讲解时认真听讲。

 

 

 

 

posted @ 2026-10-18 12:56  Novacane0523  阅读(5)  评论(0)    收藏  举报