依然在做字符串的编程练习。从上午到现在写了三个程序,一个菜单,失败,我到现在还没想出要怎么解决。不过完成了另一个,修改了好久,刚刚可以正常运行。
题目是这样的,让一个字符串中的单词反向输出。
我是这样 想的,从后开始判断空格字符在哪,然后把指针指向那个空格之后的一个字符,再使用for控制输出后面的字符,遇到空格或结束符刚结束。早上就是这样想的,但其实总有一个大问题,就是在字符串的最开头是没有空格和结束符的,我该如何控制它结束呢,我完全没想出来,结果下午去上学,就想了一个方法,可以解决。
是用一个:
for(n=0;n<LIN-1;n++)
{
if(str[n]==' ')
{
m=n;
puts("aaaa");
printf("%d/n",m);//测试程序运行到这里有没有错
break;
}
}
来控制最前面的一个空格。再使用一个:
for(p=0;p<LIN-1;p++)
if(str[p]!=' ')
printf("%c",str[p]);
else
break;
printf("/n");
控制输出第一个单词。
我写的程序是这样的:
#include <stdio.h>
#include <ctype.h>
#define LIN 14
int main()
{
char str[LIN]="see you later";//定义一个字符串
char *pr=str;//指向str的指针
int i,j,n,m,p;//控制循环的变量
for(n=0;n<LIN-1;n++)
{
if(str[n]==' ')
{
m=n;
puts("aaaa");
printf("%d/n",m);//测试程序运行到这里有没有错
break;
}
}
for(i=LIN-1;i>=m;i--)
{
if(str[i]==' ')
{
pr=&str[i+1];//指向空格之后的字符
for(j=0;j<LIN-i;j++)//循环输出最后一个空格之后的字符
{
printf("%c",*(pr+j));
if((*(pr+j))==' ' || (*(pr+j))=='/0')//控制两个字符之间(即一个单词)或最后一个单词的输出
break;
}
printf(" ");
}
}
for(p=0;p<LIN-1;p++)
if(str[p]!=' ')
printf("%c",str[p]);
else
break;
printf("/n");
return 0;
}
//2009.1.17
//从上午做到现在
在修改时我又多次有求助的冲动,但还是耐着性子继续查看错误。一个一个的改,终于,运行通过。
发现原来以前对continue与break还有一点误解,这是错误之一;
其它的小太多了。但一个一个改后,现在很开心啊,我深深地知道,如果求助于人,即便能让程序运行通过,我也不会开心,于是我坚持了下来,从上午坚持到下午。刚刚完成时,我觉得心里好快乐。
这就是程序员吧, 总喜欢解决问题的那一刻的快乐,其实,就等着那一颗啊!!!
加油。
我继续完成《C primer plus》的编程练习。很笨啊我,看字符串与指针这一节很久了,一个多星期了,或者更久,到现在还没完成。
我这样一个没天赋的人,也许就只能勤能补拙啦。戴尔·卡耐基说,当一切聪明与天赋都不管用 时,你只能忍耐。于是我忍耐了下来,终于,得到了那一科的快乐了。
愿天天快乐,YLJ。自我鼓励一下,哈哈。
来CSDN写博客,是因为我知道,这里很好。而最重要的原因,我想记下那快乐的感觉,有那种感觉,才能继续充满力量的学习编程。而且一切问题都由自己解决,自己也能得出很多解决问题的问题,我在上面的程序中,刚开始写成时,错误多多,我意识到一点一点查很麻烦,于是,我想到了用puts()来测试程序能正常走到哪,然后再往后判断,就简单多了。