第七周作业
所属课程 | C语言程序设计Ⅱ |
作业要求 | https://pintia.cn/problem-sets/1115014478856667136/problems/1115016988736569344 |
课程目标 | 学好C语言 |
具体方面 | 通过完成作业加强编程能力 |
参考文献 | C语言程序设计 |
基础作业
1.函数题:每个单词的最后一个字母改成大写
函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 函数接口定义: void fun( char *p ); 其中 p 是用户传入的参数。函数将 p所指字符串中每个单词的最后一个字母改成大写。 裁判测试程序样例: #include <stdio.h> void fun( char *p ); int main() { char chrstr[64]; int d ; gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ; fun(chrstr); printf("\nAfter changing: %s\n", chrstr); return 0; } /* 请在这里填写答案 */ 输入样例: my friend is happy 输出样例: After changing: mY frienD iS happY
(1)实验代码
void fun( char *p ){ int i; for(i=0;*(p+i)!='\0';i++){ if(*(p+i+1)==' ') *(p+i)=*(p+i)-'a'+'A'; } }
(2)设计思路
1.自定义函数fun
2.使用for语句
3.使用if
(3)本题调试过程碰到问题及解决方法
(4)运行结果截图
2.自动售货机
如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品。用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。 1.jpg 用户购买商品的操作方法是: (1)从“钱币入口”放入钱币,依次放入多个硬币或纸币。钱币可支持1元(纸币、硬币)、2元(纸币)、5元(纸币)、10元(纸币),放入钱币时,控制器会先对钱币进行检验识别出币值,并统计币值总额,显示在控制器显示屏中,提示用户确认钱币放入完毕; (2)用户确认钱币放入完毕,便可选择商品,只要用手指按对应商品外面的编号按钮即可。每选中一样商品,售货机控制器会判断钱币是否足够购买,如果钱币足够,自动根据编号将物品进行计数和计算所需钱币值,并提示余额。如果钱币不足,控制器则提示“Insufficient money”。用户可以取消购买,将会把所有放入钱币退回给用户。 输入格式: 先输入钱币值序列,以-1作为结束,再依次输入多个购买商品编号,以-1结束。 输出格式: 输出钱币总额与找回零钱,以及所购买商品名称及数量。 输入样例: 1 1 2 2 5 5 10 10 -1 1 2 3 5 1 6 9 10 -1 输出样例: Total:36yuan,change:19yuan Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;
(1)实验代码
#include<stdio.h> int main(void) { char a[10][20] = {"Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"}; int b[11] = {0,0,0,0,0,0,0,0,0,0,0}; int c[50]; int i=1, k, sum = 0, money, SUM = 0, change, flag=0; scanf("%d",&money); while((money!=-1)&&(money <= 10)) { sum = sum + money; scanf("%d",&money); } scanf("%d",&c[i]); while(c[i]!=-1) { switch(c[i]) { case 1: case 2: case 3: SUM = SUM + 1;break; case 4: case 5: SUM = SUM + 2;break; case 6: case 7: case 8: SUM = SUM + 3;break; case 9: case 10: SUM = SUM + 4;break; default:break; } if(SUM>sum) { printf("Insufficient money"); flag = 1; break; } i++; scanf("%d",&c[i]); } change = sum-SUM; i = 1; while(c[i]!=-1) { switch(c[i]) { case 1: b[1]++;break; case 2: b[2]++;break; case 3: b[3]++;break; case 4: b[4]++;break; case 5: b[5]++;break; case 6: b[6]++;break; case 7: b[7]++;break; case 8: b[8]++;break; case 9: b[9]++;break; case 10: b[10]++;break; default:break; } i++; } if(flag==0) { printf("Total:%dyuan,change:%dyuan\n",sum, change); for(i=1; i<=10; i++) { if(b[i]==0) continue; else { printf("%s:%d;",a[i-1],b[i]); } } } return 0; }
(2)设计思路
1.设计变量
2.输入钱币值序列
3.使用while输入多个购买商品编号
4.使用switch输入价格
(3)本题遇到问题及解决方法
输入钱币时打错了
(4)运行结果截图