实验一10.16

任务一

/*Trial1-A simple C program*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
    
    printf_s("my stuno is:202083450087\n2020,i will be better!\n");

    system("pause");

    return 0;
}

任务二

//循环打印字符

#include <stdio.h>

int main()
{
    while (1)
        printf("0 1");

    return 0;
}

while (1);改为while (0);后闪退

 

//循环打印字符

#include <stdio.h>

int main()
{
    while (1)
        printf("S10冠军Tes");

    return 0;
}

 

任务三 math1

//用C语言实现的一个简单算数运算程序

#include <stdio.h>
#include <stdlib.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);

    system("pause");

    return 0;
}

任务三 math2

//用C语言实现的一个简单算数运算程序

#include <stdio.h>
#include <stdlib.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);

    system("pause");

    return 0;
}

任务四

//测试你是哪一类学习者

#include <stdio.h>
#include <stdlib.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_s("%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_s("%d", &answer);

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

}

 

实验笔记:

1.在任务4中,“scanf()”与“gets()”会被报错,改为“scanf_s()”与“gets_s()”编译成功。

原因:①scanf()不会检查输入边界,可能造成数据溢出。scanf_s()会进行边界检查。

②gets()可以无限读取,易发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值,由于可以无限读取,所以在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代

2.在任务4中,问题2选择2后会闪退,不会显示“选1好不好...”,加入的system("pause");不能放在函数else if下

实验总结:

在熟练掌握C语言中各种函数意义、数据类型的同时不断练习编程,出错、试错才能更好的学习、运用C语言。

posted @ 2020-10-16 21:33  热心市民小杨  阅读(96)  评论(0编辑  收藏  举报