神奇的单项选择题和多项选择题答案 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的选项生成算法在上两篇文章中

js选项生成算法

posted @ 2017-10-21 09:29  神将飞蓬  阅读(227)  评论(0编辑  收藏  举报