神奇的单项选择题和多项选择题答案 c#后台选项生成算法
选项答案可以用纯数字存储(其实这种也是很好处理选择答案的的方法),这就依靠后台的选项生成算法
选项生成算法(A~Z)
int ind =Convert.ToInt32(TextBox1.Text); string ret = ""; for (var i = 0; i < 26; i++) { int pow = Convert.ToInt32(Math.Pow(2, i)); if (pow > ind) { break; } if ((ind & pow) > 0) { if (ret.Length == 0) { ret = Convert.ToChar(65 + i)+""; } else { ret += "、" + Convert.ToChar(65 + i); } } }
简单的单项选择题和多项选择题答案生成的后台和前端页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> </div> </form> </body> </html>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { int ind =Convert.ToInt32(TextBox1.Text); string ret = ""; for (var i = 0; i < 26; i++) { int pow = Convert.ToInt32(Math.Pow(2, i)); if (pow > ind) { break; } if ((ind & pow) > 0) { if (ret.Length == 0) { ret = Convert.ToChar(65 + i)+""; } else { ret += "、" + Convert.ToChar(65 + i); } } } //测试分割的是否可行 string[] str=ret.Split('、'); string s = ""; for (int i = 0; i < str.Length; i++) { s += str[i]+","; } TextBox2.Text = s; //return ret; } }
ps:js的选项生成算法在上两篇文章中