如何创建一个C#程序,该程序要求使用循环的1到100之间的值
因此,我试图创建一个C#程序,要求输入一个介于1和100之间的值,该程序使用一个循环来确定1和输入值之间的所有值的总和,如果输入的数字小于1或大于100,它将打印“对不起,再试一次”。我已经为此工作了几天,但我无法让它打印总和,我一直得到0,每当我测试它并输入一个小于1或大于100的数字时,它都不会打印我想要的错误消息。代码如下:如何创建一个C#程序,该程序要求使用循环的1到100之间的值,c#,C#,因此,我试图创建一个C#程序,要求输入一个介于1和100之间的值,该程序使用一个循环来确定1和输入值之间的所有值的总和,如果输入的数字小于1或大于100,它将打印“对不起,再试一次”。我已经为此工作了几天,但我无法让它打印总和,我一直得到0,每当我测试它并输入一个小于1或大于100的数字时,它都不会打印我想要的错误消息。代码如下: using System; namespace PrintSumL { class Program { static void Main(string[]
using System;
namespace PrintSumL
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter a beginning value between 1 and 100");
int s = Convert.ToInt32(Console.ReadLine());
int sum = 0;
Console.WriteLine("Sum of values: " + sum);
Console.ReadKey();
Random rand = new Random();
rand.Next(1, 51);
while (0 < s && s < 101)
{
sum += s;
s++;
if (s < 0 && 101 < s)
{
Console.WriteLine("Invalid input. Try again.");
}
{
}
{
}
}
}
}
}
使用系统;
名称空间PrintSumL
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“输入介于1和100之间的起始值”);
int s=Convert.ToInt32(Console.ReadLine());
整数和=0;
Console.WriteLine(“值之和:+Sum”);
Console.ReadKey();
Random rand=新的Random();
兰德·奈特(1,51);
而(0
如果需要循环,则应遵循Heath Raftery的说明
否则,您可以编写类似以下内容:
static void Main(string[] args)
{
Console.WriteLine("Enter a beginning value between 1 and 100");
int s = Convert.ToInt32(Console.ReadLine());
if (s < 0 || s > 100)
Console.WriteLine("Invalid input. Try again.");
else
Console.WriteLine($"Sum of values: {Enumerable.Range(1,s).Sum()}");
}
您可以将程序视为从上到下逐行执行,并且只有在到达while循环结束时才向上移动。while循环的结尾是与循环开始处的
{
匹配的}
知道了这一点,你就能明白为什么它总是说和为零。从你的代码中:
int sum = 0;
Console.WriteLine("Sum of values: " + sum);
由于程序执行“从上到下逐行”操作,它将首先将总和设置为0,然后打印总和。因此,它将始终打印“值总和:0”
。如果您希望它在计算完总和后打印总和,则需要将写线下移到计算总和的下方
同样的问题也适用于“无效输入。请重试。”
:打印此语句的行出现在之后,而(0
,因此仅当s
介于0和101之间时才会执行。由于您试图捕捉s
不在0和101之间的场景,因此需要将语句移动到while
循环上方
因此,要解决眼前的问题,只需做两件事:
1) 移动两行
Console.WriteLine("Sum of values: " + sum);
Console.ReadKey();
在while循环之后(就在与while缩进级别相同的}
之后)
2) 移动三行
if (s < 0 && 101 < s)
{
Console.WriteLine("Invalid input. Try again.");
}
if(s<0&&101
最多只在ints=Convert.ToInt32(Console.ReadLine())下方代码>,然后再次检查逻辑。如果s
小于零,或者s
大于101,听起来像是要打印语句。试试这个:
static void Main(string[] args)
{
while (true)
{
Console.Write("Enter a number between 1 and 100: ");
int Number = Convert.ToInt32(Console.ReadLine());
if (Number < 0 || Number > 100)
Console.WriteLine("Sorry. Try again.");
else
{
int sum = 0;
for (int i = 1; i <= Number; i++)
{
sum = sum + i;
}
Console.WriteLine("Sum of values: " + sum);
}
}
}
static void Main(字符串[]args)
{
while(true)
{
Console.Write(“输入一个介于1和100之间的数字:”);
int Number=Convert.ToInt32(Console.ReadLine());
如果(数字<0 | |数字>100)
控制台。WriteLine(“对不起,再试一次。”);
其他的
{
整数和=0;
对于(inti=1;i,这里有一个有效的算法
Console.WriteLine("Enter a value between 1 and 100");
var input = int.Parse(Console.ReadLine());
int sum = 0;
if (input<1 || input>100) {
Console.WriteLine("Sorry, Try again");
}
else{
while(input > 2){
input-=1;
sum+=input;
}
}
Console.WriteLine("Sum of values: " + sum);
Console.WriteLine(“输入一个介于1和100之间的值”);
var input=int.Parse(Console.ReadLine());
整数和=0;
如果(输入100){
Console.WriteLine(“对不起,再试一次”);
}
否则{
while(输入>2){
输入-=1;
总和+=输入;
}
}
Console.WriteLine(“值之和:+Sum”);
而(0
意味着,如果s
超出范围0和101,则内部代码块将不会执行。因此,“对不起”消息将永远不会显示。数字1到N的和有一个公式:1+2+…+N=N(N+1)/2
。如果输入50,您可以只计算sum=50*51/2
(s<0&&101
,这永远不可能是真的
。一个值不能小于0
,因此它必须是负数,并且大于101
,这显然是一个正数。你要使用|
,而不是&
。如果我键入像20这样的数字,它仍然会说和是0。当然,你永远不会在h之后打印和的值当然,经过计算,这是可行的,但你忽略了约束。使用循环显然是一种一流的作业,使用枚举和Linq很难成为新手的论据。如果我们不使用循环,你也可以使用公式N*(N+1)“2 / <代码>并没有列举任何东西。仍然忽略了房间里的大象。Calc是错误的,如果它永远不会是TtruEk,那么就很重要了,现在就采取婴儿的步骤来陶冶,而不是仅仅解决它。一旦代码< C<< /代码>的程序性变得显而易见,大量的学习就会到来。提示OP:考虑<代码)。> -< /COD>而不是<代码> S++<代码>,并考虑为什么它可能会产生更多的信息。如果键入像105或-1这样的数字,它不给我错误信息,它只应该打印一次和,例如“值和为330”。“太好了,那么您已经找到了接下来的两个问题。s的值是s<0&&101
?105?-1?50?实际上没有。试试s。”
Console.WriteLine("Enter a value between 1 and 100");
var input = int.Parse(Console.ReadLine());
int sum = 0;
if (input<1 || input>100) {
Console.WriteLine("Sorry, Try again");
}
else{
while(input > 2){
input-=1;
sum+=input;
}
}
Console.WriteLine("Sum of values: " + sum);