c# 如何编写一个函数,接收字符串作为参数,并返回字符串中出现的最大位数?

nbewdwxp  于 2022-12-25  发布在  C#
关注(0)|答案(2)|浏览(252)

这些是详细信息。(https://i.stack.imgur.com/cMY9J.png

#include <stdio.h>
#include <stdlib.h>
int maxdigit(char sir[]);
int main()
{
    char s[100];
    gets(s);
    printf("The greatest digits is %i\n", maxdigit(s));
}
int maxdigit(char sir[])
{
    int i, max = 0;
    for(i=0;i<100;i++)
    {
        if(max<sir[i])
        {
            max = sir[i];
        }
    }
    return max;
}

我真的不知道如何在一个字符串中只得到整数值来返回它,我怎么做才能使它不与字母的ascii代码进行比较呢?

wvmv3b1j

wvmv3b1j1#

这里有几个问题:

  1. gets()是一个危险的函数(因为它可能导致缓冲区溢出),已经从C标准中删除。考虑使用fgets()或scanf()。
    1.您的代码假定用户已输入所有100位数字。如果输入的数字少于100,则其他数字的内存未初始化,并且可能充满垃圾。当到达终止字符串的“\0”时,您需要停止。
    1.要将ASCII码(数字)转换为数字的值,需要从ASCII码中减去“0”,但需要确保所有输入的数字都是数字,可以使用isdigit()。
qyswt5oh

qyswt5oh2#

1.迭代直到空终止字符。在代码中,如果字符串长度小于数组,则将超出字符串结尾
1.通过减去0将数字的char表示形式转换为整数值。

unsigned maxdigit(const char *str)
{
    unsigned max = 0;
    if(str)
    {
        while(*str)
        {
            if(isdigit((unsigned char)*str))
            {
                if(max < *str - '0') max = *str - '0';
            }
            str++;
        }
    }
    return max;
}

相关问题