实验一

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

}

 

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

}

 

 

 

任务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;

}

 

 代码1中数据类型为整型,进行整型的运算,小数位置上的数据便被直接略去了。

 

 

 

任务3

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

}

#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)÷2

(n+1)×n÷2

n÷2×(n+1)

(n+1)÷2×n

因为当取奇数值时,r3式子中n先进行整型的除法运算舍去了余数,导致了偏差

取偶数时,r4式子中(n+1)为奇数,舍去了余数。

 

 

任务4

 

#include<stdio.h>
#pragma warning(disable:4996)int main()
{
    double x, y;
    char c1, c2, c3;
    int a1, a2, a3;
    scanf("%d%d%d", &a1, &a2, &a3);
    printf("%d,%d,%d\n", a1, a2, a3);
    scanf("\n%c %c %c", &c1, &c2, &c3);//上一个回车会进入缓冲区,被读入c1中
    printf("%c%c%c\n", c1, c2, c3);
    scanf("%lf%lf", &x, &y);//输入double用lf float用f 
    printf("%.1lf %.1lf\n", x, y);
    return 0;
}

 

 

任务5 

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{
    int a1, a2;
    char c1, c2;
    scanf("%d%c%d%c", &a1, &c1, &a2, &c2);
    printf("a1=%d,a2=%d\n", a1, a2);
    printf("c1=%c,c2=%c\n", c1, c2);
    return 0;
}

任务6

 

#include <stdio.h> 
#pragma warning(disable:4996)
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_s(words); 
        printf("\n"); 
        printf("当遇到问题时, 你会选择:\n");
        printf("1. 遇到问题, 就解决问题。不懂的,搜索式学习,逐个攻破.\n");
        printf("2. 遇到问题, 不高兴。然后,...,没有了.\n");
        printf("3. 其它...\n"); printf("你的选择: ");
        scanf("%d", &answer);
    }
        else if (answer == 1) printf(":)\n");
        else if (answer == 2) printf("这样不能解决问题啊...我们选择1好不好:)\n");
        else if (answer == 3) {
            printf("请补充说明你的想法: \n");
            getchar(); 
            gets_s(words); 
        }
        return 0;
}

 改写后的代码

#include <stdio.h> 
#pragma warning(disable:4996)
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_s(words); 
        printf("\n"); 
        printf("当遇到问题时, 你会选择:\n");
        printf("1. 遇到问题, 就解决问题。不懂的,搜索式学习,逐个攻破.\n");
        printf("2. 遇到问题, 不高兴。然后,...,没有了.\n");
        printf("3. 其它...\n"); printf("你的选择: ");
        scanf("%d", &answer);
    }
        else if (answer == 1) printf(":)\n");
        else if (answer == 2) printf("这样不能解决问题啊...我们选择1好不好:)\n");
        else if (answer == 3) {
            printf("请补充说明你的想法: \n");
            //getchar(); 
            gets_s(words); 
        }
        return 0;
}

我不能输入我的想法,而是直接终止了程序

原因:3后面输入了一个回车,其进入了缓冲区,导致本应输入我的想法的位置被占用,程序直接结束

加上getchar()使回车被消耗在了此处,不会占用我的想法的位置 

posted on 2021-10-28 19:25  彭涌涛  阅读(26)  评论(0编辑  收藏  举报

导航