这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2935 |
我在这个课程的目标是 | 熟练运用指针 |
这个作业在那个具体方面帮助我实现目标 | 更加熟练使用结构体 |
参考文献 | 挑战程序设计 |
函数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("\nAfter changing: %s\n", 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 }
无
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 }
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]={'\0'},zf;
33 string s;
34 getchar();
35 getline(cin,s);
36 int len = s.length();
37 for(int i = 0 ; i < len ; i++){str[i] = s[i];}
38 scanf("%c",&zf);
39 delchar(&str[0],zf);
40 }
41
42 return 0;
43 }
-------------------------------------------------------------------------------------------------------------------------
讲一下挑战作业关于我自己不成熟的思路吧,就是用深度搜索去找出每一个正数块,然后找出每个正数块的最小权值路径,连接起来,并且判断连接后的块是否比单独最大块大,如果没有,则输出单独块。但是关于找最小权值路径的复杂度似乎有点小大...而且块边缘处理不是很成熟,有点难搞,不过可以去尝试着挑战一下第二种情况,感觉还行..如果要全部情况同时完成..(对不起,打扰了)。
|
存在的问题 | 心得 | 完成作业消耗时间 | 本周学习内容 | |
第一周 | 对文件读取数据的运用不是很熟练 | 多去看关于刷题的书籍,有助于提高自己写题能力,实在不会的可以参考大佬的代码,加以自己理解之后去默写几遍 | 半个小时左右 | 文件输入,BFS,DFS,PARTITION算法及简单的贪心算法 | |
第二周 | 对单纯用数组完成双向链表的操作还是太生疏了,说明对双向链表的运作原理不熟 | 推荐两本比较好的书《挑战程序设计》《算法竞赛》 | 半个小时左右 | vector数组及list双向链表操作 | |
第三周 | 指针的概念太久没记有点生疏了 | 对vector数组使用愈加熟练 | 一小时左右 | 数据结构 | |
第四周 | 对联通二维数组的最大子数和自闭了 | 多看些算法,不然写题目用什么方法去解决都弄不清 | 基础题目10分钟,挑战作业现在都在自闭中 | 迭代器 | |
第五周 | 最小权值路径最优解该用什么解法 | 多思考一下如何优化自己的代码,会有新的收获 | 一个小时 | 递归和分治法 |
本文转载自:https://www.cnblogs.com/xiangqi/p/10680559.html