第一次作业

一、实验结论

1、实验任务1:打印一个字符小人

①在列方向上打印两个字符小人:

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

        printf("\n");
    printf(" 0 \n");
    printf("<H>\n");
    printf("I I\n");

    
    return 0;
 } 

结果如图:

②在行方向上打印两个字符小人:

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

结果如图:

 

2、实验任务2:一个简单的运算程序

①定义为整型时:

#include <stdio.h>
int main()
{
    int x,y;
    int r1,r2,r3,r4;
    
    x=1;
    y=2;
    
    r1=x+y;
    r2=x-y;
    r3=x*y;
    r4=x/y;
    
    printf("r1=%d\n",r1);
    printf("r2=%d\n",r2);
    printf("r3=%d\n",r3);
    printf("r4=%d\n",r4);
    
    return 0;
}

结果如图:

②定义为浮点型时:

#include <stdio.h>
int main()
{
    float x,y;
    float r1,r2,r3,r4;
    
    x=1;
    y=2;
    
    r1=x+y;
    r2=x-y;
    r3=x*y;
    r4=x/y;
    
    printf("r1=%f\n",r1);
    printf("r2=%f\n",r2);
    printf("r3=%f\n",r3);
    printf("r4=%f\n",r4);
    
    return 0;
}

结果如图:

③分析结果中r4不同的原因:

float型变量精度高,保留小数部分;int型变量精度低,且预留字节中没有小数的位置。当题中计算的返回值有小数部分时,int型量会自动舍去小数部分(没有储存小数的空间),而float型没有损失精度,显示正确结果。

 

3、实验任务3:简单运算

①n=100时:

#include <stdio.h>
int main()
{
    int n,r1,r2,r3,r4;
    
    n=100;
    
    r1=n*(n+1)/2;
    r2=(n+1)*n/2;
    r3=n/2*(n+1);
    r4=(n+1)/2*n;
    
    printf("n=%d\n",n);
    printf("r1=%d\n",r1);
    printf("r2=%d\n",r2);
    printf("r3=%d\n",r3);
    printf("r4=%d\n",r4);
    
    return 0;
}

结果如图:

②n=101时:

#include <stdio.h>
int main()
{
    int n,r1,r2,r3,r4;
    
    n=101;
    
    r1=n*(n+1)/2;
    r2=(n+1)*n/2;
    r3=n/2*(n+1);
    r4=(n+1)/2*n;
    
    printf("n=%d\n",n);
    printf("r1=%d\n",r1);
    printf("r2=%d\n",r2);
    printf("r3=%d\n",r3);
    printf("r4=%d\n",r4);
    
    return 0;
}

结果如图:

对应的数学表达式为:½n*(n+1)

r3和r4在n取奇数和偶数时结果有误的原因分析:本质上是int型变量导致的精度损失。题中的运算是按照从左到右的顺序进行的,则以n=101为例:

r3=n/2*(n+1)=101/2*102=50*102=5100(在定义为int型时返回值中的小数部分被自动舍去)

当n=100时,r4=101,同上理。

 

4、实验任务4:一个简单的文字测试程序

①测试你是哪一类学习者

#include <stdio.h>
int main()
{
    int answer;
    char words[5000];

    printf("网课学习让一些人欢喜一些人忧.\n");
    printf("1.作为一个宅,社恐,觉得这样很好.有网络,自主学习,很ok.\n");
    printf("2.不喜,不喜,很不喜,眼睛快瞎了,脑壳有点卡…\n");
    printf("3.中间派,不知道,说不清.\n");
    printf("4.其它…\n");
    printf("你的选择: ");
    scanf("%d", &answer);
    if(answer==4) 
        {
        printf("请补充说明你的想法: \n");
        getchar();
        gets(words);
    }

    printf("\n");
    printf("当遇到问题时,你会选择:\n");
    printf("1.遇到问题,就解决问题。不懂的,搜索式学习,逐个击破.\n");
    printf("2.遇到问题,不高兴,然后,…,没有了.\n");
    printf("3.其它…\n");
    printf("你的选择: ");
    scanf("%d", &answer);

    if(answer==1)
        printf(":)\n");
    else if(answer==2)
        printf("这样不能解决问题啊…我们选择1好不好:)\n");
    else if(answer==3) 
        {
        printf("请补充说明你的想法:\n");
        getchar();
        gets(words);
    }

    return 0;
}

结果如图:

 ②自己乱写的非要起名字的话就叫“一个自闭人的疑问”吧

#include <stdio.h>
int main()
{
    int answer;
    char words[5000];
    
    printf("更喜欢身处一群热闹的人中还是更乐意独处?\n");
    printf("1.喜欢人多热闹\n");
    printf("2.喜欢独处\n");
    printf("3.不一定,看情况\n");
    printf("4.其它\n");
    printf("你的选择是:");
    scanf("%d",&answer);

    if(answer==4)
    {
        printf("请补充说明你的想法:\n");
        getchar();
        gets(words);
    }
    else if(answer==2)
    {
        printf("那没事了\n");
        return 0;
    }
    
    printf("\n");
    printf("是喜欢和朋友们一起还是喜欢热闹?\n");
    printf("1.喜欢和朋友一起\n");
    printf("2.喜欢热闹!\n");
    printf("3.有什么区别吗?\n");
    printf("4.都不是,是:\n"); 
    printf("你的选择是:");
    scanf("%d",&answer);

    if(answer==1)
            printf("安静的朋友为此感到快乐\n");
    else if(answer==2)
            printf("很有烟火气!\n");
    else if(answer==3)
            printf("或许有呢?\n");
    else if(answer==4) 
    {
        printf("请补充说明你的想法:\n");
        getchar();
        gets(words);
    }
    return 0;
}

结果如下:

 

 

二、实验总结

1、疑问:

①关于实验1,有没有除了这种手动分行/不分行、打空格键和复制粘贴代码以外的简易实现方式?

②关于实验4,定义变量时[5000]是表示对输入字数限制吗?

2、收获:

①更加明确整型int定义和浮点型float定义的区别以及它们对实际运算的影响:对于明确的返回数必为整数的变量,定义为整型可以节约存储空间;但是对于运算过程中可能出现小数形式的变量,定义为整型意味着精度的损失,需要定义成浮点型来保持运算的准确性。整型变量表示含小数的返回量时是直接将小数部分全部舍去的,这和整型变量定义的存储空间有关,与数学意义上的舍去无关。

②对于程序运行的顺序和输出输入的交互有了更深的理解。对较简单的逻辑运算和条件函数的运用有了更深的理解。

 

posted @ 2021-03-14 22:50  还不读书?  阅读(106)  评论(0编辑  收藏  举报