感觉:指针这一节开始学习的时候只知其一;不知其二的,本身的知识点理解不够到位,不太理解函数接口的指针与数组之间的联系,作题时也感受概念模模糊糊的,指针比较抽象,很差理解,调试的过程当中有时候走到哪里都不知道了,如今的练习量不够因此感受不习惯用指针。若是说计算机领域是星辰大海的话,那么我如今应该在纳米吧,呃,说不定是个微米。但愿本身仍是多多理解一些概念,多看看别人优秀的代码。 学到的知识:1.一些函数的使用,好比strcpy,strcat等。2.一些函数与指针之间的关系。3.更加具体的了解变量内存的形态,地址与指针的关系。
题目简介: 给定一句英语,要求你编写程序,将句中全部单词的顺序颠倒输出。
char ch[500010];字符数组 int count ;用来计单词个数 for (i=len(ch)to 0)//从尾部读入 { if (ch[i]!=' ')若是遇到的不是空格的话,单词个数加 count ++; if(ch[i]>='A'&&ch[i]<'Z')遇到字符的话 { 立flag控制空格 for(j=i to i+count ) printf 单词 立count从新为0 } if(count>0) { printf空格; for(i=0 to count-1) printf最后单词
- Q1.一开始的思路作单词顺序也是倒的 - A1.参考了同窗的代码用数组的方式来作 - Q2.输出最后一个单词只有第一个字母 - A2.以后查看是不是最后控制输出的是时候的范围不对,结果就发现最后控制输出应该是直接到ch[i].
题目:实现小学四则运算。算法
int num1,num2,num3;//分别是三位计算数产生随机数范围 switch(data) { case 1:num1,num2,num3rand()%10; case 2:num1,num2,num3rand()%100; case 3:num1,num2,num3rand()%1000; } if(num2>num1)//防止负数结果 { 交换num1,num2; } if(data==1) { int jk=rand()%4;//随机产生两个随机式子 switch(jk) { case 1:strcpy(exp,"+");*answer=num1+num2;printf("%d %s %d=__?__\n",num1,exp,num2); case 2:strcpy(exp,"-");*answer=num1-num2;printf("%d %s %d=__?__\n",num1,exp,num2); case 3:strcpy(exp,"*");*answer=num1*num2;printf("%d %s %d=__?__\n",num1,exp,num2); case 4:strcpy(exp,"/");*answer=num1/num2;printf("%d %s %d=__?__\n",num1,exp,num2); } } data==2||data==3 与data==1处理方式相同,不过我多加成两步运算 else if(data==2||data==3) { int jk=rand()%4; switch(jk) { case 1:strcpy(exp,"+");*answer=num1+num2;printf("%d %s %d=__?__\n",num1,exp,num2); case 2:strcpy(exp,"-");*answer=num1-num2;printf("%d %s %d=__?__\n",num1,exp,num2); case 3:strcpy(exp,"+");*answer=num1+num2+num3;printf("%d %s %d %s %d=__?__\n",num1,exp,num2,exp,num3); case 4:strcpy(exp,"-");*answer=num1-num2-num3;printf("%d %s %d %s %d=__?__\n",num1,exp,num2,exp,num3); } }
if a[i]=='/' num1%num2!=0 and num2!=0 and num3!=0 不然 continue ;//跳出while循环 防止负数的步骤在函数1中
int wong,right;//正确答案与错误答案 int result; 用户输入答案 比较用户答案与正确答案; if (results == *answer) { CorrectResponse();//调用正确答案评语 right++; } else { IncrrectResponse(); wrong++; } int ch; printf("\n\t\t\t提示:输入2结束游戏,输入其余数字继续游戏\n"); scanf("\n\t\t\t%d",&ch); while(1) { if(ch==1) continue; else if(ch==2) goto end;//中途玩家不想玩在提示处输入2则结束游戏 } int correct; printf("\n\t\t\t回答正确%.f题,回答错误%.f题\n", right, wrong);// correct=right/(right+wrong)*100.0; gettimeofday(&end, NULL); printf("\n\t\t\t\t作题总用时%ld秒\n",timer); printf("\n\t\t\t正确率为百分之%.f",correct);
函数1:函数1是改动最大的地方,开始的作法是三级分别处理,封装为三个函数,改动以后三级产生随机产生式子封装在一个函数中,代码量大大减小,不过修改以后的代码问题是当两步运算时候运算符是同样的。以前的代码加减乘除给出正确答案是用四个函数来封装,修改以后直接在产生运算式那里给出正确答案。 函数2: 函数二在以前的做业中没有实现,此次修改没有用到指针,而是直接用暴力解决,虽然知道这样作很容易致使循环程序崩溃,但一时没有好的改进方法和个人代码结合,看了其余同窗的代码,我以为方法很值得我学习,接下来也会进一步完善。 函数3: 函数3在原来的基本上是没作太大的修改的,基本思路是给用户输入答案,判断答案是否正确,给出正确或错误的评语,计算正确和作错误答案的个数,结束页面。
此次的大做业修改蛮大的,不过修改以前的代码的一些不足,好比考虑了输入非法字符,外加了计算用户回答答案的时间函数。最开始的代码由于main中须要作太多的功能,我就先把main分解在几个函数中,发现三个级别的运算都相差不太大,就想着在把三级运算产生随机数那部分修改在一个函数在一块就行了,结果我太天真了,那样作以后发现我三级运算就要算乘除运算,考虑用户计算有难度,就再次修改了。还有加减乘除那四个函数运算正确答案那一块原本想着不作修改的,一改就不可收拾了,我不太会使用指针,要用指针修改,难度对我来讲就大大加大了,虽然强硬改了以后的代码量少了许多,不过感受本身代码很丑,并且有些乱。接下来还要改成文件版的,但愿此次的修改可以稍微方便一点下一的改进吧。