- 小小计算器
- 实验1、“小小计算器”基本功能实现(1)
- 实验2、“小小计算器”基本功能实现(2)
- 实验3、“小小计算器”基本功能实现(3)
- 实验4、小小计算器”基本功能实现(4)
- 实验5、“小小计算器”基本功能实现(5)
- 实验6、“小小计算器”基本功能实现(6)
- 实验7、“小小计算器”基本功能实现(7)
- 实验8、“小小计算器”基本功能实现(8)
- 实验9、“小小计算器”基本功能实现(9)
- 实验10、“小小计算器”基本功能实现(10)
- 最终代码:
编写程序,在屏幕上输出以下内容:
**************************
* 小小计算器 *
**************************
实验2、“小小计算器”基本功能实现(2)
编程实现以下功能:
① 在屏幕上输出
***********************************
* 小小计算器 *
* 1 加法 *
* 2 减法 *
* 3 乘法 *
* 4 除法 *
* 5 取模运算 *
* 6 计算圆面积 *
***********************************
② 定义几个变量,并赋初值,分别进行加法、加法、乘法、除法、取模运算;
③ 定义常量PI等于3.14, 计算给定半径的圆面积,将计算结果分别赋值给一个double类型和int类型的变量,掌握C中的数据类型转换,并将各个计算结果在屏幕上输出。
实验3、“小小计算器”基本功能实现(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.560000
在实验2的基础上,实现用cin从键盘上输入数据,进行相应的运算,并将结果在屏幕上输出。要求实现加法、减法和取模运算时,输入数据类型为整数,并将运算结果的10进制、8进制和16进制形式输出;乘法、除法运算的输入数据均为float,计算结果分别以小数形式和指数形式输出;求圆面积输入的数据类型为double,正常输出结果,同时还要求在输出要求保留两位小数的结果。
在实验过程中,要求结合课本把cin和cout的各种形式的格式控制都要练习到,从而掌握这两个函数的使用。
验收/测试用例
加法
输入: 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
编程实现以下功能:
① 在屏幕上输出
***********************************
* 小小计算器 *
* 1 加法 *
* 2 减法 *
* 3 乘法 *
* 4 除法 *
* 5 判断数字的位数 *
* 6 计算圆面积 *
***********************************
② 除法运算时,如果输入的第二个数(除数)为0,给出提示,显示计算结果。
③ 输入一个正整数,要求在三位以内(含三位),求出这个数是几位数,并输出每一位数字。
验收/测试用例
除法
输入: 120,6
输出: 除法结果是:20.000000
输入: 120,0
输出: 除数为0,无法进行除法运算
判断数字的位数
输入: -120
输出: 要求输入的数为整数
输入: 1000
输出: 要求输入的数为3位以内的正整数
输入: 123
输出: 该数为3位数,百位是1,十位是2,个位是3
输入: 78
输出: 该数为2位数,十位是7,个位是8
① 在“小小计算器”基本功能实现(4) 的基础上,用switch多分枝语句进行计算器操作选择,根据菜单提示,输入一个数字,进行对应的操作。
② 扩充计算器功能,添加判断输入的年是否是闰年
-
7 判断闰年 *
③ 扩充计算器功能,添加成绩转换功能
-
8 成绩转换 *
从键盘上输入一个百分制的成绩,输出对应的等级成绩。
100 — 90 ——> 优秀
80 — 89 ——> 良
70 — 79 ——> 中
60 — 69 ——> 及格
0 — 59 ——> 不及格
验收/测试用例
判断闰年
输入:2000
输出:2000年是闰年
输入:2013
输出:2000年是平年
成绩转换
输入:-10或101
输出:成绩输入错误
输入:88
输出:良
编程实现以下功能:
① 在屏幕上输出
***********************************
小小计算器
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)改造只有选择退出操作,程序才结束,否则执行一个操作后,提示用户进行下一个操作的输入;
③ 增加功能:
<1>“ 9 计算从1到输入数之间的奇数和 (for)”
从键盘上输入一个正整数,输出1到该数之间所有奇数和。要求用for循环语句实现。
<2> “10 计算从1到输入数之间的偶数和 (while)”
从键盘上输入一个正整数,输出1到该数之间所有偶数和。要求用while语句实现。
<3> “11 输出从1到输入数之间所有3的倍数 (do-while)”
从键盘上输入一个正整数,输出1到该数之间所有3的倍数。要求用do-while实现。
<4> “12 求即被3整除又被5整除的数”
从键盘上输入两个数,输出两个数之间第一个即被3整除又被5整除的数。
<5> “13 求水仙花数”
输出所有水仙花数。水仙花数是一个3位数,各位数字的立方之和等于他本身,例如:153= 13+53+33。
在实验6的基础上,将小小计算器中的各个操作抽取成函数,在switch语句中,根据输入的操作,调用对应的函数。
扩充小小计算器的功能
<1> “14 求最大值”
编写一个带两个参数的函数,该函数返回这两个参数的最大值。输入两个整数,输出他们的最大值。
<2> “15 求最大最小值”
编写一个带两个参数的函数,该函数能求出这两个数的最大值和最小值,使得第一个参数存放最大值,第二个参数存放最小值。要求练习传递地址的参数。
在实验7 “小小计算器”基本功能实现(7)的基础上,扩充以下功能:
<1> “16 冒泡排序”
从键盘上输入10个数,进行冒泡排序,输出排序结果。
<2> “17 矩阵转置”
从键盘输入一个3X4的整数矩阵,进行转置操作,并将转置结果在屏幕上输出;
<3> “18 求对角线和”
从键盘输入一个3*3整数矩阵,求主对角线元素和;
<4> “19 统计单词个数”
从键盘输入一行字符,单词之间用空格分隔开,统计其中有多少个单词, 并输出结果。
在实验8 “小小计算器”基本功能实现(8)的基础上,扩充以下功能:
<1> “19 统计单词个数”
从键盘输入一行字符,单词之间用空格分隔开,统计其中有多少个单词, 并输出结果。
在实验8的基础上,将功能“16 冒泡排序”的排序结果用指针形式来输出。扩充功能:
<1> “20 静态创建链表”
静态创建一个包含有4个节点的单链表,输出这个链表的所有数据。节点包含两个域:数据域(int型),指针域。
<2> “21 动态创建链表”
动态创建一个链表,依次从键盘上输入正整数,将输入的整数插入到该链表中,直到输入一个负数为止。最后将该链表中的数据在屏幕上输出。
#include#include #include #include #include #include using namespace std; #define PI 3.1415926f #define SIZE 20 int GetMax(int m,int n) { if(m>=n) return m; else return n; } int fun1(int *a) { int i, b, max; max = a[0]; // 先让最大值为a[0] for (i = 0; i < 2; i++) // for的目的就是比较出最大值,把最大值付给b { if (a[i] >= max) b = a[i]; } return b; // 反回最大值 } int fun2(int *a) { int i, c, min; min = a[0]; // 先让最小值为a[0] for (i = 0; i < 2; i++) // for的目的就是比较出最小值,把最小值付给c { if (a[i] <= min) c = a[i]; } return c; // 反回最小值 } struct Node { int member; //节点中的成员 struct Node *next; //指向下一个节点的指针 }; //创建单链表的函数 Node* CreateSList() { int i = 0; //循环计数 int length = 0; //链表长度 int value = 0; //存储输入的节点成员值 //创建链表头节点并分配空间 Node* pHead = (Node*)malloc(sizeof(Node)); assert(pHead != NULL); //创建临时节点并分配空间,用于循环控制 Node* pTemp = (Node*)malloc(sizeof(Node)); assert(pHead != NULL); //输入需要创建的链表节点个数 printf("请输入要创建的节点个数:"); scanf("%d", &length); //循环创建链表节点 for (i = 0; i < length; i++) { //输入每个节点的成员 printf("请输入第%d个节点的成员:",i + 1); scanf("%d", &value); //创建一个新节点,并分配空间 Node* pNew = (Node*)malloc(sizeof(Node)); //将刚才输入的节点成员赋给pNew节点 pNew->member = value; //将pNew的下一个节点设置为NULL pNew->next = NULL; //如果是第一个链表节点 if (0 == i) { pHead = pNew; //将pNew节点赋给头节点 pHead->next = NULL; //设置头节点的下一个节点为NULL pTemp = pHead; //将头结点赋给临时节点,用于后面的循环控制 } //不是第一个节点 else { pTemp->next = pNew; //将pNew赋给pTemp节点的下一个节点 pTemp = pTemp->next;//将pTemp指向pTemp的下一个节点 pTemp->next = NULL; //将pTemp的下一个节点的下一个节点设置为NULL } } return pHead;//返回头节点 } //遍历打印链表的函数 void TraversalSList(Node* pHead) { Node* pTemp = pHead; //将头节点的指针赋给临时节点pTemp int i = 0; //循环时打印节点个数的控制变量 while (NULL != pTemp) //若节点pTemp不为空,则循环 { printf("第%d个节点信息:n", i + 1); printf("第%d个节点的成员值为:%dn",i + 1,pTemp->member); //节点数累加 i++; //将pTemp指向pTemp的下一个节点 pTemp = pTemp->next; } return; } int jiafa() { int a,b; printf("Input two integers:"); scanf("%d%d",&a,&b); printf("%d+%d=%dn",a,b,a+b); } int jianfa() { int a,b; printf("Input two integers:"); scanf("%d%d",&a,&b); printf("%d-%d=%dn",a,b,a-b); } int chengfa() { int a,b; printf("Input two integers:"); scanf("%d%d",&a,&b); printf("%d×%d=%dn",a,b,a*b); } int chufa() { float a,b; printf("Input two integers:"); scanf("%f%f",&a,&b); printf("%.1f÷%.1f=%.5fn",a,b,a/b); } int weishu(){ void num(int a); long a; scanf("%ld",&a); num( a); }void num(int a) { long b=0; int i; for(i=0;a>0;a/=10,i++) { b=(b*10)+a%10; } printf("%d位的,逆序数=%ldn",i,b); } int juanmianji(){ float r,area; printf("请输入圆的半径:"); scanf("%f",&r); area=PI*r*r; printf("圆的面积为:%f",area); } int runnian(){ int a; printf("输入年份:"); scanf("%d",&a); if(a%4==0&&a%100!=0||a%400==0) printf("%d年是闰年n",a); else printf("不是闰年n"); } int chengji(){ int s,y; y=(int)(s/10); printf("Input Score:"); scanf("%d",&s); switch(y) { case 9:case 10: printf("%d的等级为优秀",s);break; case 8: printf("%d的等级为良",s);break; case 7: printf("%d的等级为中",s);break; case 6: printf("%d的等级为及格",s);break; default: printf("%d的等级为不及格",s); } } int jishuhe(){ int i,n; int result=0; printf("请输入n:"); scanf("%d",&n); for(i=1; i<=n; i++) { if(i%2==1) result += i; } printf("奇数和为:%dn",result); return 0; } int oushuhe(){ int n; int i=0,result=0; printf("请输入n:"); scanf("%d",&n); while(i<=n){ i+=2; result += i; } printf("偶数和为:%dn",result); return 0; } int beishu(){ int n; int i=1; printf("请输入n:"); scanf("%d",&n); do{ if(3*(i+1)) printf("%d,",3*i); i++; }while(3*i<=n); } int zhengchu(){ int a,b,i; printf("Input two integers:"); scanf("%d%d",&a,&b); for(i=a;i if((i%3==0)&&(i%5==0)){ printf("%d",i); break; } } } int huashu(){ int hun, ten, ind, n; printf("result is:"); for( n=100; n<1000; n++ ) { hun = n / 100; ten = (n-hun*100) / 10; ind = n % 10; if(n == hun*hun*hun + ten*ten*ten + ind*ind*ind) printf("%d ", n); } printf("n"); return 0; } int zuida(){ int x,y,max; printf("Inputx,y:"); scanf("%d%d",&x,&y); max=GetMax(x,y); printf("max=%dn",max); return 0; } int zuidazuixiao(){ int i, a[2]; printf("input two counts:"); for (i = 0; i < 2; i++) scanf("%d", &a[i]); printf("max is %dn", fun1(a)); printf("min is %d", fun2(a)); } int paixu(){ int a[10]; int i, j, t; cout<<"inpur 10 numbers:"< cin>>a[i]; } cout< for(i = 0; i < 10; i++)//在每轮中进行(10-j)次比较 if(a[i] > a[i+1])//把每两个数中较小的一个移到靠前的地方 { t = a[i]; a[i] = a[i+1]; a[i+1] = t; } } cout<<"the sorted numbers:"< cout<<"a["< int i,j,i1,j1,a[101][101],b[101][101]; printf("please input the number of rows(<=100)n"); scanf("%d",&i1); printf("please input the number of columns(<=100)n"); scanf("%d",&j1); printf("please input the elementn"); for(i=0;i for(j=0;j for(j=0;j #define N 3 int a[N][N],i,j,sum=0; for(i=0;i char str[SIZE]={' '}; int count=0; printf("plz input the stringn"); gets(str); puts(str); int length = strlen(str); for (int i=0;i if(str[i]!=' ') { count++; while(str[i]!=' '&&str[i]!=' ') { i++; } } } printf("%dn",count); return 0; } int jinglianbiao(){ Node* pHead = NULL; //创建链表的头结点,并初始化为NULL pHead = CreateSList(); //调用CreateSList函数创建单链表 printf("n开始打印全部节点:n"); TraversalSList(pHead); //调用TraversalSList函数遍历打印单链表 return 0; } Node* CreateSList2() { int i = 0; int length = 0; int value = 0; Node* pHead = (Node*)malloc(sizeof(Node)); Node* pTemp = (Node*)malloc(sizeof(Node)); Node* pNew = (Node*)malloc(sizeof(Node)); printf("请输入第1个节点的成员:"); scanf("%d", &pNew->member); if (0 == pNew->member) { printf("第一个节点的成员就是0,故无法创建该链表!n"); return NULL; } //while循环,当节点成员不为0时创建 while (0 != pNew->member) { if (0 == i) { pHead = pNew; pHead->next = NULL; pTemp = pHead; } else { pTemp->next = pNew; pTemp = pTemp->next; pTemp->next = NULL; } i++; pNew = (Node*)malloc(sizeof(Node)); printf("请输入第%d个节点的成员:", i + 1); scanf("%d", &pNew->member); } printf("第%d个节点的成员为0,故该链表长度为%dn", i + 1, i); return pHead; } void TraversalSList2(Node* pHead) { Node* pTmp = pHead; //将头节点的指针赋给临时节点pTemp int i = 0; //循环时打印节点个数的控制变量 while (NULL != pTmp) //节点p不为空,循环 { printf("第%d个节点信息:n", i + 1); printf("第%d个节点的成员值为:%dn", i + 1, pTmp->member); i++; pTmp = pTmp->next; } return; } int donglianbiao(){ Node* pHead = NULL; pHead = CreateSList2(); printf("n开始打印全部节点:n"); TraversalSList2(pHead); return 0; } int main() { int a,b,c,d; 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* 13 求水仙花数*n* 14 求最大值*n* 15 求最大最小值*n* 16 冒泡排序*n* 17 矩阵转置*n* 18 求对角线和*n* 19 统计单词个数*n* 20 静态创建链表*n* 21 动态创建链表*n* 22 退出*n***********************************nn"); while(1){ printf("Chose an order:"); scanf("%d",&a); switch(a){ case 1:jiafa();break; case 2:jianfa();break; case 3:chengfa();break; case 4:chufa();break; case 5:weishu();break; case 6:juanmianji();break; case 7:runnian();break; case 8:chengji();break; case 9:jishuhe();break; case 10:oushuhe();break; case 11:beishu();break; case 12:zhengchu();break; case 13:huashu();break; case 14:zuida();break; case 15:zuidazuixiao();break; case 16:paixu();break; case 17:zhuanzhi();break; case 18:duijiaohe();break; case 19:dachigeshu();break; case 20:jinglianbiao();break; case 21:donglianbiao();break; case 22:return 0; } } return 0; }
有用的话点个赞吧拾拾拾!



