private void CreateFIBQuestion(SectionBaseInfo info, Section section) { valuesStruct valueMC = new valuesStruct(20); //题干展示的值 //随即获得数值 this.GetRandomValues(info, ref valueMC); //生产题干文本 string questionText = QuestionText(valueMC); FIBQuestion fibQuestion = new FIBQuestion(); fibQuestion.Content.Content = questionText; fibQuestion.Content.ContentType = ContentType.Text; section.QuestionCollection.Add(fibQuestion); QuestionBlank blank = new QuestionBlank(); QuestionContent blankContent = new QuestionContent(); blankContent.Content = valueMC.answer.ToString(); blankContent.ContentType = ContentType.Text; blank.ReferenceAnswerList.Add(blankContent); fibQuestion.QuestionBlankCollection.Add(blank); fibQuestion.Content.Content += blank.PlaceHolder; StringBuilder strBuilder = new StringBuilder(); //解题步骤 string Steps = SolveSteps(valueMC); strBuilder.AppendLine(Steps); fibQuestion.Solution.Content = strBuilder.ToString(); }
private String SolveSteps(valuesStruct valueMC) { //题干 string calSteps = ""; for (int i = 0; i < valueMC.number; i++) { calSteps += valueMC.values[i].ToString(); if (i != valueMC.number - 1) { calSteps += "+"; } } //解题步骤 //第一步 calSteps += "="; calSteps += valueMC.valueMedian.ToString(); calSteps += "×"; calSteps += valueMC.number.ToString(); //第二步 calSteps += "="; decimal answer = valueMC.valueMedian * valueMC.number; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } if (minValue < 16) { minValue = 16; } if (maxValue < 100) { maxValue = 100; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = 2;// rand.Next(10, 100 + 1); valueABC.answer = 0; int tmpMaxValue = rand.Next(minValue, maxValue + 1); decimal B = rand.Next(minValue, maxValue + 1); decimal A = rand.Next(decimal.ToInt32(B) + 11, maxValue + decimal.ToInt32(B) + 12); //把被减数A和减数B存入数组 valueABC.values[0] = A; valueABC.values[1] = B; valueABC.answer = A - B; }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "÷"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; int n = valueMC.baseNum; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int m = 2;// A2 / n; int a = A1 % 100; int A = A1 - a; //第一步 //calSteps += "=("; //calSteps += A.ToString(); //calSteps += "+"; //calSteps += a.ToString(); //calSteps += ")÷"; //calSteps += A2.ToString(); ////第二步 //int x1 = A / A2; //int x2 = a + A % A2; //calSteps += "="; //calSteps += x1.ToString(); //calSteps += "+"; //calSteps += x2.ToString(); //calSteps += "÷"; //calSteps += A2.ToString(); ////第三步 //int x3 = x1 + x2 / A2; ////int x2 = a + x1 % A2; ////calSteps += "="; ////calSteps += x1.ToString(); ////calSteps += "+"; ////calSteps += x2.ToString(); ////calSteps += "÷"; ////calSteps += A2.ToString(); //decimal answer = 0; //answer = x1 + x2; ////第四步 //if (answer != valueMC.answer) //{ // calSteps += "Error!"; //} calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "×"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int baseNum2 = 100; int bs = 100 - A2; //第一步 int A21 = (b2 + 1) * 10; calSteps += "="; calSteps += A1.ToString(); calSteps += "×"; calSteps += c2.ToString(); calSteps += "+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b2.ToString(); calSteps += "×10"; calSteps += "+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += a2.ToString(); calSteps += "×100"; //第二步 int A1c2 = A1 * c2; int A1b2 = A1 * b2 * 10; int A1a2 = A1 * a2 * 100; calSteps += "="; calSteps += A1c2.ToString(); calSteps += "+"; calSteps += A1b2.ToString(); calSteps += "+"; calSteps += A1a2.ToString(); //第三步 decimal answer = 0; answer = A1c2 + A1b2 + A1a2; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; decimal A = decimal.ToInt32(valueMC.values[0]); decimal B = decimal.ToInt32(valueMC.values[1]); decimal C = decimal.ToInt32(valueMC.values[2]); decimal answer = 0; decimal A_C; //题干 calSteps += A.ToString(); switch (valueMC.mode) { case 0: //两个加 calSteps += "+("; calSteps += B.ToString(); calSteps += "+"; calSteps += C.ToString(); calSteps += ")"; //第一步:去括号 calSteps += "="; calSteps += A.ToString(); calSteps += "+"; calSteps += B.ToString(); calSteps += "+"; calSteps += C.ToString(); //第二步:移位 calSteps += "="; calSteps += A.ToString(); calSteps += "+"; calSteps += C.ToString(); calSteps += "+"; calSteps += B.ToString(); //第三步:去括号 A_C = A + C; calSteps += "="; calSteps += A_C.ToString(); calSteps += "+"; calSteps += B.ToString(); answer = A_C + B; break; case 1: //一加一减 calSteps += "+("; calSteps += B.ToString(); calSteps += "-"; calSteps += C.ToString(); calSteps += ")"; //第一步:去括号 calSteps += "="; calSteps += A.ToString(); calSteps += "+"; calSteps += B.ToString(); calSteps += "-"; calSteps += C.ToString(); //第二步:移位 calSteps += "="; calSteps += A.ToString(); calSteps += "-"; calSteps += C.ToString(); calSteps += "+"; calSteps += B.ToString(); //第三步:去括号 A_C = A - C; calSteps += "="; calSteps += A_C.ToString(); calSteps += "+"; calSteps += B.ToString(); answer = A_C + B; break; case 2: //一减一加 calSteps += "-("; calSteps += B.ToString(); calSteps += "+"; calSteps += C.ToString(); calSteps += ")"; //第一步:去括号 calSteps += "="; calSteps += A.ToString(); calSteps += "-"; calSteps += B.ToString(); calSteps += "-"; calSteps += C.ToString(); //第二步:移位 calSteps += "="; calSteps += A.ToString(); calSteps += "-"; calSteps += C.ToString(); calSteps += "-"; calSteps += B.ToString(); //第三步:去括号 A_C = A - C; calSteps += "="; calSteps += A_C.ToString(); calSteps += "-"; calSteps += B.ToString(); answer = A_C - B; break; case 3: //两个减 calSteps += "-("; calSteps += B.ToString(); calSteps += "-"; calSteps += C.ToString(); calSteps += ")"; //第一步:去括号 calSteps += "="; calSteps += A.ToString(); calSteps += "-"; calSteps += B.ToString(); calSteps += "+"; calSteps += C.ToString(); //第二步:移位 calSteps += "="; calSteps += A.ToString(); calSteps += "+"; calSteps += C.ToString(); calSteps += "-"; calSteps += B.ToString(); //第三步:去括号 A_C = A + C; calSteps += "="; calSteps += A_C.ToString(); calSteps += "-"; calSteps += B.ToString(); answer = A_C - B; break; default: calSteps += "+("; calSteps += B.ToString(); calSteps += "+"; calSteps += C.ToString(); calSteps += ")"; //第一步:去括号 calSteps += "="; calSteps += A.ToString(); calSteps += "+"; calSteps += B.ToString(); calSteps += "+"; calSteps += C.ToString(); //第二步:移位 calSteps += "="; calSteps += A.ToString(); calSteps += "+"; calSteps += C.ToString(); calSteps += "+"; calSteps += B.ToString(); //第三步:去括号 A_C = A + C; calSteps += "="; calSteps += A_C.ToString(); calSteps += "+"; calSteps += B.ToString(); answer = A_C + B; break; } //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A1 = decimal.ToInt32(valueMC.values[0]); int A2 = decimal.ToInt32(valueMC.values[1]); //if (valueMC.posMul == 1) //{ // A1 = decimal.ToInt32(valueMC.values[1]); // A2 = decimal.ToInt32(valueMC.values[0]); //} int baseNum1 = 100; int baseNum2 = 10; //int a1 = A1 / baseNum1; //int b1 = (A1 / baseNum2) % 10; //int c1 = A1 % 10; //int a2 = A2 / baseNum1; //int b2 = (A2 / baseNum2) % 10; //int c2 = A2 % 10; decimal answer = 0; int a = decimal.ToInt32(A2) / 11; int b = 0; int bitNum = 0; if (A2 > 10000) { bitNum = 5; } else if (A2 > 1000) { bitNum = 4; } else { bitNum = 3; } if (a > 10000) { b = a / 10000; } else if (a > 1000) { b = a / 1000; } else if (a > 100) { b = a / 100; } else if (a > 10) { b = a / 10; } else { b = a; } //第一步 calSteps += "="; calSteps += A1.ToString(); calSteps += "×("; int A2a = A2 - a; calSteps += A2a.ToString(); calSteps += "+"; calSteps += a.ToString(); calSteps += ")"; //第二步 calSteps += "="; if (A2 > 10000) { bitNum = 5; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0000+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "000+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "00+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "000+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "00+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); //第三步 calSteps += "="; int sum1 = A1 * b * 10000; int sum2 = A1 * b * 1000 * 2; int sum3 = A1 * b * 100 * 2; int sum4 = A1 * b * 10 * 2; int sum5 = A1 * b * 1; calSteps += sum1.ToString(); calSteps += "+"; calSteps += sum2.ToString(); calSteps += "+"; calSteps += sum3.ToString(); calSteps += "+"; calSteps += sum4.ToString(); calSteps += "+"; calSteps += sum5.ToString(); answer = sum1 + sum2 + sum3 + sum4 + sum5; } else if (A2 > 1000) { bitNum = 4; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "000+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "00+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "00+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); //第三步 calSteps += "="; int sum1 = A1 * b * 1000; int sum2 = A1 * b * 100 * 2; int sum3 = A1 * b * 10 * 2; int sum4 = A1 * b * 1; calSteps += sum1.ToString(); calSteps += "+"; calSteps += sum2.ToString(); calSteps += "+"; calSteps += sum3.ToString(); calSteps += "+"; calSteps += sum4.ToString(); answer = sum1 + sum2 + sum3 + sum4; } else { bitNum = 3; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "00+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "0+"; calSteps += A1.ToString(); calSteps += "×"; calSteps += b.ToString(); //第三步 calSteps += "="; int sum1 = A1 * b * 100; int sum2 = A1 * b * 10 * 2; int sum3 = A1 * b * 1; calSteps += sum1.ToString(); calSteps += "+"; calSteps += sum2.ToString(); calSteps += "+"; calSteps += sum3.ToString(); answer = sum1 + sum2 + sum3; } //第三步 //第四步 //int tmp0 = 0; //int tmp1 = 0; //int tmp2 = 0; //// //answer = tmp0 + tmp1 - tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "÷"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; int n = valueMC.baseNum; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int baseNum2 = 100; int a = baseNum2 - A2; //第一步 calSteps += "="; calSteps += A1.ToString(); calSteps += "÷("; calSteps += baseNum2.ToString(); calSteps += "-"; calSteps += a.ToString(); calSteps += ")"; //第二步 int x1 = A1 / baseNum2; int x2 = A1 % baseNum2; int x3 = a * x1; calSteps += "="; calSteps += x1.ToString(); calSteps += "+("; calSteps += x2.ToString(); calSteps += "+"; calSteps += x3.ToString(); calSteps += ")÷("; calSteps += baseNum2.ToString(); calSteps += "-"; calSteps += a.ToString(); calSteps += ")"; //第三步 int x23 = x2 + x3; int x4 = ((A1 / A2 - x1) * 100 - x23) / a; calSteps += "="; calSteps += x1.ToString(); calSteps += "+("; calSteps += x23.ToString(); calSteps += "+"; calSteps += x4.ToString(); calSteps += "×"; calSteps += a.ToString(); calSteps += ")÷100"; int x5 = (x23 + x4 * a) / 100; calSteps += "="; calSteps += x1.ToString(); calSteps += "+"; calSteps += x5.ToString(); decimal answer = 0; answer = x1 + x5; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "÷"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; int n = valueMC.baseNum; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int m = 2;// A2 / n; int a = A2 % 11; //第一步 //calSteps += "=("; //calSteps += A1.ToString(); //calSteps += "×"; //calSteps += m.ToString(); //calSteps += ")÷("; //calSteps += A2.ToString(); //calSteps += "×"; //calSteps += m.ToString(); //calSteps += ")"; // //calSteps += "×"; ////calSteps += A1.ToString(); //////calSteps += "×2"; ////第二步 //int n1000 = A1 * m; //int A22 = A2 * m; //int a77 = a * 91; //int n2 = n * 4; //calSteps += "="; //calSteps += n1000.ToString(); //calSteps += "÷"; //calSteps += A22.ToString(); ////第三步 //decimal answer = 0; //answer = n1000 / A22; ////第四步 //if (answer != valueMC.answer) //{ // calSteps += "Error!"; //} calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += "(折半"; calSteps += n.ToString(); calSteps += "次),是正确答案。"; return(calSteps); }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 1; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = rand.Next(10, 100 + 1); ////只能偶数个加数 //if (valueABC.number % 2 != 0) //{ // valueABC.number++; //} int i = 0; valueABC.answer = 0; valueABC.valueStart = rand.Next(minValue, maxValue + 1); if (valueABC.valueStart % 2 != 0) { valueABC.valueStart++; } valueABC.values[i] = valueABC.valueStart; valueABC.answer += valueABC.values[i]; valueABC.valueOffset = 2;// rand.Next(1, 15 + 1); //等差值 decimal curValue = valueABC.values[i]; //前3个数 for (i = 1; i < 3; i++) { valueABC.values[i] = valueABC.values[i - 1] + valueABC.valueOffset; curValue += 2; valueABC.answer += valueABC.values[i];// valueABC.values[i]; } decimal first = valueABC.values[i - 1], second = 0; for (i = 3; i < valueABC.number - 3; i++) { second = first + valueABC.valueOffset; first = second; curValue += 2; valueABC.answer += second;// valueABC.values[i]; } //最后3个数 valueABC.values[3] = second + valueABC.valueOffset; curValue += 2; valueABC.answer += valueABC.values[3]; for (i = 4; i < 6; i++) { valueABC.values[i] = valueABC.values[i - 1] + valueABC.valueOffset; curValue += 2; valueABC.answer += valueABC.values[i]; } valueABC.valueLast = curValue; }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } if (minValue < 1) { minValue = 1; } if (maxValue > 1000) { maxValue = 1000; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = rand.Next(3, 6); valueABC.answer = 0; //decimal A1, A2 = 0; int times = rand.Next(1, 10); int a1 = 0; // rand.Next(1, 10); //百位数 int b1 = rand.Next(1, 10); //十位数 int c1 = rand.Next(1, 10); //个位数 int a2 = 0; // rand.Next(1, 10); //百位数 int b2 = 0; // rand.Next(1, 10); //十位数 int c2 = rand.Next(1, 10); //个位数 int d1 = 0; int d2 = 0; decimal[] As = new decimal[10]; int posRand = rand.Next(0, 3); if (posRand == 0) { As[1] = rand.Next(1, 10) * 5; As[0] = rand.Next(minValue, maxValue + 1); As[2] = rand.Next(1, 10) * 2; } else if (posRand == 1) { As[0] = rand.Next(minValue, maxValue + 1); As[1] = rand.Next(1, 10) * 5; As[2] = rand.Next(1, 10) * 2; } else { As[0] = rand.Next(minValue, maxValue + 1); As[2] = rand.Next(1, 10) * 2; As[1] = rand.Next(1, 10) * 5; } for (int i = 3; i < valueABC.number; i++) { int rand52 = rand.Next(0, 3);// if (rand52 == 0) { As[i] = rand.Next(1, 10) * 5; } else if (rand52 == 1) { As[i] = rand.Next(minValue, maxValue + 1); } else { As[i] = rand.Next(1, 10) * 2; } } valueABC.answer = 1; for (int j = 0; j < valueABC.number; j++) { valueABC.values[j] = As[j]; valueABC.answer *= As[j]; } }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A = decimal.ToInt32(valueMC.values[0]); int B = decimal.ToInt32(valueMC.values[1]); int a = A / 10; int b = A % 10; int c = B / 10; int d = B % 10; decimal answer = 0; //第一步 calSteps += "=100×["; calSteps += a.ToString(); calSteps += "×"; calSteps += c.ToString(); calSteps += "+("; calSteps += a.ToString(); calSteps += "+"; calSteps += c.ToString(); calSteps += ")÷2]+25"; //第二步 int a_c = a * c; calSteps += "=100×("; calSteps += a_c.ToString(); calSteps += "+"; int a_c2 = (a + c) / 2; calSteps += a_c2.ToString(); calSteps += ")+25"; //第三步 int a_c_100 = 100 * (a_c + a_c2); calSteps += "="; calSteps += a_c_100.ToString(); calSteps += "+25"; //第四步 int tmp1 = a_c_100; int tmp2 = 25; int tmp0 = 0; // answer = tmp0 + tmp1 + tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "×"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; int n = valueMC.baseNum; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; n = A1 / 14; int a = A1 % 14; //第一步 calSteps += "="; calSteps += A1.ToString(); calSteps += "×20+"; calSteps += A1.ToString(); //calSteps += "×2"; //第二步 int n100 = A1 * 20; int n2 = A1;// *2; calSteps += "="; calSteps += n100.ToString(); calSteps += "+"; calSteps += n2.ToString(); //第三步 decimal answer = 0; answer = n100 + n2; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A1 = decimal.ToInt32(valueMC.values[0]); int A2 = decimal.ToInt32(valueMC.values[1]); //if (valueMC.values[0] < valueMC.values[1]) //{ // A1 = decimal.ToInt32(valueMC.values[1]); // A2 = decimal.ToInt32(valueMC.values[0]); //} int baseNum1 = 100; int baseNum2 = 10; int a1 = A1 / baseNum1; int b1 = (A1 / baseNum2) % 10; int c1 = A1 % 10; int a2 = A2 / baseNum1; int b2 = (A2 / baseNum2) % 10; int c2 = A2 % 10; decimal answer = 0; int c1_10 = 10 - c1; int c2_10 = 10 - c2; //if (A1 >= 1000 && A2 >= 1000) //{ // baseNum = 1000; //} //第一步 calSteps += "=("; calSteps += A1.ToString(); calSteps += "+1)×("; calSteps += A2.ToString(); calSteps += "+1)-("; calSteps += A1.ToString(); calSteps += "+1)-("; calSteps += A2.ToString(); calSteps += "+1)+1"; //第二步 int A11 = A1 + 1; int A21 = A2 + 1; calSteps += "="; calSteps += A11.ToString(); calSteps += "×"; calSteps += A21.ToString(); calSteps += "-"; calSteps += A11.ToString(); calSteps += "-"; calSteps += A21.ToString(); calSteps += "+1"; //第三步 int A1_2 = A11 * A21; calSteps += "="; calSteps += A1_2.ToString(); calSteps += "-"; int A12 = A11 + A21; calSteps += A12.ToString(); calSteps += "+1"; int A112 = A1_2 - A12; calSteps += "="; calSteps += A112.ToString(); calSteps += "+1"; // int a_b_2 = a_a_100 - b_b; //第四步 int tmp0 = A112; int tmp1 = 1; int tmp2 = 0; // answer = tmp0 + tmp1 + tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += "("; calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); calSteps += ")÷("; calSteps += valueMC.values[2].ToString(); calSteps += "×"; } calSteps += valueMC.values[3].ToString(); calSteps += ")"; //解题步骤 int A1, A2, A3, A4; int n = valueMC.baseNum; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); A3 = decimal.ToInt32(valueMC.values[2]); A4 = decimal.ToInt32(valueMC.values[3]); } else { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); A4 = decimal.ToInt32(valueMC.values[2]); A3 = decimal.ToInt32(valueMC.values[3]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int baseNum2 = 100; int a = baseNum2 - A2; //第一步 int d10 = d1 * 10 + c1; calSteps += "=("; calSteps += A1.ToString(); calSteps += "÷"; calSteps += A3.ToString(); calSteps += ")×("; calSteps += A2.ToString(); calSteps += "÷"; calSteps += A4.ToString(); calSteps += ")"; //第二步 int x1 = A1 / A3; int x2 = A2 / A4; calSteps += "="; calSteps += x1.ToString(); calSteps += "×"; calSteps += x2.ToString(); ////第三步 //int x23 = x1 + b1; //int x4 = x2 / A2; //calSteps += "="; //calSteps += x23.ToString(); //calSteps += "+"; //calSteps += x4.ToString(); //int x5 = (x23 + x4 * a) / 100; //calSteps += "="; //calSteps += x1.ToString(); //calSteps += "+"; //calSteps += x5.ToString(); decimal answer = 0; answer = x1 * x2; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } if (minValue < 10) { minValue = 10; } if (maxValue > 1000000) { maxValue = 1000000; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = 2;// rand.Next(3, 6); valueABC.answer = 0; //decimal A1, A2 = 0; //int times = rand.Next(1, 10); int d1 = rand.Next(1, 9); //千位数; int a1 = rand.Next(d1, 10); //百位数 int b1 = a1; // 9;// rand.Next(0, 3); //十位数 int c1 = a1 - d1; // rand.Next(5, 10); //个位数 int d2 = 0; int a2 = rand.Next(4, 10); //百位数 int b2 = rand.Next(7, 10); //十位数 int c2 = rand.Next(1, 10); //个位数 decimal A1 = 0, A2 = 0, A3 = 0, A4 = 0; int posRand = rand.Next(0, 2); valueABC.posMul = posRand; int n = rand.Next(2, 11); int baseNum = 37; // a1 * 100 + b1 * 10 + c1; valueABC.baseNum = n; // a1 * 100 + b1 * 10 + c1; if (posRand == 0) { A4 = rand.Next(minValue + 1, maxValue); // / baseNum) * baseNum; //1000 * d1 + 100 * a1 + 10 * b1 + c1; A3 = rand.Next(minValue + 1, maxValue); // / baseNum) * baseNum; //1000 * d1 + 100 * a1 + 10 * b1 + c1; A1 = A3 * rand.Next(1, 12); A2 = A4 * rand.Next(1, 12);; // *(rand.Next(minValue + 1, maxValue + 1) / 5);// (decimal)System.Math.Pow(5, n);// 1000 * d2 + 100 * a2 + 10 * b2 + c2; } else { A4 = rand.Next(minValue + 1, maxValue); // / baseNum) * baseNum; //1000 * d1 + 100 * a1 + 10 * b1 + c1; A3 = rand.Next(minValue + 1, maxValue); // / baseNum) * baseNum; //1000 * d1 + 100 * a1 + 10 * b1 + c1; A2 = A3 * rand.Next(1, 12); A1 = A4 * rand.Next(1, 12);; // *(rand.Next(minValue + 1, maxValue + 1) / 5);// (decimal)System.Math.Pow(5, n);// 1000 * d2 + 100 * a2 + 10 * b2 + c2; } valueABC.values[0] = A1; valueABC.values[1] = A2; valueABC.values[2] = A3; valueABC.values[3] = A4; valueABC.answer = (A1 * A2) / (A3 * A4); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A = decimal.ToInt32(valueMC.values[0]); int B = decimal.ToInt32(valueMC.values[1]); if (valueMC.values[0] < valueMC.values[1]) { A = decimal.ToInt32(valueMC.values[1]); B = decimal.ToInt32(valueMC.values[0]); } int a = A / 10; int b = A % 10; int c = B / 10; int d = B % 10; decimal answer = 0; int a10 = 10 * a; int b_b = b * b; //第一步 calSteps += "="; calSteps += A.ToString(); calSteps += "×("; calSteps += B.ToString(); calSteps += "-1)"; calSteps += "+"; calSteps += A.ToString(); //第二步 int B1 = B - 1; calSteps += "="; calSteps += A.ToString(); calSteps += "×"; calSteps += B1.ToString(); calSteps += "+"; calSteps += A.ToString(); //第三步 calSteps += "="; calSteps += a10.ToString(); calSteps += "×"; calSteps += a10.ToString(); calSteps += "-"; calSteps += b.ToString(); calSteps += "×"; calSteps += b.ToString(); calSteps += "+"; calSteps += A.ToString(); int a_a_100 = a10 * a10; calSteps += "="; calSteps += a_a_100.ToString(); calSteps += "-"; calSteps += b_b.ToString(); calSteps += "+"; calSteps += A.ToString(); int a_b_2 = a_a_100 - b_b; //第四步 int tmp1 = a_b_2; int tmp2 = A; int tmp0 = 0; // answer = tmp0 + tmp1 + tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A1 = decimal.ToInt32(valueMC.values[0]); int A2 = decimal.ToInt32(valueMC.values[1]); if (valueMC.posMul == 1) { A1 = decimal.ToInt32(valueMC.values[1]); A2 = decimal.ToInt32(valueMC.values[0]); } int a = valueMC.a; int b = valueMC.b; int baseNum1 = 100; int baseNum2 = 10; int a1 = A1 / baseNum1; int b1 = (A1 / baseNum2) % 10; int c1 = A1 % 10; int a2 = A2 / baseNum1; int b2 = (A2 / baseNum2) % 10; int c2 = A2 % 10; decimal answer = 0; int c1_10 = 10 - c1; int c2_10 = 10 - c2; //if (A1 >= 1000 && A2 >= 1000) //{ // baseNum = 1000; //} //第一步 calSteps += "="; calSteps += A1.ToString(); calSteps += "×"; calSteps += a.ToString(); calSteps += "×"; //calSteps += A1.ToString(); //calSteps += "+1)-("; calSteps += b.ToString(); //calSteps += "+1)+1"; //第二步 int A11 = A1 * a; calSteps += "="; calSteps += A11.ToString(); calSteps += "×"; calSteps += b.ToString(); //第三步 //第四步 int tmp0 = A11 * b; int tmp1 = 0; int tmp2 = 0; // answer = tmp0 + tmp1 + tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A = decimal.ToInt32(valueMC.values[0]); int B = decimal.ToInt32(valueMC.values[1]); int a = A / 10; int b = A % 10; int c = B % 10; decimal answer = 0; int a10 = a * 10; //第一步 calSteps += "=("; calSteps += A.ToString(); calSteps += "+"; calSteps += c.ToString(); calSteps += ")×("; calSteps += B.ToString(); calSteps += "-"; calSteps += c.ToString(); calSteps += ")+"; calSteps += b.ToString(); calSteps += "×"; calSteps += c.ToString(); //第二步 int A_c = A + c; int B_c = B - c; int b_c = b * c; calSteps += "="; calSteps += A_c.ToString(); calSteps += "×"; calSteps += B_c.ToString(); calSteps += "+"; calSteps += b_c.ToString(); //第三步 int tmp1 = A_c * B_c; int tmp2 = b_c; calSteps += "="; calSteps += tmp1.ToString(); calSteps += "+"; calSteps += tmp2.ToString(); // answer = tmp1 + tmp2; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A1 = decimal.ToInt32(valueMC.values[0]); int A2 = decimal.ToInt32(valueMC.values[1]); if (valueMC.values[0] < valueMC.values[1]) { A1 = decimal.ToInt32(valueMC.values[1]); A2 = decimal.ToInt32(valueMC.values[0]); } int baseNum1 = 100; int baseNum2 = 10; int a1 = A1 / baseNum1; int b1 = (A1 / baseNum2) % 10; int c1 = A1 % 10; int a2 = A2 / baseNum1; int b2 = (A2 / baseNum2) % 10; int c2 = A2 % 10; decimal answer = 0; int c1_10 = 10 - c1; int c2_10 = 10 - c2; //if (A1 >= 1000 && A2 >= 1000) //{ // baseNum = 1000; //} //第一步 //calSteps += "=100×("; //calSteps += b1.ToString(); //calSteps += "×"; //calSteps += b1.ToString(); //calSteps += "-1)+99"; ////calSteps += A1.ToString(); ////calSteps += "+1)-("; ////calSteps += A2.ToString(); ////calSteps += "+1)+1"; ////第二步 //int A11 = b1 * b1 - 1; //calSteps += "=100×"; //calSteps += A11.ToString(); //calSteps += "+99"; ////第三步 //int A1_2 = A11 * 100; //calSteps += "="; //calSteps += A1_2.ToString(); //calSteps += "+99"; //int A112 = A1_2 + 99; //// int a_b_2 = a_a_100 - b_b; ////第四步 //int tmp0 = A112; //int tmp1 = 0; //int tmp2 = 0; //// //answer = tmp0 + tmp1 + tmp2; //if (answer != valueMC.answer) //{ // calSteps += "Error!"; //} calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { //题干 string calSteps = ""; int i; //显示前三个数 for (i = 0; i < 3; i++) { calSteps += valueMC.values[i].ToString(); calSteps += "+"; } calSteps += "......+"; //显示最后三个数 for (i = 3; i < 6; i++) { calSteps += valueMC.values[i].ToString(); if (i != 6 - 1) { calSteps += "+"; } else { calSteps += "="; } } //解题步骤 //第一步 decimal a = valueMC.valueLast; decimal a_1 = a / 2; decimal a_1_2 = a_1 + 1; calSteps += "=("; calSteps += a.ToString(); calSteps += "÷2)"; calSteps += "×("; calSteps += a.ToString(); calSteps += "÷2"; calSteps += "+1)"; decimal b = valueMC.valueStart - 2; decimal b_1 = b / 2; decimal b_1_2 = b_1 + 1; calSteps += "=-("; calSteps += b.ToString(); calSteps += "÷2)"; calSteps += "×("; calSteps += b.ToString(); calSteps += "÷2"; calSteps += "+1)"; //第二步 calSteps += "="; calSteps += a_1.ToString(); calSteps += "×"; calSteps += a_1_2.ToString(); calSteps += "-"; calSteps += b_1.ToString(); calSteps += "×"; calSteps += b_1_2.ToString(); //第三步 calSteps += "="; decimal first = a_1 * a_1_2; decimal second = b_1 * b_1_2; calSteps += first.ToString(); calSteps += "-"; calSteps += second.ToString(); //第四步 decimal answer = first - second; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } //if (minValue < 1000) { minValue = 100; } //if (maxValue < 10000) { maxValue = 1000; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = 2; valueABC.answer = 0; decimal A1, A2; int bitNum = 2; // rand.Next(3, 5); int a1 = 0; // rand.Next(1, 10); //百位数 int b1 = rand.Next(1, 10); //十位数 int c1 = rand.Next(1, 10); //个位数 int a2 = 0; // rand.Next(1, 10); //百位数 int b2 = 1; // rand.Next(1, 10); //十位数 int c2 = rand.Next(1, 10); //个位数 int d1 = 0; int d2 = 0; if (bitNum == 2) // { A1 = 100 * a1 + 10 * b1 + c1; A2 = 100 * a2 + 10 * b2 + c2; } else if (bitNum == 3) // { A1 = 100 * a1 + 10 * b1 + c1; A2 = 100 * a2 + 10 * b2 + c2; } else { A1 = 1000 * a1 + 100 * b1 + 10 * c1 + d1; A2 = 1000 * a2 + 100 * b2 + 10 * c2 + d2; } //int posRand = rand.Next(0, 2); //if (posRand == 0) //{ // A = 10 * a + b; // B = 10 * c + d; //} //else //{ // B = 10 * a + b; // A = 10 * c + d; //} valueABC.values[0] = A1; valueABC.values[1] = A2; valueABC.answer = A1 * A2; }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[i].ToString(); calSteps += "×"; } calSteps += valueMC.values[num - 1].ToString(); //解题步骤 //按5、2倍数规律交换、结合各个因数 decimal[] As = new decimal[num]; decimal[] bs = new decimal[num]; for (i = 0; i < num; i++) { bs[i] = valueMC.values[0] % 10; } decimal tmp; if (bs[0] == 5 && bs[2] == 2) { As[0] = valueMC.values[0]; As[1] = valueMC.values[2]; As[2] = valueMC.values[1]; } else if (bs[1] == 5 && bs[2] == 2) { As[0] = valueMC.values[1]; As[1] = valueMC.values[2]; As[2] = valueMC.values[0]; } else// (bs[0] == 5 && bs[1] == 2) { As[0] = valueMC.values[2]; As[1] = valueMC.values[1]; As[2] = valueMC.values[0]; } if (num == 4) { As[3] = valueMC.values[3]; } if (num == 5) { //if (bs[3] == 5 && bs[4] == 2 As[3] = valueMC.values[3]; As[4] = valueMC.values[4]; } int A1 = decimal.ToInt32(valueMC.values[0]); int A2 = decimal.ToInt32(valueMC.values[1]); //第一步 calSteps += "=("; calSteps += As[0].ToString(); calSteps += "×"; calSteps += As[1].ToString(); calSteps += ")×"; calSteps += As[2].ToString(); if (num == 4) { calSteps += "×"; calSteps += As[3].ToString(); } if (num == 5) { if ((bs[3] == 5 && bs[4] == 2) || (bs[3] == 2 && bs[4] == 5)) { calSteps += "×("; calSteps += As[3].ToString(); calSteps += "×"; calSteps += As[4].ToString(); calSteps += ")"; } else { calSteps += "×"; calSteps += As[3].ToString(); calSteps += "×"; calSteps += As[4].ToString(); } } //第二步 calSteps += "="; decimal As01 = As[0] * As[1]; calSteps += As01.ToString(); calSteps += "×"; calSteps += As[2].ToString(); if (num == 4) { calSteps += "×"; calSteps += As[3].ToString(); } decimal As34 = 1; if (num == 5) { As34 = As[3] * As[4]; if ((bs[3] == 5 && bs[4] == 2) || (bs[3] == 2 && bs[4] == 5)) { calSteps += "×"; calSteps += As34.ToString(); } else { calSteps += "×"; calSteps += As[3].ToString(); calSteps += "×"; calSteps += As[4].ToString(); } } //第三步 calSteps += "="; decimal As012 = As01 * As[2]; if (num == 4) { calSteps += As012.ToString(); calSteps += "×"; calSteps += As[3].ToString(); // calSteps += "="; As012 *= As[3]; } if (num == 5) { calSteps += As012.ToString(); if ((bs[3] == 5 && bs[4] == 2) || (bs[3] == 2 && bs[4] == 5)) { calSteps += "×"; calSteps += As34.ToString(); // calSteps += "="; As012 *= As34; } else { calSteps += "×"; calSteps += As[3].ToString(); calSteps += "×"; calSteps += As[4].ToString(); // calSteps += "="; As012 *= As[3]; calSteps += As012.ToString(); calSteps += "×"; calSteps += As[4].ToString(); // calSteps += "="; As012 *= As[4]; } } //第四步 int tmp0 = decimal.ToInt32(As012); int tmp1 = 0; int tmp2 = 0; // decimal answer = tmp0 + tmp1 + tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } //calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 calSteps += valueMC.values[0].ToString(); calSteps += "×"; calSteps += valueMC.values[1].ToString(); //解题步骤 int A1 = decimal.ToInt32(valueMC.values[0]); int A2 = decimal.ToInt32(valueMC.values[1]); //if (valueMC.values[0] < valueMC.values[1]) //{ // A = decimal.ToInt32(valueMC.values[1]); // B = decimal.ToInt32(valueMC.values[0]); //} int baseNum1 = 100; int baseNum2 = 10; int a1 = A1 / baseNum1; int b1 = (A1 / baseNum2) % 10; int c1 = A1 % 10; int a2 = A2 / baseNum1; int b2 = (A2 / baseNum2) % 10; int c2 = A2 % 10; decimal answer = 0; //if (A1 >= 1000 && A2 >= 1000) //{ // baseNum = 1000; //} //第一步 calSteps += "=10×("; calSteps += A1.ToString(); calSteps += "+"; calSteps += b1.ToString(); calSteps += "×"; calSteps += c2.ToString(); calSteps += ")+"; calSteps += c1.ToString(); calSteps += "×"; calSteps += c2.ToString(); //第二步 int A1b1c2 = A1 + b1 * c2; calSteps += "=10×"; calSteps += A1b1c2.ToString(); int c1c2 = c1 * c2; calSteps += "+"; calSteps += c1c2.ToString(); //calSteps += ")+("; //int a1c2 = baseNum1 * a1 * c2; //calSteps += a1c2.ToString(); //calSteps += "+"; //int a2c1 = baseNum1 * a2 * c1; //calSteps += a2c1.ToString(); //calSteps += ")+("; //int b1a2 = 10 * b1 * 100 * a2; //calSteps += b1a2.ToString(); //int b1c2 = 10 * b1 * c2; //calSteps += "+"; //calSteps += b1c2.ToString(); //calSteps += ")"; //第三步 int A1b1c2_10 = 10 * A1b1c2; calSteps += "="; calSteps += A1b1c2_10.ToString(); calSteps += "+"; calSteps += c1c2.ToString(); //int a_a_100 = a10 * a10; //calSteps += "="; //calSteps += a_a_100.ToString(); //calSteps += "-"; //calSteps += b_b.ToString(); //calSteps += "-"; //calSteps += A.ToString(); // int a_b_2 = a_a_100 - b_b; //第四步 int tmp0 = A1b1c2_10; int tmp1 = c1c2; int tmp2 = 0; // answer = tmp0 + tmp1 + tmp2; if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } if (minValue < 10) { minValue = 10; } if (maxValue > 100000000) { maxValue = 100000000; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = 2;// rand.Next(3, 6); valueABC.answer = 0; //decimal A1, A2 = 0; //int times = rand.Next(1, 10); int a1 = 0; // rand.Next(0, 5); //百位数 int b1 = rand.Next(0, 5); //十位数 int c1 = 5; // rand.Next(7, 10); //个位数 int a2 = rand.Next(4, 10); //百位数 int b2 = rand.Next(7, 10); //十位数 int c2 = rand.Next(1, 10); //个位数 int d1 = 0; int d2 = 0; decimal A1 = 0, A2 = 0; int posRand = 0;// rand.Next(0, 2); valueABC.posMul = posRand; int n = rand.Next(2, 11); int baseNum = (int)System.Math.Pow(2, n); //a1 * 100 + b1 * 10 + c1; valueABC.baseNum = n; // a1 * 100 + b1 * 10 + c1; if (posRand == 0) { A1 = (rand.Next(baseNum * 2, maxValue + 1) / baseNum) * baseNum; //1000 * d1 + 100 * a1 + 10 * b1 + c1; A2 = baseNum; // *(rand.Next(minValue + 1, maxValue + 1) / 5);// (decimal)System.Math.Pow(5, n);// 1000 * d2 + 100 * a2 + 10 * b2 + c2; } else { //A2 = (decimal)System.Math.Pow(5, n); //1000 * d1 + 100 * a1 + 10 * b1 + c1; //A1 = (decimal)System.Math.Pow(2, n); ;// 1000 * d2 + 100 * a2 + 10 * b2 + c2; A2 = (rand.Next(minValue, maxValue + 1) / 3) * 3; //1000 * d1 + 100 * a1 + 10 * b1 + c1; A1 = 667; // *(rand.Next(minValue + 1, maxValue + 1) / 5);// (decimal)System.Math.Pow(5, n);// 1000 * d2 + 100 * a2 + 10 * b2 + c2; } valueABC.values[0] = A1; valueABC.values[1] = A2; valueABC.answer = A1 / A2; }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "×"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; if (valueMC.values[0] > valueMC.values[1]) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int baseNum2 = 100; int bs = 100 - A2; //第一步 int b1c1 = 10 * b1 + c1; int c1_1 = 10 - c1; int A1_1 = A1 + c1_1; calSteps += "="; calSteps += "10000-"; calSteps += b1c1.ToString(); calSteps += "×"; calSteps += b1c1.ToString(); //第二步 int b1c12 = b1c1 * b1c1; calSteps += "=10000-"; calSteps += b1c12.ToString(); //第三步 //decimal AA11 = A100 + a100bs; //decimal cc11 = b10bs; //calSteps += "="; //calSteps += AA11.ToString(); //calSteps += "-"; //calSteps += cc11.ToString(); decimal answer = 0; answer = 10000 - b1c12; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } if (minValue < 10) { minValue = 10; } if (maxValue < 100) { maxValue = 100; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = 3; // rand.Next(10, 100 + 1); valueABC.answer = 0; int mode = rand.Next(0, 4); //三项加减混合式,0是两个加,1是一加一减,2是一减一加,3是两个减 valueABC.mode = mode; decimal A, B, C; if (mode == 0) //两个加号 { B = rand.Next(minValue, maxValue + 1); C = rand.Next(minValue + 1, maxValue + 1); int c = decimal.ToInt32(C) % 100; int a = 100 - c; A = rand.Next(minValue, maxValue + 1); A -= decimal.ToInt32(A) % 100; A += a; valueABC.values[0] = A; valueABC.values[1] = B; valueABC.values[2] = C; valueABC.answer = A + (B + C); } else if (mode == 1) //一加一减 { C = rand.Next(minValue, maxValue + 1); int cInt = decimal.ToInt32(C); B = rand.Next(cInt + 1, maxValue + cInt + 2); int c = decimal.ToInt32(C) % 100; int a = c; A = rand.Next(cInt + 1, maxValue + cInt + 2); A -= decimal.ToInt32(A) % 100; A += 100; A += a; valueABC.values[0] = A; valueABC.values[1] = B; valueABC.values[2] = C; valueABC.answer = A + (B - C); } else if (mode == 2) //一减一加 { C = rand.Next(minValue, maxValue + 1); int cInt = decimal.ToInt32(C); B = rand.Next(minValue + 1, maxValue + 1); int bInt = decimal.ToInt32(B); int c = decimal.ToInt32(C) % 100; int a = c; A = rand.Next(cInt + bInt + 1, maxValue + cInt + bInt + 2); A -= decimal.ToInt32(A) % 100; A += 100; A += a; valueABC.values[0] = A; valueABC.values[1] = B; valueABC.values[2] = C; valueABC.answer = A - (B + C); } else if (mode == 3) //两个减 { C = rand.Next(minValue, maxValue + 1); int cInt = decimal.ToInt32(C); B = rand.Next(cInt + 1, maxValue + cInt + 2); int bInt = decimal.ToInt32(B); int c = decimal.ToInt32(C) % 100; int a = 100 - c; A = rand.Next(bInt + 1, maxValue + bInt + 2); A -= decimal.ToInt32(A) % 100; A += 100; A += a; valueABC.values[0] = A; valueABC.values[1] = B; valueABC.values[2] = C; valueABC.answer = A - (B - C); } }
private void GetRandomValues(SectionBaseInfo info, ref valuesStruct valueABC) { int minValue = 10; int maxValue = 100; if (info is SectionValueRangeInfo) { SectionValueRangeInfo rangeInfo = info as SectionValueRangeInfo; minValue = decimal.ToInt32(rangeInfo.MinValue); maxValue = decimal.ToInt32(rangeInfo.MaxValue); } if (minValue < 10) { minValue = 10; } if (maxValue > 10000000) { maxValue = 10000000; } Random rand = new Random((int)DateTime.Now.Ticks); valueABC.number = 2;// rand.Next(3, 6); valueABC.answer = 0; //decimal A1, A2 = 0; //int times = rand.Next(1, 10); int a1 = 0; // rand.Next(1, 9); //百位数 int b1 = rand.Next(5, 10); //十位数 int c1 = rand.Next(7, 10); //个位数 int a2 = rand.Next(1, 9); //百位数 int b2 = 9; // rand.Next(0, 10); //十位数 int c2 = 9 - a2; // rand.Next(1, 10); //个位数 int d1 = 0; int d2 = 0; decimal A1 = 0, A2 = 0; int posRand = 0;// rand.Next(0, 2); valueABC.posMul = posRand; int n = rand.Next(0, 4); valueABC.baseNum = 9; if (posRand == 0) { A1 = 123456789; // rand.Next(minValue, maxValue); //1000 * d1 + 100 * a1 + 10 * b1 + c1; A2 = 9 * rand.Next(1, 10); //(1000 * d2 + 100 * a2 + 10 * b2 + c2); } else { A2 = rand.Next(minValue, maxValue); //1000 * d1 + 100 * a1 + 10 * b1 + c1; A1 = 9 * (1000 * d2 + 100 * a2 + 10 * b2 + c2); } valueABC.values[0] = A1; valueABC.values[1] = A2; valueABC.answer = A1 * A2; }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "×"; } calSteps += valueMC.values[1].ToString(); //解题步骤 int A1, A2; if (valueMC.values[0] > 1000) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } int baseNum = 1000; int a1 = (A1 % baseNum) / 100; int b1 = ((A1 % baseNum) % 100) / 10; int c1 = ((A1 % baseNum) % 100) % 10; int a2 = (A2 % baseNum) / 100; int b2 = ((A2 % baseNum) % 100) / 10; int c2 = ((A2 % baseNum) % 100) % 10; int d1 = A1 / 1000; int d2 = A2 / 1000; int m = 1000 - A1; int n = 1000 - A2; int mn = m * n; //第一步 calSteps += "=("; calSteps += A1.ToString(); calSteps += "-"; calSteps += n.ToString(); calSteps += ")×("; calSteps += A2.ToString(); calSteps += "+"; calSteps += n.ToString(); calSteps += ")+"; calSteps += m.ToString(); calSteps += "×"; calSteps += n.ToString(); //第二步 decimal A1n = A1 - n; decimal A2n = A2 + n; calSteps += "="; calSteps += A1n.ToString(); calSteps += "×"; calSteps += A2n.ToString(); calSteps += "+"; calSteps += mn.ToString(); //第三步 decimal kk2 = A1n * A2n; calSteps += "="; calSteps += kk2.ToString(); calSteps += "+"; calSteps += mn.ToString(); decimal answer = 0; answer = kk2 + mn; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { string calSteps = ""; //题干 int num = valueMC.number; int i, j; //for (i = 0; i < num - 1; i++) { calSteps += valueMC.values[0].ToString(); calSteps += "×"; } calSteps += valueMC.values[1].ToString(); //解题步骤 decimal A1, A2; decimal n = valueMC.baseNum; if (valueMC.posMul == 0) { A1 = decimal.ToInt32(valueMC.values[0]); A2 = decimal.ToInt32(valueMC.values[1]); } else { A2 = decimal.ToInt32(valueMC.values[0]); A1 = decimal.ToInt32(valueMC.values[1]); } //int baseNum = 1000; //int a1 = (A1 % baseNum) / 100; //int b1 = ((A1 % baseNum) % 100) / 10; //int c1 = ((A1 % baseNum) % 100) % 10; //int a2 = (A2 % baseNum) / 100; //int b2 = ((A2 % baseNum) % 100) / 10; //int c2 = ((A2 % baseNum) % 100) % 10; //int d1 = A1 / 1000; //int d2 = A2 / 1000; //int c21 = 10 - c2; //int A21 = A2 + c21; n = A2 / 9; //第一步 calSteps += "="; calSteps += A1.ToString(); calSteps += "×(9×"; calSteps += n.ToString(); calSteps += ")"; //第二步 //calSteps += "="; //calSteps += A1.ToString(); //calSteps += "×"; //calSteps += A21.ToString(); //calSteps += "-"; //calSteps += A1.ToString(); //calSteps += "×"; //calSteps += c21.ToString(); ////第三步 //calSteps += "="; //int A1A21 = A1 * A21; //int A1c21 = A1 * c21; //calSteps += A1A21.ToString(); //calSteps += "-"; //calSteps += A1c21.ToString(); //calSteps += "="; //int b10b20 = b10 * b20; //int c1c2 = c1 * c2; //int bc10 = (b1 * c2 + b2 * c1) * 10; //calSteps += b10b20.ToString(); //calSteps += "+"; //calSteps += c1c2.ToString(); //calSteps += "+"; //calSteps += bc10.ToString(); decimal answer = 0; answer = A1 * 9 * n; //第四步 if (answer != valueMC.answer) { calSteps += "Error!"; } calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }