关于C#成绩打分系统的代码原理

  如果用窗体设计20(或者更多)选择题,或者直接用代码表示;有的人只做对几个,有的人只做错几个,各种情况都有,那么如何来筛选判断最后的成绩得分?如果用if选择结构来判断筛选,那么就要考虑到所有的情况,至少要反复筛选几十次,所以我就想知道有没有稍微简单一点点的算法……

用for循环,一个数组装每到题目的分值,另一个数组装每到题目是否正确或者转每道题的得分比例(因为不是所有题目都是只有满分和0分),如第一题20分,做对了权值为1,做错了权值为0得分分别为20×1和20×0
以下是C语言实现(原谅我没学过C#)

#include "stdio.h"

int CalcResult(int *grade,int *istrue,int n)//grade为分数数组,根据istrue[i]是0还是1判断第i+1到题是否正确,n为总题目数 
{
    int i,result=0;
    for(i=0;i<n;i++)
    {
        printf("你第%2d题总分为%3d 得分为:%3d\n",i+1,grade[i],istrue[i]*grade[i]);
        result+=grade[i]*istrue[i];
    }
    return result;
}

int main()
{
    int grade[20],istrue[20],i;
    for(i=0;i<20;i++)
    {
        grade[i]=(i+1);//给每道题赋分
        istrue[i]=i%2;//模拟批改a 
    }
    printf("result=%d",CalcResult(grade,istrue,20));
    return 0;
}