【C语言】 “小小计算器”基本功能实现 | 您所在的位置:网站首页 › 5的指数形式 › 【C语言】 “小小计算器”基本功能实现 |
先放一张最终成果图 以下为具体的基本功能实现要求,大伙可以自由跳转到需要的地方观看,源码放在了文末 目录 实验1、“小小计算器”基本功能实现(1) 实验2、“小小计算器”基本功能实现(2) 实验3、“小小计算器”基本功能实现(3) 实验4、小小计算器”基本功能实现(4) 实验5、“小小计算器”基本功能实现(5) 实验6、“小小计算器”基本功能实现(6) 实验7、“小小计算器”基本功能实现(7) 实验8、“小小计算器”基本功能实现(8) 实验9、“小小计算器”基本功能实现(9) 实验10、“小小计算器”基本功能实现(10) 实验11、“小小计算器”基本功能实现(11) 实验12、“小小计算器”基本功能实现(12) 实验13、“小小计算器”输出结果链表存储(13) 以下为源码片段 以下为源码下载链接: 实验1、“小小计算器”基本功能实现(1)(1)实验目的 通过该实验,让学生理解程序和程序设计的含义,掌握C语言的基本概念以及一个C程序的组成要素,熟悉VC开发环境的基本操作,掌握VC环境下开发程序的操作流程,对printf函数的简单使用有个感性认识。 (2)实验内容 编写程序,在屏幕上输出以下内容: ************************** * 小小计算器 * ************************** 实验2、“小小计算器”基本功能实现(2)(1)实验目的 通过该实验,进一步让学生熟练掌握printf函数的功能,能实现显示不同类型的数据,让学生掌握基本数据类型、变量的命名和常量的定义的概念,能熟练掌握变量和常量使用。 (2)实验内容 编程实现以下功能: ① 在屏幕上输出 *********************************** * 小小计算器 * * 1 加法 * * 2 减法 * * 3 乘法 * * 4 除法 * * 5 取模运算 * * 6 计算圆面积 * *********************************** ② 定义几个变量,并赋初值,分别进行加法、加法、乘法、除法、取模运算; ③ 定义常量PI等于3.14, 计算给定半径的圆面积,将计算结果分别赋值给一个double类型和int类型的变量,掌握C中的数据类型转换,并将各个计算结果在屏幕上输出。 (3)验收/测试用例 假设程序中定义变量并赋初始值如下: int a=8, b=2, c=0, r=2; double t; 程序运行后,在屏幕上输入如下: a+b的结果是:10 a-b的结果是:6 a*b的结果是:16 a/b的结果是:4 圆面积整数结果是12 圆面积是12.560 000 实验3、“小小计算器”基本功能实现(3)(1)实验目的 通过该实验,进一步掌握printf和scanf函数的应用,加深对C中数据类型转换的理解。 (2)实验内容 在实验2的基础上,实现用scanf从键盘上输入数据,进行相应的运算,并将结果在屏幕上输出。要求实现加法、减法和取模运算时,输入数据类型为整数,并将运算结果的10进制、8进制和16进制形式输出;乘法、除法运算的输入数据均为float,计算结果分别以小数形式和指数形式输出;求圆面积输入的数据类型为double,正常输出结果,同时还要求在输出要求保留两位小数的结果。 在实验过程中,要求结合课本把scanf和printf的各种形式的格式控制都要练习到,从而掌握这两个函数的使用。 (3)验收/测试用例 加法输入: 5, 15 输出: 加法结果的十进制形式是:20 加法结果的八进制形式是:24 加法结果的十六进制形式是:14 减法输入: 5, 15 输出: 减法结果的十进制形式是:-10 减法结果的八进制形式是:3777777766 减法结果的十六进制形式是:fffffff6 取模输入: 10, 7 输出: 取模结果的十进制形式是:3 取模结果的八进制形式是:3 取模结果的十六进制形式是:3 乘法输入: 2000.5,6 输出: 乘法结果的小数形式是:12003.000000 乘法结果的指数形式是:1.200300e+004 除法输入: 120,6 输出: 除法结果的小数形式是:20.000000 除法结果的指数形式是:2.000000e+001 求圆面积输入: 2 输出: 该圆面积是12.560000 该圆面积保留两位小数的结果是12.56 实验4、小小计算器”基本功能实现(4)(1)实验目的 通过该实验,掌握C中的if控制语句的使用,熟练应用取模运算。 (2)实验内容 编程实现以下功能: ① 在屏幕上输出 *********************************** * 小小计算器 * * 1 加法 * * 2 减法 * * 3 乘法 * * 4 除法 * * 5 判断数字的位数 * * 6 计算圆面积 * *********************************** ② 除法运算时,如果输入的第二个数(除数)为0,给出提示,显示计算结果。 ③ 输入一个正整数,要求在三位以内(含三位),求出这个数是几位数,并输出每一位数字。 (3)验收/测试用例 除法输入: 120,6 输出: 除法结果是:20.000000 输入: 120,0 输出: 除数为0,无法进行除法运算 判断数字的位数输入: -120 输出: 要求输入的数为正整数 输入: 1000 输出: 要求输入的数为3位以内的正整数 输入: 123 输出: 该数为3位数,百位是1,十位是2,个位是3 输入: 78 输出: 该数为2位数,十位是7,个位是8 实验5、“小小计算器”基本功能实现(5)(1)实验目的 通过该实验,掌握C中if语句和switch多分枝语句,特别是对switch语句中的break和default的理解。 (2)实验内容 ① 在“小小计算器”基本功能实现(4) 的基础上,用switch多分枝语句进行计算器操作选择,根据菜单提示,输入一个数字,进行对应的操作。 ② 扩充计算器功能,添加判断输入的年是否是闰年 * 7 判断闰年 * ③ 扩充计算器功能,添加成绩转换功能 * 8 成绩转换 * 从键盘上输入一个百分制的成绩,输出对应的等级成绩。 100 — 90 ——> 优秀 80 — 89 ——> 良 70 — 79 ——> 中 60 — 69 ——> 及格 0 — 59 ——> 不及格 (3)验收/测试用例 判断闰年输入:2000 输出:2000年是闰年 输入:2013 输出:2000年是平年 成绩转换输入:-10或101 输出:成绩输入错误 输入:88 输出:良 实验6、“小小计算器”基本功能实现(6)(1)实验目的 通过该实验,使学生掌握C中的循环语句的使用。 (2)实验内容 编程实现以下功能: ① 在屏幕上输出 *********************************** 小小计算器 1 加法 2 减法 3 乘法 4 除法 5 判断数字的位数 6 计算圆面积 7 判断闰年 8 成绩转换 9 计算从1到输入数之间的奇数和 (for) 10 计算从1到输入数之间的偶数和 (while) 11 输出从1到输入数之间所有3的倍数 (do-while) 12 求即被3整除又被5整除的数 13 求水仙花数 14 退出 *********************************** ② 利用循环语句,将实验5“小小计算器”基本功能实现(5)改造只有选择退出操作,程序才结束,否则执行一个操作后,提示用户进行下一个操作的输入; ③ 增加功能: “ 9 计算从1到输入数之间的奇数和 (for)” 从键盘上输入一个正整数,输出1到该数之间所有奇数和。要求用for循环语句实现。 “10 计算从1到输入数之间的偶数和 (while)” 从键盘上输入一个正整数,输出1到该数之间所有偶数和。要求用while语句实现。 “11 输出从1到输入数之间所有3的倍数 (do-while)” 从键盘上输入一个正整数,输出1到该数之间所有3的倍数。要求用do-while实现。 “12 求即被3整除又被5整除的数” 从键盘上输入两个数,输出两个数之间第一个即被3整除又被5整除的数。 “13 求水仙花数” 输出所有水仙花数。水仙花数是一个3位数,各位数字的立方之和等于他本身,例如:153= 13+53+33。 实验7、“小小计算器”基本功能实现(7)(1)实验目的 通过该实验,让学生理解掌握C语言中函数的概念,能够编写带参数的函数,掌握函数参数的概念,能够掌握传递数值和传递地址两种参数形式的区别。 (2)实验内容 在实验6的基础上,将小小计算器中的各个操作抽取成函数,在switch语句中,根据输入的操作,调用对应的函数。 扩充小小计算器的功能 “14 求最大值” 编写一个带两个参数的函数,该函数返回这两个参数的最大值。输入两个整数,输出他们的最大值。 “15 求最大最小值” 编写一个带两个参数的函数,该函数能求出这两个数的最大值和最小值,使得第一个参数存放最大值,第二个参数存放最小值。要求练习传递地址的参数。 实验8、“小小计算器”基本功能实现(8)(1)实验目的 通过该实验,使学生理解掌握C语言中数组的概念,能够灵活应用数组。 (2)实验内容 在实验7 “小小计算器”基本功能实现(7)的基础上,扩充以下功能: “16 冒泡排序” 从键盘上输入10个数,进行冒泡排序,输出排序结果。 “17 矩阵转置” 从键盘输入一个3X4的整数矩阵,进行转置操作,并将转置结果在屏幕上输出; “18 求对角线和” 从键盘输入一个3*3整数矩阵,求主对角线元素和; 实验9、“小小计算器”基本功能实现(9)(1)实验目的 通过该实验,使学生理解掌握C语言中字符串的概念,能够灵活应用数组。 (2)实验内容 在实验8 “小小计算器”基本功能实现(8)的基础上,扩充以下功能: “19 统计单词个数” 从键盘输入一行字符,单词之间用空格分隔开,统计其中有多少个单词, 并输出结果。 实验10、“小小计算器”基本功能实现(10)(1)实验目的 通过该实验,使学生理解C中指针的概念。 (2)实验内容 在实验8的基础上,将功能“16 冒泡排序”的排序结果用指针形式来输出。扩充功能: “20 静态创建链表” 静态创建一个包含有4个节点的单链表,输出这个链表的所有数据。节点包含两个域:数据域(int型),指针域。 “21 动态创建链表” 动态创建一个链表,依次从键盘上输入正整数,将输入的整数插入到该链表中,直到输入一个负数为止。最后将该链表中的数据在屏幕上输出。 实验11、“小小计算器”基本功能实现(11)(1)实验目的 通过该实验,使学生掌握C中结构体。 (2)实验内容 扩充小小计算器功能: “22 学生成绩排序” 定义学生结构体数组,长度为10,依次输入这十个学生的学号、姓名、成绩,利用冒泡排序,对这10个学生排序,从小到大输出这10个学生的信息,然后输出10个学生的总成绩和平时成绩 实验12、“小小计算器”基本功能实现(12)(1)实验目的 通过该实验,使学生掌握C语言对文件的操作。 (2)实验内容 扩充小小计算器功能: “23 学生成绩普涨10分” d盘根目录下存在一个文本文件my.txt,里面存放了10个学生的成绩,一行一个成绩,从文件中读取学生的成绩,每个成绩都加10分后,保存到原文件中。 提示: 注意d:\my.txt在fopen中如何表示;—> “d:\\my.txt”文件打开方式 —> r+从文件中读取数据,直到文件结束,如何判断文件结束—> feof()将增加10后的数据保存到原文件时,要保证从文件头开始,如何使文件指针回到文件头—> rewind()在写数据时,一定要避免在最后一个数据写完后,再写一个回车,否则下次在操作时可能出错。 实验13、“小小计算器”输出结果链表存储(13)(1)实验目的 通过该实验,使学生掌握C中链表。 (2)实验内容 扩充小小计算器功能: “24 学生成绩链表” 创建一个链表,按照实验12读取10个学生成绩后,将10个学生的总成绩存入链表,并依次完成链表初始化、遍历、节点查找、插入、删除、清空 以下为源码片段 /*若编译出现错误: [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode 请更换C99标准进再行编译*/ #include #define PI 3.14 //定义常量PI void function_1(void); void function_2(void); void function_3(void); void function_4(void); void function_5(void); void function_6(void); void function_7(void); void function_8(void); void function_9(void); void function_10(void); void function_11(void); void function_12(void); void function_13(void); int function_14(int a, int b); void function_15(int *a,int *b); void function_16(void); void function_17(void); void function_18(void); void function_19(void); int main(){ printf("***************************************************************\n\ * 小小计算器 *\n\ * 1 加法 *\n\ * 2 减法 *\n\ * 3 乘法 *\n\ * 4 除法 *\n\ * 5 判断数字的位数 *\n\ * 6 计算圆面积 *\n\ * 7 判断闰年 *\n\ * 8 成绩转换 *\n\ * 9 计算从1到输入数之间的奇数和 (for) *\n\ * 10 计算从1到输入数之间的偶数和 (while) *\n\ * 11 输出从1到输入数之间所有3的倍数 (do-while) *\n\ * 12 求即被3整除又被5整除的数 *\n\ ***************************************************************\n\ * 13 求水仙花数 *\n\ * 14 求最大值 *\n\ * 15 求最大最小值 *\n\ * 16 冒泡排序 *\n\ * 17 矩阵转置 *\n\ * 18 求对角线和 *\n\ * 19 统计单词个数 *\n\ * 20 静态创建链表 *\n\ * 21 动态创建链表 *\n\ * 22 学生成绩排序 *\n\ * 23 学生成绩普涨10分 *\n\ * 24 学生成绩链表 *\n\ * 25 退出 *\n\ ***************************************************************"); label:printf("\n请选择您要进行的运算:"); /*int num1, num2, answer; //实验3定义的变量 float num3, num4, answer2; double R, S; int value, temp, bits, one_p, two_p, three_p; //实验4定义的变量 int year, score; //实验5定义的变量 long long int num5, answer3, o; //实验6定义的变量*/ int max, num1, num2; int choose;//getchar只能接收单个字符,不适合此时超越9个的switch选择 scanf("%d", &choose); switch(choose){ case 1: function_1(); break; case 2: function_2(); break; case 3: function_3(); break; case 4: function_4(); break; case 5: function_5(); break; case 6: function_6(); break; case 7: function_7(); break; case 8: function_8(); break; case 9: function_9(); break; case 10: function_10(); break; case 11: function_11(); break; case 12: function_12(); break; case 13: function_13(); break; case 14: scanf("%d %d", &num1, &num2); max = function_14(num1, num2); printf("最大值为:%d",max); break; case 15: scanf("%d %d", &num1, &num2); function_15(&num1, &num2); printf("最大值为:%d 最小值为:%d ", num1, num2); break; case 16: function_16(); break; case 17: function_17(); break; case 18: function_18(); break; case 19: function_19(); break; case 20: //**********所有的源码文件请在文末自取,此处源码并不完整************** case 21: case 22: case 23: case 24: case 25: return 0; default: printf("不存在此结果,请重新输入!!"); } goto label; } void function_1(){ int num1, num2, answer; scanf("%d %d", &num1, &num2); answer=num1+num2; printf("加法结果的十进制形式是:%d\n",answer); printf("加法结果的八进制形式是:%o\n",answer); printf("加法结果的十六进制形式是:%x",answer); } void function_2(){ int num1, num2, answer; scanf("%d %d", &num1, &num2); answer=num1-num2; printf("减法结果的十进制形式是:%d\n",answer); printf("减法结果的八进制形式是:%o\n",answer); printf("减法结果的十六进制形式是:%x",answer); } void function_3(){ float num3, num4, answer2; scanf("%f %f", &num3, &num4); answer2=num3*num4; printf("乘法结果的小数形式是:%f\n",answer2); printf("乘法结果的指数形式是:%e",answer2); } void function_4(){ float num3, num4, answer2; scanf("%f %f", &num3, &num4); if(num4==0){ printf("除数不能为0!!"); } else{ answer2=num3/num4; printf("除法结果的小数形式是:%f\n",answer2); printf("除法结果的指数形式是:%e",answer2); } } void function_5(){ int answer, value, temp, bits, one_p, two_p, three_p; scanf("%d", &value); if(value999){ printf("要要求输入的数为3位以内的正整数"); }else{ temp=value; //计算位数(bits) bits=0; for(int i=1;i |
CopyRight 2018-2019 实验室设备网 版权所有 |