C语言程序设计思路

编写一个函数InverseByWord(char *sentence),实现一个英文句子按单词逆序存放的功能,并给出测试程序。
如:This is an interesting programme.
逆序后变为:.programme interesting an is This

程序如下:
#include "stdio.h"
#include "string.h"
void InverseByWord(char *sentence)
{
int n,i,j;
n=strlen(sentence);
for(i=n-1;i>-1;i--)
{
if(*(sentence+i)=='\0')
{
printf("%c",*(sentence+i));
*(sentence+i)='\0';
}
if(*(sentence+i)==' ')
{
n=strlen(sentence);
for(j=i+1;j<n;j++)
{
printf("%c",*(sentence+j));
*(sentence+j)='\0';
}}}
printf("%s\n",sentence);
}
void main()
{
char pStr[100]="This is an interesting programe";
InverseByWord(pStr);
}

怎么对该程序进行说明?就是这个程序的设计思路。本人初学者 在网上找的答案 这个程序看不明白 请解释一下 谢谢 紧急啊 下午交作业啦

代码只是实现了逆序输出,而没有把sentence中的内容逆序,每逆序输出一个单词,都用结束符来替换。

#include "stdio.h"
#include "string.h"
void InverseByWord(char *sentence)
{
int n,i,j;
n=strlen(sentence);// 计算字符串长度。

for(i=n-1;i>-1;i--)// 从最后一个元素开始循环,直到第一个元素

{
if(*(sentence+i)=='\0')//如果是结束符的话,仍然设置为结束符。由于字符串长度不变,所以结束符位置不变。
{
printf("%c",*(sentence+i));// 输出结束符

*(sentence+i)='\0';//设置结束符
}
if(*(sentence+i)==' ')// 如果是空格的话,说明新的单词开始。

{
n=strlen(sentence);// 计算字符串长度

for(j=i+1;j<n;j++)// 从i+1开始输出新的单词

{
printf("%c",*(sentence+j));
*(sentence+j)='\0';// 输出后清除字符。

}}}
printf("%s\n",sentence);//输出字符串
}
void main()
{
char pStr[100]="This is an interesting programe";
InverseByWord(pStr);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-28
需要具体问题具体分析
基本上可以按照以下流程,中间以设计一个成绩单为例:
1 了解问题。要解决问题,必须先了解每个细节。
如要设计一个成绩单,至少要包括录入成绩,成绩统计,成绩排序,成绩输出。
2 确定解决问题的流程,确认输入输出内容即内部需要做的操作。
输入:用户的选择指令,成绩的输入。
输出:程序的运行结果,也就是最终的成绩单。
操作:对成绩读入,对成绩累加得到总分,按照总分排序,输出排序后的成绩单。
3 设计操作算法。得出数据流图
对每块的操作流程做设计。如如何读入成绩,如何排序,如何输出等。
4 编写代码。
将算法实体化,形成C代码。
5 测试并解决问题。
编译运行,尝试输入多组数据,测试结果是否与预期相同。如果不同,那么查找问题并修改代码。最终形成合格的程序。
第2个回答  2015-11-04
1、对于任何语言当然也包含C语言,编程思路都是类似的,都离不开“数学”这个范畴,编程的目的其实根本一点就是对数据进行加工处理,从这一点出发,就理清了一个思路:
2、首先就是建立一个数据模型,C语言的函数库中有丰富的数学函数供调用,用来解决实际问题。其次就是规划变量,哪些使用全局变量,哪些采用局部变量。第三就是规划模块,将要达到的编程目的分成各个模块,这样可以使程序清晰一些,以后修改或扩展都更容易。
第四就是养成一个画流程图的习惯,这样可以在这个过程中会帮助完善很多的编程思路。
第3个回答  2012-07-04
运行一下不就一目了然了吗?
其实就是把字符串pStr按单词为单位逆序输出来。
在遇到第一个空格前两个if是不会执行的,直到遇到空格(programe前面那个),然后就将空格后那个字符输出,紧接着就把输出的字符用'\0'替换掉了。所以输出完programe后字符串就已经少一个单词了的,字符串输出结束后,数组就成空数组了……
希望对你有帮助
第4个回答  2015-10-27

代码只是实现了逆序输出,而没有把sentence中的内容逆序,每逆序输出一个单词,都用结束符来替换。


#include "stdio.h"
#include "string.h"
void InverseByWord(char *sentence)
{
int n,i,j;
n=strlen(sentence);// 计算字符串长度。

for(i=n-1;i>-1;i--)// 从最后一个元素开始循环,直到第一个元素

{
if(*(sentence+i)=='\0')//如果是结束符的话,仍然设置为结束符。由于字符串长度不变,所以结束符位置不变。
{
printf("%c",*(sentence+i));// 输出结束符

*(sentence+i)='\0';//设置结束符
}
if(*(sentence+i)==' ')// 如果是空格的话,说明新的单词开始。

{
n=strlen(sentence);// 计算字符串长度

for(j=i+1;j<n;j++)// 从i+1开始输出新的单词

{
printf("%c",*(sentence+j));
*(sentence+j)='\0';// 输出后清除字符。

}}}
printf("%s\n",sentence);//输出字符串
}
void main()
{
char pStr[100]="This is an interesting programe";
InverseByWord(pStr);
}

相似回答