实验一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语言。