C# C-带除法和余数的独立整数/字符串

C# C-带除法和余数的独立整数/字符串,c#,C#,我有一个家庭作业,我就是不知道怎么做。我不确定老师是否写错了,他打字打得不好,或者是否有办法完成这项任务 我在Visual C 2010 Express-控制台应用程序中工作 我的任务是: 从键盘上读取一个四位整数,如5893,并显示每个数字之间用制表符隔开的数字。使用整数除法和模数运算符%来提取每个数字。如果用户输入4567,则输出如下所示: 4567 4 5 6 7 当然,我知道如何使用\t以及读取输入并将其显示给用户来分隔数字。但是,我该如何用除法和余数运算符“提取”每个数字呢?也许他有别

我有一个家庭作业,我就是不知道怎么做。我不确定老师是否写错了,他打字打得不好,或者是否有办法完成这项任务

我在Visual C 2010 Express-控制台应用程序中工作

我的任务是: 从键盘上读取一个四位整数,如5893,并显示每个数字之间用制表符隔开的数字。使用整数除法和模数运算符%来提取每个数字。如果用户输入4567,则输出如下所示:

4567

4 5 6 7

当然,我知道如何使用\t以及读取输入并将其显示给用户来分隔数字。但是,我该如何用除法和余数运算符“提取”每个数字呢?也许他有别的意思,但不确定

还有一个问题。。。 如何确保用户键入的是数字而不是字母? 我是否必须使用Char.isleter,因为我不知道如何在已解析的字符串上使用它

例如:

        string number1;
        int x;
        Console.Write("Please enter a number to calculate: ");
        number1 = Console.ReadLine();
        x = Int32.Parse(number1);

我应该使用什么方法?我应该把它放在哪里?因为现在如果我尝试输入e字母,我只会收到一个错误,应用程序会关闭。

System.Int32.TryParse在转换字符串时可能是更好的选择。

System.Int32.TryParse在转换字符串时可能是更好的选择。

是的,您的分配是有意义的。假设你有一个整数x=4567。要选择位置A处的数字,请使用:

result = (int)((x / (A * 10)) % 10);

此x/A*10的第一部分将x向右移动。所以a=1的值将4567除以10,结果是456.7。然后使用模运算符%选择该数字的单位部分。最后,您将转换为int以删除小数部分。

是的,您的赋值是有意义的。假设你有一个整数x=4567。要选择位置A处的数字,请使用:

result = (int)((x / (A * 10)) % 10);

此x/A*10的第一部分将x向右移动。所以a=1的值将4567除以10,结果是456.7。然后使用模运算符%选择该数字的单位部分。最后,将其转换为整数以删除小数部分。

第一个问题实际上更多的是关于数学而不是编程。你知道除法和模运算符的作用。考虑如何使用它们来获取最后一个最低有效数字。一旦你做到了这一点,你就可以对第二位数的十应用类似的技术,然后对数百和数千应用相同的技术,以此类推


您已经找到了Char.isleter,但是还有Char.IsDigit,它可以更直接地实现您想要的功能。您可以对一个字符执行此检查,您拥有的是一个字符串。看看foreach循环。

第一个问题实际上更多的是关于数学而不是编程。你知道除法和模运算符的作用。考虑如何使用它们来获取最后一个最低有效数字。一旦你做到了这一点,你就可以对第二位数的十应用类似的技术,然后对数百和数千应用相同的技术,以此类推


您已经找到了Char.isleter,但是还有Char.IsDigit,它可以更直接地实现您想要的功能。您可以对一个字符执行此检查,您拥有的是一个字符串。看看foreach循环。

好的,我不会给出完整的解决方案,这是家庭作业

此代码将检查输入中是否有四个字符:

        string input;
        do
        {
            input = Console.ReadLine();
            if (input.Length != 4)
                Console.WriteLine("You have to enter FOUR digits");
        } while (input.Length != 4);
这可能是检查数字的一种方法:

        bool isOk = true;
        foreach (char c in input.ToArray())
        {
            if (!Char.IsDigit(c))
            {
                Console.WriteLine("You have to enter four DIGITS");
                isOk = false;
                break;
            }
        }
这种方法不涉及数学,但您也可以这样做:

int num = int.Parse(input);
int tensOfThousands = num / 10000;
int thousands = (num - tensOfThousands) / 1000;
int lastDigit = num % 10;
//the rest of the digits are up to you ;)

好的,我不会给出完整的解决方案,这是家庭作业

此代码将检查输入中是否有四个字符:

        string input;
        do
        {
            input = Console.ReadLine();
            if (input.Length != 4)
                Console.WriteLine("You have to enter FOUR digits");
        } while (input.Length != 4);
这可能是检查数字的一种方法:

        bool isOk = true;
        foreach (char c in input.ToArray())
        {
            if (!Char.IsDigit(c))
            {
                Console.WriteLine("You have to enter four DIGITS");
                isOk = false;
                break;
            }
        }
这种方法不涉及数学,但您也可以这样做:

int num = int.Parse(input);
int tensOfThousands = num / 10000;
int thousands = (num - tensOfThousands) / 1000;
int lastDigit = num % 10;
//the rest of the digits are up to you ;)

对于所有不熟悉C的人来说,解决方案可能更简单

        // Variables
        int number = 1234;
        int remainder;
        string s = "";

        while (number > 0) {
            remainder = number % 10;
            s = remainder + "\n" + s;
            number /= 10;
        }
        Console.Write (s);

对于所有不熟悉C的人来说,解决方案可能更简单

        // Variables
        int number = 1234;
        int remainder;
        string s = "";

        while (number > 0) {
            remainder = number % 10;
            s = remainder + "\n" + s;
            number /= 10;
        }
        Console.Write (s);

谢谢,我会试一试,看看效果如何,真的很好的响应时间!投票支持你的评论,因为我喜欢解释而不给出代码的想法。毕竟,这是家庭作业,所以给出部分代码会破坏很多:。谢谢,我会尝试一下,看看结果如何,真的很好的响应时间!投票支持你的评论,因为我喜欢解释而不给出代码的想法。毕竟,这是家庭作业,所以给出部分代码会破坏很多:。啊,现在我明白了。这对我现在来说是有意义的=我将尝试实现它并稍微使用它。谢谢你如此快速而清晰的回答!可能是因为这是家庭作业,这里不鼓励给某人家庭作业的确切答案。相反,像叶甫根尼那样提供提示和指导。没错——我想我已经习惯于在这里给人们答案了。。。对不起,在使用前请确保您理解:啊,现在我明白了。这对我现在来说是有意义的=我将尝试实现它并稍微使用它。谢谢你这么快又清晰的回答
答复可能是因为这是家庭作业,这里不鼓励给某人家庭作业的确切答案。相反,像叶甫根尼那样提供提示和指导。没错——我想我已经习惯于在这里给人们答案了。。。对不起,在使用前请确保您理解:嗯。。。我会尝试一下,虽然我刚刚发现我可能不需要我正在使用的字符串,但我可以坚持使用整数。谢谢你的回答!隐马尔可夫模型。。。我会尝试一下,虽然我刚刚发现我可能不需要我正在使用的字符串,但我可以坚持使用整数。谢谢你的回答!