这个做业属于哪一个课程 | C语言程序设计II |
这个做业要求在哪里 | 2019年春季学期第七周做业 |
我在这个课程的目标是 | 我但愿可以经过学习C语言的知识,编写程序 |
这个做业在哪一个具体方面帮助我实现目标 | 这个做业让我知道了掌握数组名做为函数参数的用法,理解指针和数组能够实现相同的操做 |
参考文献 | 字母大小写转换, C 结构体 |
函数fun的功能是:将p所指字符串中每一个单词的最后一个字母改为大写。(这里的“单词”是指由空格隔开的字符串)。html
函数接口定义:c++
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; } /* 请在这里填写答案 */
输入样例:app
my friend is happy
输出样例:函数
After changing: mY frienD iS happY
void fun( char *p ) { for(int i = 0;p[i] != '\0'; i ++) { if(p[i] == ' ') p[i - 1] = p[i - 1] - 32; } }
如图所示的简易自动售货机,物品架一、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一个编号对应一个可操做按钮,供选择商品使用。若是物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上必定会有商品。用户能够一次投入较多钱币,并能够选择多样商品,售货机能够一次性将商品输出并找零钱。
用户购买商品的操做方法是:
(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;
#include<stdio.h> struct { int amount; char Name[15]; int Value; }sold[10] = { {0, "Table-water", 1}, {0, "Table-water", 1}, {0, "Table-water", 1}, {0, "Coca-Cola", 2}, {0, "Milk", 2}, {0, "Beer", 3}, {0, "Orange-Juice", 3}, {0, "Sprite", 3}, {0, "Oolong-Tea", 4}, {0, "Green-Tea", 4} }; int main() { int single = 0, Total = 0, TotalPrice = 0; while (single != -1) { scanf("%d", &single); if(single > 0) Total += single; } single = 0; while (single != -1) { scanf("%d", &single); if (single > 0) { sold[single - 1].amount++; TotalPrice += sold[single - 1].Value; } } if (TotalPrice > Total) printf("Insufficient money"); else { printf("Total:%dyuan,change:%dyuan\n", Total, Total - TotalPrice); for (int i = 0; i < 10; i++) { if (sold[i].amount != 0) printf("%s:%d;", sold[i].Name, sold[i].amount); } } return 0; }
输入一个正整数 repeat (0<repeat<10),作 repeat 次下列运算:
输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的全部字符 c 删除。
要求定义并调用函数delchar(str,c), 它的功能是将字符串 str 中出现的全部 c 字符删除,函数形参str的类型是字符指针,形参c的类型是char,函数类型是void。
输入输出示例:括号内为说明,无需输入输出
输入样例:优化
3 (repeat=3) happy new year (字符串"happy new year") a (待删除的字符'a') bee (字符串"bee") e (待删除的字符'e') 111211 (字符串"111211") 1 (待删除的字符'1')
输出样例:ui
result: hppy new yer (字符串"happy new year"中的字符'a'都被删除) result: b (字符串"bee"中的字符'e'都被删除) result: 2 (字符串"111211"中的字符'1'都被删除)
#include <stdio.h> void delchar(char str[], char c); int main(void) { int repeat; char str[1000], c, temp; scanf("%d%c", &repeat, &temp); int i = 0, j = 0; for (j = 0; j < repeat; j++) { i = 0; while (1) { scanf("%c", &str[i]); if (str[i] == '\n') break; i++; } str[i] = '\0'; scanf("%c%c", &c, &temp); delchar(str, c); } return 0; } void delchar(char str[], char c) { printf("result: "); for (int i = 0; str[i] != '\0'; i++) { if (str[i] != c) printf("%c", str[i]); } printf("\n"); }
具体要求请参看邹欣老师博客 现代程序设计做业
第一步 输入二维数组
第二步 循环进行相邻(上下或左右)的元素的比较(难点),用双for循环比较相邻的元素
第三步 循环比较大小的同时也不断将最大的元素的地址存储在另外一个数组中
第四步 输出最大矩形子数组的和
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
3/2-3/8 | 20h | 300行 | 数组,指针的大体意义,文件入门 | 数组串的使用,指针 |
3/9-3/15 | 25h | 400行 | 二维数组,文件与数组的结合运用 | 双for循环的流程图(再不上课,光自学感受太艰难了) |
3/16-3/22 | 22h | 450行 | 一维数组,二维数组,几种数组排序法 | 字符串使用 |
3/23-3/29 | 20h | 350行 | 字符串的定义及其使用 | 指针的具体使用 |
3/30-4/5 | 15h | 340行 | 指针变量的定义,使用,初始化及其基本运算,指针做为函数参数的做用;使用指针实现函数调用返回多个值 | 指针在运行时内存的变化 |
4/6-4/12 | 13h | 400行 | 数组名做为函数参数的用法,理解指针、数组和地址之间的关系,指针和数组能够实现相同的操做,结构体的定义,使用 | 结构体的具体使用,结构体的流程图 |