程序应该给一个特殊的数值(但......)

时间:2013-04-24 09:59:33

标签: c# c string stdio

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

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

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

string string1Input = Console.ReadLine();

它工作得更好,但if语句没有被检查,因为我得到的所有“sum”-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;
        }
    }

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

问题二:如何制作

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

工作?

1 个答案:

答案 0 :(得分: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;
}