c语言中while表达式判断有先有后

本文介绍了一个C语言程序,该程序能够去除字符串中的多余空格,只保留单个空格进行单词间的分隔。通过使用while循环和条件判断,程序遍历输入的字符串,并将处理后的结果输出。

while中的表达式是先判断第一个,如果第一个正确,就会执行第二个,判断第二个,以此类推。如果第一个表达式错误,后面就不会执行判断。



#include <stdio.h>
#include <string.h> 




//实现讲字符串多余空格清除,只保留一个空格 
void deblank(char string[])
{
char *string1=string;
int i=0,j=0 ,k=0;
while(string1[i]!='\0')
{
string[j]=string1[i];
if(string1[i]==' ')
k=1;
i++;
while(k&&(string1[i]==' '))
{
i++;
}
k=0;
j++;  
}
string[j]='\0';
}
int main(int argc, char *argv[])
{
char string[]="sd    fs df";
deblank(string);
printf("%s",string);
return 0;
}
### C语言 `while` 循环的用法及表达式 #### 基本概念 C语言中的 `while` 语句是一种循环控制结构,允许程序根据指定条件反复执行一段代码。其基本形式如下: ```c while (表达式) { // 循环体 } ``` 当 **表达式** 的值为真(非零)时,循环体会被重复执行;一旦 **表达式** 的值变为假(零),循环终止。 --- #### 表达式的定义 在 `while` 循环中,**表达式** 是决定循环是否继续的关键部分。它可以是一个简单的布尔值、关系运算符的结果或者更复杂的逻辑组合。只要该表达式的求值结果是非零,则认为条件成立,循环将继续运行[^1]。 --- #### 示例:计算阶乘 M! 下面展示如何利用 `while` 循环来计算给定正整数 \(M\) 的阶乘 (\(M!\)): ```c #include <stdio.h> int main() { int m = 5; // 输入数值 M int n = 1; // 初始因子 double sum = 1; // 结果初始化 while(n <= m) { // 当前因子小于等于目标值时进入循环 sum *= n; n++; } printf("Factorial of %d is %.0f\n", m, sum); return 0; } ``` 此示例通过不断更新变量 `n` 和累加至 `sum` 来完成阶乘计算过程。 --- #### 关于其他循环对比 (`do...while`) 除了标准的 `while` 外,还有 `do...while` 这种变体。两者的主要区别在于条件检测的时间点不同 —— `do...while` 总是先执行一次循环体再验证条件,而普通的 `while` 需要在每次迭代之前就确认条件是否满足[^2]。 以下是使用 `do...while` 输出数字序列的例子: ```c #include <stdio.h> int main() { int i = 1; do { printf("%d ", i); // 显示当前索引 i++; // 自增操作 } while(i <= 10); return 0; } ``` 上述代码片段即便初始设定不符合预期范围也会至少显示第一个项目。 --- #### 注意事项 构建涉及复杂逻辑或嵌套层次较高的循环时务必小心处理边界情况以及可能引发无限循环的风险。另外,在解析某些特定输入比如字符串结束标志等方面可能会依赖额外约定如换行字符充当分隔信号[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值