【C语言】倒序输出

相信你是最棒哒!!!

文章目录

输入描述

正确代码


输入描述

 输入包括一行。 第一行输入的字符串(含空格)。

输出描述

输出转换好的逆序字符串。

样例输入
I am a student!
样例输出
!tneduts a ma I

正确代码

注释版

#include <stdio.h> 

int main() 
{
    char a[111]; // 定义一个字符数组a,大小为111,用于存储输入的字符串
    int i; // 定义一个整型变量i,用于循环计数

    gets(a); // 使用gets函数读取一行输入,包括空格,直到遇到换行符。注意:gets函数是不安全的,因为它不检查数组溢出,实际编程中应避免使用

    int n = strlen(a); // 使用strlen函数计算字符串a的长度,并将其存储在变量n中

    for(i = n - 1; i >= 0; i--) // 使用for循环从字符串的最后一个字符开始向前遍历
        printf("%c", a[i]); // 打印当前字符a[i],由于是从后向前遍历,因此会按相反顺序打印字符串

    printf("\n"); // 打印一个换行符,表示输出结束

    return 0; // 返回0,表示程序正常结束
}

简洁版

#include <stdio.h>
int main() 
{
	char a[111];
	int i;
	gets(a);
	int n=strlen(a);
	for(i=n-1;i>=0;i--)
		printf("%c",a[i]);				
	printf("\n");
	return 0;
}

在这段代码中,for循环从n - 1开始而不是n的原因是:

  1. 字符串的结束符:在C语言中,字符串以空字符('\0')作为结束标志。strlen函数计算字符串长度时,会一直计数直到遇到这个空字符。因此,strlen(a)返回的n实际上是指字符串a的长度,不包括结尾的空字符。

  2. 数组的索引:在C语言中,数组的索引是从0开始的。所以,如果n是字符串的长度,那么字符串的最后一个字符的索引实际上是n - 1。数组a的最后一个元素是a[n - 1]

  3. 循环的目的:这个for循环的目的是反向打印字符串。如果从n开始,那么a[n]实际上是越界访问,因为n对应的是字符串末尾空字符的位置,而数组中并没有a[n]这个元素。

综上所述,循环从n - 1开始,是因为n - 1是字符串最后一个字符的索引,这样可以确保循环能够正确地访问字符串中的每个字符,从最后一个字符开始向前遍历,直到索引0,即字符串的第一个字符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值