C语言语句执行顺序(初学者)

#include<stdio.h>
void main()
{int i=0,num=0;
char str[100],c;
gets(str);
do{while((c=str[i])==‘’)i++;
if(c!='\0')num++;
while((c=str[i])!=''&&c!='\0')i++;}
while(c!='\0');
printf("number of word :%d",);
}
原题是输入一行字符,统计有多少个单词
我不明白从do开始(也就是这部分do{while((c=str[i])==‘’)i++;
if(c!='\0')num++;
while((c=str[i])!=''&&c!='\0')i++;}
while(c!='\0');
)执行后的执行顺序以及各语句意义
望知情者解释一下,主要是先执行什么语句,然后依次怎么执行啊
初学者,谢了希望解释详细一点主要是执行顺序

先执行do { } while()这个语句中括号部分,执行完后判断while语句是否成立,成立则继续执行中括号中语句,如此循环。中括号中部分,while((c=str[i])==‘’)i++;是先执行c=str[i]这个赋值语句,然后判断c的值是否等于' ',等于的话就执行i++,然后继续执行c=str[i],如此循环。while((c=str[i])!=''&&c!='\0')i++;是先执行赋值语句c=str[i],然后判断c是否等于' ',等于的话再判断c是否等于'\0',两个条件都成立的话就执行i++,如此循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-10
#include <stdio.h>
void main()
{int i=0,num=0;
char str[100],c;
gets(str); /* 1 */
do{while((c=str[i])=='')i++;/* 2 */
if(c!='\0')num++;/* 3 */
while((c=str[i])!=''&&c!='\0')i++;} /* 4 */
while(c!='\0'); /* 5 */
/* 也就是第2~5个语句循环执行直到c不等于空字符为止。 */
printf("number of word :%d", num); /* 6 */
}
好像这个程序有错误
第2个回答  2012-03-10
你是只计算单词,还是计算这个字符的整体长度?
#include<stdio.h>
void main()
{
int i=0,num=0;

char str[100],c;

gets(str);

do{
while((c=str[i])==' ')i++;

if(c!='\0')i++;

while((c=str[i])!=' '&&c!='\0')i++;

}while(c!='\0');
printf("number of word :%d",i);
}
写c语言要注意格式清晰,上面这个是计算所有字符的。从do开始进入进入while,在while中判断是否是空格,是就累加i,不是就结束while循环。进入if语句,判断当前是否读到字符串末尾。然后是进入while((c=str[i])!=''&&c!='\0')i++;。。。。最后一个while是控制do-while整体循环的。。。。。。。。。。其实吧统计字符用不到这么麻烦
#include<stdio.h>
void main()
{
int i=0,j=0;

char str[100];

gets(str);

while(str[j]!='\0'){i++;j++;}

printf("number of word :%d",i);
}
这样一样可以计算这个字符的长度。。。。。。。就这些吧,
第3个回答  推荐于2016-07-19
初学时要注意格式,运行过了,正确!
#include<stdio.h>
void main()
{
int i=0,num=0;
char str[100],c;
gets(str);
do
{
while((c=str[i])==' ')/*while循环的作用是把数组st[100]r中的第一个字符赋值给c。
最开始i=0,如果第i个字符是空格,执行语句i++;继续循环。当遇到字符时(也就是开始出现单词时)结束while循环,执行下一步操作*/
i++;
if(c!='\0')/*如果c的值不等于‘\0’,即不是结束符,那么num++;(计算单词的数量)*/
num++;
while((c=str[i])!=' '&&c!='\0')/*如果c不等于空格符,那么i++;直到第i个字符为空格时,结束循环。
然后再一次执行do{}while整个大循环,直到整个字符数组的中出现‘\0’,即结束符*/
i++;
}while(c!='\0');
printf("number of word :%d\n",num);
}本回答被提问者采纳
相似回答