输出参数解一元二次方程

问题描述

输出参数解一元二次方程

using System;
using System.Collections.Generic;
using System.Text;

namespace 输出参数求解一元二次方程
{
class Program
{
public static void Root(int a, int b, int c, out double root1, out double root2)
{
double d = b * b - 4 * a * c;
double Sqrt = Math.Sqrt(d);
if (d > 0)
{
root1 = (-b + Sqrt) /( 2 * a);
root2 = (-b - Sqrt) / (2 * a);
}
else if (d == 0)
{
root1 = root2 = -b / (2 * a);
}
else
Console.WriteLine("此方程无根");
}
static void Main(string[] args)
{
int a = 5, b = 6, c = 1;
double root1, root2;
Root (a, b, c, out root1, out root2);
Console.WriteLine("root1 :{0},root2:{1}", root1, root2);
}
}
}
错误提示为控制离开方法之前必须对out参数root1.root2赋值。
我已经赋值了啊,为什么还会提示要对输出参数赋值的错误?

解决方案

在开头加上
root1 = 0;
root2 = 0;

因为你虽然赋值了,但是赋值是写在if判断内的,不一定执行到。C#语言规定,必须把赋值写在可能程序能执行到的地方。

解决方案二:

必须把赋值写在可能程序能执行到的地方。
->
必须把赋值写在肯定程序能执行到的地方。

肯定的含义是指语法结构上的,比如
if (true)
root1 = xxx;
这个还是不算肯定能执行到,尽管if的条件永远为真。

时间: 2024-11-03 11:08:37

输出参数解一元二次方程的相关文章

解一元二次方程 数据类型用float与double结果不同

问题描述 解一元二次方程 数据类型用float与double结果不同 #include #include main() { float a,b,c,d,r,x,x1,x2; scanf("%f %f %f",&a,&b,&c); r=b*b-4*a*c; d=2*a; if(a==0||b==0) printf("Input error!n"); if(r>0) printf("x1=%fnx2=%fn",(-b+s

c语言编程-C语言程序设计:解一元二次方程

问题描述 C语言程序设计:解一元二次方程 如何编写一个解一元二次方程的C语言程序.要能求出x1,x2,还要有无解的情况. 解决方案 C++,解一元二次方程 解决方案二: 这种问题,百度不可以了么?

《C语言及程序设计》实践参考——一元二次方程全解

返回:贺老师课程教学链接  项目要求 [项目3:一元二次方程全解](x^2代表x的平方)有一方程ax^2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解.(1) a=0,b≠0时, 解为-c/b(2) a=0,b=0,c=0, 解为任意值 (3) a=0,b=0,c≠0, 无解(4) a≠0,b^2-4ac≥0, 有两个实根(5) a≠0,b^2-4ac≤0, 有两个虚根 [参考解答] #include <stdio.h> #include <math.h&g

代码分析-c++ 求解一元二次方程

问题描述 c++ 求解一元二次方程 假定有一元二次方程ax^2+bx+c=0,其各项系数分别为a,b,c,依次输入a,b,c的值(均为实数),输出该方程对应的解x1和x2 注意:(1)当a为0时,求解一次方程:(2)二次方程需考虑有一个解.两个实数解和两个复数解的情况 输入:0.0 1.0 2.0 输出:x=-2.0 输入:0.0 0.0 1.0 输出:方程无解 输入:0.0 0.0 0.0 输出:无穷多解 输入:1.0 -5.0 6.0 输出:x1=2.0 x2=3.0 输入:1.0 -8.0

c++编写求解一元二次方程组根问题

问题描述 c++编写求解一元二次方程组根问题 总时间限制: 1000ms 内存限制: 65536kB 描述 利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0. 输入输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数.输出输出一行,表示方程的解. 若两个实根相等,则输出形式为:x

[C算法]一元二次方程求根

// // main.c // 一元二次方程求解 // // Created by 丁小未 on 13-7-9. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #include <stdio.h> #include <math.h> float O(float a,float b,float c) { float res = b*b-4*a*c; if(res<0) { return -1; } els

一元二次方程,运算符的优先级

字符串处理函数 作业:求一元二次方程的根 // //  main.c //  一元二次方程求解 // //  Created by 丁小未 on 13-7-9. //  Copyright (c) 2013年 dingxiaowei. All rights reserved. // #include <stdio.h> #include <math.h> float O(float a,float b,float c) {     float res = b*b-4*a*c;  

C语言OJ项目参考(2013)一元二次方程Ⅱ

(2013)一元二次方程Ⅱ Description 求一元二次方程ax 2 +bx+c=0 的解.a,b,c为任意实数. Input 输入数据有一行,包括a b c的值. Output 按以下格式输出方程的根x1和x2.x1和x2之间有一个空格. x1 x2 (1)如果x1和x2为实根,则以x1>=x2输出. (2)如果方程是共轭复根,x1=m+ni,x2=m-ni,其中n>0. 其中x1, x2, m,n均保留2位小数. Sample Input 1 2 3 Sample Output -1

在 ExcuteReader 中使用输出参数的问题

问题 今天一个查询需要通过 ExcuteReader  返回结果集,同时又想输出参数,刚开始的时候一直得不到输出参数的值,以为存储过程出错,但是在查询分析器里面测试是正确的,而且输出参数确实已经赋值.更加让人百思不得其解的是,对出输出强制类型转换丢出异常之后,确又可以得到了,难道是ado.net 的bug,想象页不可能啊,这么常用的API,不可能出这种错吧,我的代码类似一下场景:  try {            using (SqlDataReader dr = cmd.ExecuteRea