-1

我用 C 编写了一个程序,它运行良好。当我试图将它翻译成 C# 语言时,它没有被编译。问题是 C# 不知道 C 中scanf ("%19s" , string1);like的含义。
我改为scanf

string read;
do
{
     read = Console.ReadLine();
}
while (read.Length <= 19); 

它无法正常工作。然后我尝试:将其更改为:

string string1Input = Console.ReadLine();

它工作得更好,但if没有检查语句,因为我得到所有“总和”-s 等于 0。

这是翻译成 C# 的程序:

public static class GlobalMembersAnbanisRicxvitiMnishvneloba
{
    static int Main()
    {
        string string1 = new string(new char[20]);   
        sbyte a = (sbyte)'a';
        sbyte b = (sbyte)'b';
        sbyte g = (sbyte)'g';
        sbyte X = (sbyte)'X';
        sbyte i = (sbyte)'i';
        sbyte H = (sbyte)'H';
        sbyte V = (sbyte)'V';
        etc..

        int rigi;
        int sum = 0;
        int sum2 = 0;
        int sum3 = 0;

        Console.Write(" my word is:\n");

        string string1Input = Console.ReadLine();

        for (rigi = 0; string1[rigi] != '\0'; rigi++)
        {
            if (string1[rigi] == a)
            {
                sum3 = sum3 + 1;
                sum2 = sum2 + 1;
                sum = sum + 1;
            }
            else
            if (string1[rigi] == b)
            {
                sum3 = sum3 + 3;
                sum2 = sum2 + 2;
                sum = sum + 2;
            }


               etc...
            } /* end for*/
    if (string1[rigi-1]==i) 
{
 sum=sum-10; sum2=sum2-10; sum3=sum3-55;
}
            Console.Write("sum is:");
            Console.Write("{0:D}\n", sum);
            Console.Write("sum2 is:");
            Console.Write("{0:D}\n", sum2);
            Console.Write("sum");
            Console.Write("{0:D}\n", sum3);
            return 0;
        }
    }

prog 的想法是:
程序为我们键入的单词的每个字母赋予数字含义,并将这些数字相互添加。

问题二:如何制作

 if (string1[rigi-1]==i) 
    {
     sum=sum-10; sum2=sum2-10; sum3=sum3-55;
    } 

工作?

4

1 回答 1

0

C#中没有结束字符字符串,就像在C中一样。实际上,C中的字符串和C#中的字符串是两个完全不同的东西,并且使用方式不同。

所以对于一个字符串的循环,好的方法是使用一个foreach循环。
改变

for (rigi = 0; string1[rigi] != '\0'; rigi++)

经过

foreach(var oneCaracter in string1Input)

然后string1[rigi]必须成为oneCaracter 并且sbyte必须成为char

样本修正:

char a = 'a';
int sum = 0;
int sum2 = 0;
int sum3 = 0;

string string1Input = Console.ReadLine();

foreach(char oneCaracter in string1Input)
{
    if (oneCaracter == a)
    {
        sum3 = sum3 + 1;
        sum2 = sum2 + 1;
        sum = sum + 1;
    }
}

if (string1Input[string1Input.Length - 1] == i) 
{
    sum = sum - 10; sum2 = sum2-10; sum3 = sum3-55;
}
于 2013-04-24T10:03:27.550 回答