提交要求:
1:邮件名称:学号后三位-题⽬编号-姓名-期中考试。例如:098-1-沈苗-期中考试
2:不⽤附件提交,直接写邮件,内容包括编程思路(写⼀段⾃⼰对题⽬的认识、思路、技术细节等)、源代码、运⾏结果分析和截图题⽬:
1.编程先由计算机“想”⼀个1到100之间的数请⼈猜,如果⼈猜对了,则结束游戏,并在屏幕上输出⼈猜了多少次才猜对此数,以此来反映猜数者“猜”的⽔平,否则计算机给出提⽰,告诉⼈所猜的数是太⼤还是太⼩,最多可以猜10次,如果猜了10次仍未猜中的话,则结束游戏。编程思路:
1)计算机“想”⼀个1-100的数,则需要程序在运⾏的时候随机产⽣⼀个1-100之间的⾃然数,需要使⽤rand()和srand((int)time(0))函数; 2)猜数者“猜”数:则是⽤户每次输⼊的数字与随机产⽣的数进⾏⽐较,使⽤if..else..进⾏判断; 3) 猜数者只有10次机会,则需要使⽤for或while循环进⾏控制次数,本程序选择使⽤for循环; 4)另外程序结束和程序判断,需要引⼊return、break、couture等配合;源代码:
#include Author:南⾮波波 E-mail:qingbo.song@gmail.comgithub:@swht */ /* *产⽣1-n之间的随机数 *注意:请配合srand((int)time(0)); */ int RandNum(n){ return rand()%n + 1;} int main(){ srand((int)time(0)); //设置随机数种⼦ int num = RandNum(100),int_num,i,min=0,max=100; printf(\"%d\\n\ for(i=1;i<=10;i++) { printf(\"===============第%d次=======================\\n\ printf(\"请输⼊⼀个幸运数字:\"); scanf(\"%d\ if (int_num >100 || int_num < 1) { printf(\"你输⼊的数为%d,不在1-100之间.请重试!\\n\ continue; }else if(int_num == num){ printf(\"恭喜你猜中幸运数字,你猜中的幸运数字为:%d,第%d次猜中.\\n\ return 0; }else{ printf(\"你猜的幸运数字不正确,请重试!\\n\"); if(int_num > num ) { max=int_num; printf(\"幸运数字范围缩⼩为%d-%d!\\n\ }else{ min=int_num; printf(\"幸运数字范围缩⼩为%d-%d!\\n\ } continue; } } printf(\"你猜数字次数已达10次上限,很抱歉你未能猜中幸运数字,程序退出!\\n\"); return 0; } 输出截图: 运⾏结果分析: 该源码程序会在第⼀⾏提⽰当前为第⼏次输⼊,提⽰⽤户输⼊的幸运数字缩⼩的范围,最终⽤户正确猜中显⽰⽤户猜中的数字和当前次数,或者⽤户输⼊达到10次,程序遗憾退出!2. 题⽬描述:任意给定n个整数,求这n个整数序列的和、最⼩值、最⼤值 输⼊描述:输⼊⼀个整数n,代表接下来要输⼊的整数个数,n<=100,接着输⼊n个整数输出描述:输出整数序列的和、最⼩值和最⼤值,⽤空格隔开,占⼀⾏样例输⼊:21 2 样例输出:3 1 2编程思路: 1)⽤户输⼊的元素个数不定,需要引⼊数组的概念进⾏实现; 2)求和,既是转变成数组元素遍历,元素值累加,求和,使⽤for循环进⾏处理; 3)求最⼩数,既是转变成元素遍历,⽐较各元素⼤⼩,求出最⼩值,使⽤for循环嵌套if判断进⾏处理; 4)求最⼤数,既是转变成元素遍历,⽐较各元素⼤⼩,求出最⼤值,使⽤for循环嵌套if判断进⾏处理;源代码: #include Author:南⾮波波 E-mail:qingbo.song@gmail.comgithub:@swht */ int MaxNum(int num[],int n)/* *传⼊⼀个整数型数组和对应数组的长度,输出数组元素值最⼤的下标 */{ int i,maxnum=num[0],maxi=0; for(i=0;i maxnum=num[i]; maxi=i; } } return maxi;} int MinNum(int num[],int n)/* *传⼊⼀个整数型数组和对应数组的长度,输出数组元素值最⼩的下标 */{ int i,minnum=num[0],mini=0; for(i=0;i return mini;} int SumNum(int num[],int n)/* *传⼊⼀个整数型数组和对应数组的长度,输出数组所有元素的和 */ { int i,sum=0; for(i=0;i return sum;} int main(){ int num[100],i,n,imax,imin,sum; printf(\"请输⼊即将要输⼊整数的个数(1-100):\"); scanf(\"%d\ if(n>100||n<1) { printf(\"你输⼊的数值不正确,整数个数数值要求在1-100以内!程序退出!\"); return 0; } printf(\"请依次输⼊%d个整数:\ for(i=0;i imax = MaxNum(num,n); imin = MinNum(num,n); sum = SumNum(num,n); printf(\"%d,%d,%d\\n\ return 0;} 截图: 运⾏结果分析: 在运⾏结果正确的情况下,对程序进⾏优化处理,将数组求和、求最⼩数、求最⼤数封装成函数,只要传⼊整数型数组和数组的长度,即可实现函数返回数据元素和、数组最⼩元素下标和数组最⼤元素下标; 增加判断⽤户输⼊即将要输⼊的元素个数进⾏判断,⼤于100和⼩于1的进⾏异常退出操作; 如果⽤户输⼊的元素不⾜,则程序不会退出,知道⽤户输⼊元素个数满⾜之前预定的数值,回车才能进⾏后续处理: 对于输⼊元素个数超出之前预定个数,则按照顺序仅取前n个元素值: 3. 外卖费。上了⼀上午的课,终于到了午饭时间,⼤家讨论中午吃什么,有⼈说吃⾷堂盖饭,有⼈说吃海底捞,最后宿舍长⼤⼈⼀拍桌⼦,说:叫外卖!于是开始打电话叫外卖,规则如下:每单少于20元(不含)不予以送餐,每单在20(含)到30(不含)元之间收取8块钱送餐费,每单在30(含)到40(不含)元之间收取5元送餐费,每单在40(含)元以上免费送餐,请你计算这顿午餐的全部费⽤。 输⼊格式:输⼊共2⾏,第⼀⾏包括⼀个整数n(n>=1&&n<=20),表⽰这⼀单⼀共要了⼏个菜,第2⾏有n个浮点数,以空格分开,表⽰每个菜的价格 输出格式:输出1⾏,包含⼀个浮点数,表⽰全部外卖费,保留⼩数点后⾯2位,当不够送餐服务时,输出error输⼊样例:3 10.5 11.5 10.5输出样例:37.50编程思路: 1)分阶段收取配送费,选择使⽤switch..case或if..else..语句进⾏判断; 2)输⼊菜品个数不定,使⽤数组的概念,加⼊for循环遍历数组读取输⼊的值;源代码: #include #include Author:南⾮波波 E-mail:qingbo.song@gmail.comgithub:@swht */ int main(){ int n,i; double sum,totalsum,num[100]; printf(\"请输⼊预定餐品数量:\"); scanf(\"%d\ printf(\"请输⼊每个餐品的价格:\"); for(i=0;i if(sum >= 20 && sum < 30) { totalsum=sum+8; printf(\"你此次外卖费(包含运费8元):%.2lf\\n\ }else if(sum>=30 && sum < 40) { totalsum=sum+5; printf(\"你此次外卖费(包含运费5元):%.2lf\\n\ }else if(sum >= 40) { totalsum = sum +0; printf(\"你此次外卖费(免运费):%.2lf\\n\ }else{ printf(\"你此次外卖费⼩于20元,不予配送,感谢你的⽀持!\"); } return 0;} 截图: 运⾏结果分析: ⼀定要注意⽤户输⼊的个数和输⼊价格不符的情况,否则引起程序异常。另外需要注意在计算sum值的时候,⽐较sum值⼤⼩是不包含运费在内的。 因篇幅问题不能全部显示,请点此查看更多更全内容