C学习笔记

依然在做字符串的编程练习。从上午到现在写了三个程序,一个菜单,失败,我到现在还没想出要怎么解决。不过完成了另一个,修改了好久,刚刚可以正常运行。

 

题目是这样的,让一个字符串中的单词反向输出。

 

我是这样 想的,从后开始判断空格字符在哪,然后把指针指向那个空格之后的一个字符,再使用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()来测试程序能正常走到哪,然后再往后判断,就简单多了。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值