我目前正在学习编程,我不知道为什么我的代码没有进入do内部的for。
任何想法或帮助都会非常有用!
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
void swap(char *num1, char *num2) {
char temp;
temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int main()
{
int l,i;
char s[100];
bool swapped;
scanf("%s", s);
l=strlen(s);
do
{
swapped = 0;
for(i=1;i==(l-1);i++)
{
if(s[i-1] > s[i])
{
swap(&s[i-1],&s[i]);
printf("%s\n",s);
swapped = 1;
}
}
}while(swapped);
// printf("%s\n",s);
return 0;
}
答案 0 :(得分:1)
你在for循环中的比较是检查我是否等于字符串中的字符。如果这种情况属实,你只会进入for循环。
您可能想要输入for循环,然后继续增加i检查以查看它是否小于或等于字符串中的字符。
示例代码
char * str = "Hello"
for(int i = 0; i <= strlen(str) - 1; i++)
{
printf("%c", str[i]);
}
预期输出
Hello