请以思惟导图总结本周的学习内容,以下图所示:
描述本周学习感觉,也能够在这里提出你不理解地方,对教师教学建议等。
感受指针真的像指针同样,好绕,让我不能理解,甚至很懵,课后从新看了书,看视频后,理解了一点点,可对于题目,这远远不够啊!深入的记得星期五晚上,一直在作一个题目,仍是作不出来(真的好绝望),问了其余同窗也没有解决,次日早上起来,想到了它尚未作完,就看看,仍是不能解决,因而我想到了百度!结果按百度上的作法也是错的!真的好无奈!
在excel中画以下表格,保存好,复制到博客随笔。注意要累计全部代码量。
贴图展现。
填写本次题目集的总得分。 <span style ="color:red">注意,请把PTA代码展现给批阅助教,并能完整回答助教问题,才能得满分。不然根据回答状况给分。</span>
从PTA中选1题你最满意的题目,题目选难度越大,分值越高:
简要介绍题目,如:
7-2 说反话-增强版 (20 分) 给定一句英语,要求你编写程序,将句中全部单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。 输出格式: 每一个测试用例的输出占一行,输出倒序后的句子,而且保证单词间只有1个空格。 输入样例: Hello World Here I Come 输出样例: Come I Here World Hello
以伪代码方式描述算法思路。伪代码注意文字+C语法方式描述,不要纯C代码或者C代码直接翻译,能作到看了伪代码就知道你的思路是如何。
char t[MAX]; //定义一个字符数组 while ((s=getchar()) != '\n') //getchar每次读入一个字符 { if (s != ' ') { flag = 1; //表示输入的不是空格 } else if (count > 0) { continue; //知足则跳过下一条语句 } else if (flag) { t[i++] = s; //只有以前遇到单词的状况下碰到空格才把这个空格写入目标字符串 } for (i-=1; i>=0; i--) //i-=1.i=i-1,最后一个标号为i里面是不存东西的 { if (t[i] != ' ') { count ++; // 用 count 统计单词中字母的个数 } else if (t[i]==' ' && count > 0) { for (j=i+1; j<=i+count; j++) { printf("%c", t[j]); //遇到空格就输出单词 } printf(" "); count = 0; } } // 还剩最后一个单词没输出,由于最后一个单词可能前方无空格 ,只完成了count++,可是没有遇到 空格,那么逻辑是同样的 for (j=i+1; j<=i+count; j++) { printf("%c", t[j]); // 倒序输出字符。 }
贴图展现代码,不要复制,如
根据提交列表,简要描述下调试程序碰到的问题及解决办法。
Q1:出现编译错误和格式错误。 A1:定义的数组的长度过小了!编译过不去。 Q2:最后一个测试点过不了,运行时错误。 A2:找同窗的代码来看,比较代码的不一样。
在函数那章,咱们已经实现小学四则运算这份做业,如今要求你们把以前设计函数升级改造,原来的函数你们都是用全局变量实现不一样函数参数传递,此次做业要求改地址传递,减小全局变量的使用。
题目有3个难度级别,分别为: 第一级是1位数的一步加减乘除计算 第二级是2位数的2步加减运算 第三级是3位数的2步加减运算
3.表达式运算算法
主要上述三个函数的改造说明
把随机数存放到一维数组里面
产生随机运算符,把运算符存放到字符数组ch[2]里面,求出式子结果;
Num(class); op(class,Num); //调用两个函数生成式子; if(grade==1) { srand(time(NULL)); k=rand()%4; switch(k) { case 0~3: ch[0]=' '; result=q[0]+q[1]; break; } } else { srand(time(NULL)); k=rand()%4; switch(k) { case 0~3: ch[0]=' '; ch[1]=' '; result=q[0]+q[1]+q[2]; break; } } return result; //返回结果;
改造前: 不一样点:代码直接生成随机数就放在哪儿了,没有返回给主函数。 优势:代码简洁易懂。 缺点:代码的步骤基本同样,有点浪费代码行,代码量相对较少。 改造后: 不一样点:用指针把玩家的等级传进来,把随机数存放到一个数组里面。 优势:不用使用全局变量来进行计算。 缺点:在这个函数须要多定义几个变量,和定义一个一维数组。
改造前: 不一样: 产生随机运算符和题目都放在一块儿。 优势:都放在一个函数里, 总体感很强。 缺点:代码拢堆在一块儿,让读者不太好阅读。 改造后: 不一样:把结果,运算符和式子分开; 优势:看起来更清晰。 缺点:分散在两个函数里,使读者跳跃性的阅读,函数调用太繁琐。
改造前: 不一样:和随机数和运算符放在同一个函数里。 优势:不用调用其它函数就能够完成。 缺点:一个函数里的代码行太长,很差阅读,会让读者产生厌恶感,不想读下去。 改造后: 不一样:单独放在一个函数里面,随机数和运算符经过传参进来,随机数放到一个一维数组里。 优势:随机数放到数组再用指针传进来使用,大大提升效率和减小了相同步骤的屡次运行,也减小了代码量。 缺点:用指针容易出错。
回顾两次做业编写过程,总结碰到问题及后续程序编写注意事项。
在编程过程当中会碰到,在函数调用传参的时候会有问题,会出现“expected primary-expression before 'int'的错误,我不知道这是什么错误,注意:在编程量大的时候要注意花括号对齐,否则容易缺乏。函数调用以前必定要声明。在使用变量以前要定义,防止后面忘记了。必定要理清传参的关系。