C中while循环和for循环之间的差异导致输出差异

新编码类

我正在为该函数编写代码,该函数maxCharToFront()接受字符串str作为参数,从字符串中找到最大的字符(基于ASCII值),并将其移至字符串的开头。

主功能:

#include <stdio.h>
#include <string.h>
void maxCharToFront(char *str);
int main()
{
   char str[80], *p;
   
   printf("Enter a string: \n");
   fgets(str, 80, stdin);
   if (p=strchr(str,'\n')) *p = '\0';
   printf("maxCharToFront(): ");
   maxCharToFront(str);
   puts(str);
   return 0;
}

这是使用for循环的函数:

void maxCharToFront(char *str)
{
    int i, maxcharint=0, maxindex=0;
    char maxchar;
    for (i=0; str[i] != '\0'; i++){
        
        if ( (int)str[i]> maxcharint){
            maxcharint = (int)str[i];
            maxindex = i;
        }
        i++;
    }
    
    for (i = maxindex-1; i>-1; i--){
        str[i+1]= str[i];
    }
    maxchar = maxcharint;
    str[0]= maxchar;
}

当我输入ab作为输入时,它会返回ab作为for循环的输出。

这是使用while循环的函数:

void maxCharToFront(char *str)
{
    int i=0, maxindex=0, maxcharint=0;
    char maxchar;
    while (str[i]!='\0'){
        if ((int)str[i]>maxcharint){
            maxindex = i;
            maxcharint = (int)str[i];
        }
        i++;
    }
    
    for(i=maxindex-1; i>-1; i--){
        str[i+1]=str[i];
    }
    maxchar = maxcharint;
    str[0] = maxchar;
} 

当我输入ab作为输入时,它成功返回了ba作为while循环的输出。

但是,我在while和for循环中看不到任何区别,因为它们都从str [0]开始横切输入字符串中的所有字符。为什么会有输出差异?谢谢。

Nikos M.

在for循环中,您增加了i两次,一次在for循环中,然后又一次i++

void maxCharToFront(char *str)
{
    int i, maxcharint=0, maxindex=0;
    char maxchar;
    for (i=0; str[i] != '\0'; i++/*increment here*/){
        
        if ( (int)str[i]> maxcharint){
            maxcharint = (int)str[i];
            maxindex = i;
        }
        i++; // increment twice
    }
    
    for (i = maxindex-1; i>-1; i--){
        str[i+1]= str[i];
    }
    maxchar = maxcharint;
    str[0]= maxchar;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

GCC和MinGW(C ++)之间奇怪的输出差异

来自分类Dev

ipython和python之间的输出差异

来自分类Dev

ipython和python之间的输出差异

来自分类Dev

CMS 6.5和7.0之间的Sitecore FieldRenderer输出差异

来自分类Dev

CMS 6.5和7.0之间的Sitecore FieldRenderer输出差异

来自分类Dev

for,while和do while循环之间的性能差异?

来自分类Dev

python中的numpy.sum()和matlab中的sum()之间的输出差异

来自分类Dev

C:使用完全相同的输入时,printf和vfprintf之间的输出差异

来自分类Dev

在 sas compare 中,只输出差异和新记录

来自分类Dev

hexdump和hexedit的输出差异

来自分类Dev

Linux和Windows上的输出差异

来自分类Dev

程序输出差异

来自分类Dev

parseDateTime输出差异

来自分类Dev

代码输出差异

来自分类Dev

输出差异-Java

来自分类Dev

时间结果中运行次数和循环次数之间的差异

来自分类Dev

循环增量之间的差异

来自分类Dev

C ++中循环的性能差异

来自分类Dev

C - Switch 语句 - 输出差异

来自分类Dev

Knitr pdflatex控制台和PDF之间的输出差异

来自分类Dev

KnitR:控制台和PDF(编码)之间的输出差异

来自分类Dev

运行脚本时Ruby版本之间的输出差异

来自分类Dev

C#char返回方法与对象返回方法之间的输出差异

来自分类Dev

Python-比较2个文件和输出差异

来自分类Dev

Java,PHP中的AES 128加密-输出差异

来自分类Dev

angular.foreach和native for循环之间的性能差异

来自分类Dev

angular.foreach和native for循环之间的性能差异

来自分类Dev

TypeScript中的forEach闭包和for循环之间类型推断的差异

来自分类Dev

尝试诊断C ++标准for循环之间的差异并累积副作用

Related 相关文章

热门标签

归档