我用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;
}
工作?
答案 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;
}