2019春第七周作业
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2935 |
我在这个课程的目标是 | 熟练运用指针 |
这个作业在那个具体方面帮助我实现目标 | 更加熟练使用结构体 |
参考文献 | 挑战程序设计 |
第一题
6-2 每个单词的最后一个字母改成大写 (10 分)
函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。
函数接口定义:
void fun( char *p );
其中 p
是用户传入的参数。函数将 p
所指字符串中每个单词的最后一个字母改成大写。
裁判测试程序样例:
1 #include <stdio.h> 2 void fun( char *p ); 3 int main() 4 { 5 char chrstr[64]; int d ; 6 gets(chrstr); 7 d=strlen(chrstr) ; 8 chrstr[d] = ' ' ; 9 chrstr[d+1] = 0 ; 10 fun(chrstr); 11 printf(" After changing: %s ", chrstr); 12 return 0; 13 } 14 15 /* 请在这里填写答案 */
输入样例:
my friend is happy
输出样例:
After changing: mY frienD iS happY
实验代码(自定义函数)
1 void fun(char * p) 2 { 3 int len = strlen(p); 4 for (int i = 0; i < len; i++) 5 { 6 if (p[i + 1] == ' ') 7 p[i] =p[i]- 32; 8 } 9 return; 10 }
设计思路
调试过程中遇到的问题及解决方法
无
运行结果截图
第二题
7-2 自动售货机 (30 分)
实验代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define MAXN 10000 4 int balance; 5 6 struct shop { 7 int num = 0; 8 int price[10] = { 1,1,1,2,2,3,3,3,4,4 }; 9 char str[10][100] = { "Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea", "Green-Tea" }; 10 }; 11 12 13 int main(int argc, const char * argv[]) 14 { 15 struct shop name[11]; 16 int sum = 0, change, money, i = 0, number[MAXN]; 17 18 while (1) { scanf("%d", &money); if (money == -1)break; sum += money; } 19 balance = sum; 20 while (1) { scanf("%d", &number[i++]); if (number[i - 1] < 0)break; } 21 22 23 for (int j = 0; j < i; j++) { 24 if ((balance - name[number[j] - 1].price[number[j] - 1] >= 0) && number[j] != -1) { 25 balance -= name[number[j] - 1].price[number[j] - 1]; 26 name[number[j] - 1].num++; 27 } 28 if (balance - name[number[j] - 1].price[number[j] - 1] < 0) { cout << "Insufficient money" << endl; return 0; } 29 if (number[j] == -1) { break; } 30 } 31 32 33 cout << "Total:" << sum << "yuan,change:" << balance << "yuan" << endl; 34 for (int j = 0; j < 10; j++) 35 { 36 if (name[j].num != 0)cout << name[j].str[j] << ":" << name[j].num << ";"; 37 } 38 39 40 return 0; 41 }
设计思路
本题调试过程中遇到的问题及解决方法
这道题我被坑惨了,先是题意,上面说每当判断一个商品就会看余额够不够,不够就输出“Insufficient money”,我一开始一为是假如第一个商品钱够,第二个不够,就会输出 XXX(商品):1;然后换行输出“Insufficient money”,结果是只要其中有一个钱不够,就输出“Insufficient money”,太坑了!然后是第二点是我自己坑自己,商品名称,我把“-”号打成“_”然后一直错误错误,发现结果是错了名字之后想拍死自己,各位一定要认真看变量名啊啊啊啊啊啊!!!
运行结果截图
第三题
7-1 使用函数删除字符串中的字符 (10 分)
实验代码
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 6 void delchar(char * arr, char zf) { 7 int len = strlen(arr); 8 int count=0; 9 vector<char> str; 10 str.clear(); 11 for (int i = 0; i < len; i++) 12 { 13 str.push_back(arr[i]); 14 if (arr[i] == zf) 15 { 16 str.erase(str.begin()+(i-count)); 17 count++; 18 } 19 } 20 int x = len - count; 21 cout<<"result: "; 22 for(int i = 0 ; i < x ;i++) 23 cout << str[i]; 24 cout<<endl; 25 } 26 27 int main(int argc, const char * argv[]) 28 { 29 int T; 30 cin >> T; 31 while (T--) { 32 char str[1000]={'