C#竞赛题.docx

上传人:b****4 文档编号:6797118 上传时间:2023-05-10 格式:DOCX 页数:11 大小:20.56KB
下载 相关 举报
C#竞赛题.docx_第1页
第1页 / 共11页
C#竞赛题.docx_第2页
第2页 / 共11页
C#竞赛题.docx_第3页
第3页 / 共11页
C#竞赛题.docx_第4页
第4页 / 共11页
C#竞赛题.docx_第5页
第5页 / 共11页
C#竞赛题.docx_第6页
第6页 / 共11页
C#竞赛题.docx_第7页
第7页 / 共11页
C#竞赛题.docx_第8页
第8页 / 共11页
C#竞赛题.docx_第9页
第9页 / 共11页
C#竞赛题.docx_第10页
第10页 / 共11页
C#竞赛题.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C#竞赛题.docx

《C#竞赛题.docx》由会员分享,可在线阅读,更多相关《C#竞赛题.docx(11页珍藏版)》请在冰点文库上搜索。

C#竞赛题.docx

C#竞赛题

学院C#竞赛题目:

第一题:

(中等)

写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。

例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。

  要求上线精确到万下线精确到分。

参考代码如下:

usingSystem;

namespaceObjectInjection

{

/*用法:

DecimalToUpperx=newDecimalToUpper();

*this.textBox2.Text=x.ToUpper(d);

*/

publicclassDecimalToUpper

{

publicDecimalToUpper()

{

//

//TODO:

在此处添加构造函数逻辑

//

}

///

///小写金额转换为大写金额,其他条件:

金额小于一万亿,最多两位小数

///

///源金额,d《1000000000000.00(一万亿),且最多两位小数

///结果,大写金额

publicstringToUpper(decimald)

{

if(d==0)

return"零元整";

stringje=d.ToString("####.00");

if(je.Length>15)

return"";

je=newString('0',15-je.Length)+je;//若小于15位长,前面补0

stringstry=je.Substring(0,4);//取得'亿'单元

stringstrw=je.Substring(4,4);//取得'万'单元

stringstrg=je.Substring(8,4);//取得'元'单元

stringstrf=je.Substring(13,2);//取得小数部分

stringstr1="",str2="",str3="";

str1=this.getupper(stry,"亿");//亿单元的大写

str2=this.getupper(strw,"万");//万单元的大写

str3=this.getupper(strg,"元");//元单元的大写

 

stringstr_y="",str_w="";

if(je[3]=='0'||je[4]=='0')//亿和万之间是否有0

str_y="零";

if(je[7]=='0'||je[8]=='0')//万和元之间是否有0

str_w="零";

 

stringret=str1+str_y+str2+str_w+str3;//亿,万,元的三个大写合并

for(inti=0;i

{

if(ret[i]!

='零')

{

ret=ret.Substring(i);

break;

}

}

for(inti=ret.Length-1;i>-1;i--)//去掉最后的"零"

{

if(ret[i]!

='零')

{

ret=ret.Substring(0,i+1);

break;

}

}

if(ret[ret.Length-1]!

='元')//若最后不位不是'元',则加一个'元'字

ret=ret+"元";

if(ret=="零零元")//若为零元,则去掉"元数",结果只要小数部分

ret="";

if(strf=="00")//下面是小数部分的转换

{

ret=ret+"整";

}

else

{

stringtmp="";

tmp=this.getint(strf[0]);

if(tmp=="零")

ret=ret+tmp;

else

ret=ret+tmp+"角";

tmp=this.getint(strf[1]);

if(tmp=="零")

ret=ret+"整";

else

ret=ret+tmp+"分";

}

if(ret[0]=='零')

{

ret=ret.Substring

(1);//防止0.03转为"零叁分",而直接转为"叁分"

}

returnret;//完成,返回

 

}

///

///把一个单元转为大写,如亿单元,万单元,个单元

///

///这个单元的小写数字(4位长,若不足,则前面补零)

///亿,万,元

///转换结果

privatestringgetupper(stringstr,stringstrDW)

{

if(str=="0000")

return"";

stringret="";

stringtmp1=this.getint(str[0]);

stringtmp2=this.getint(str[1]);

stringtmp3=this.getint(str[2]);

stringtmp4=this.getint(str[3]);

if(tmp1!

="零")

{

ret=ret+tmp1+"仟";

}

else

{

ret=ret+tmp1;

}

if(tmp2!

="零")

{

ret=ret+tmp2+"佰";

}

else

{

if(tmp1!

="零")//保证若有两个零'00',结果只有一个零,下同

ret=ret+tmp2;

}

if(tmp3!

="零")

{

ret=ret+tmp3+"拾";

}

else

{

if(tmp2!

="零")

ret=ret+tmp3;

}

if(tmp4!

="零")

{

ret=ret+tmp4;

}

if(ret[0]=='零')//若第一个字符是'零',则去掉

ret=ret.Substring

(1);

if(ret[ret.Length-1]=='零')//若最后一个字符是'零',则去掉

ret=ret.Substring(0,ret.Length-1);

returnret+strDW;//加上本单元的单位

}

///

///单个数字转为大写

///

///小写阿拉伯数字0---9

///大写数字

privatestringgetint(charc)

{

stringstr="";

switch(c)

{

case'0':

str="零";

break;

case'1':

str="壹";

break;

case'2':

str="贰";

break;

case'3':

str="叁";

break;

case'4':

str="肆";

break;

case'5':

str="伍";

break;

case'6':

str="陆";

break;

case'7':

str="柒";

break;

case'8':

str="拐";

break;

case'9':

str="玖";

break;

}

returnstr;

}

}

}

第二题:

(中)

有一群人被困在了一个小岛上,他们只有一个竹排可以逃生,竹排只能坐一个人,于是他们决定通过玩退圈游戏来决定哪个人可以坐上竹排逃生。

这些人围成一个圆圈,从1开始每个人顺序编号,他们商定了一个不幸的数字unlunckyNumber,然后从1的人开始报数,报到unlunckyNumber的倍数就退出游戏,真到最后剩下一个人,这个人就是可以得到竹排的人,编写程序,在Main()方法中输入玩游戏的人数和不幸的数字unluckyNumber,自定义Play()方法按游戏规则进行游戏,方法返回赢的人编号。

参考代码:

 usingSystem; 

usingSystem.Collections.Generic; 

usingSystem.Text; 

namespaceConsoleApplication1 

classProgram 

staticvoidMain(string[]args) 

intunlunckyNumbe;//厄运数字 

intpeople;//人数 

Console.WriteLine("这是一个非常经典的死亡游戏,只有一个人可以生存!

"); 

Console.WriteLine("请选择游戏人数"); 

people=int.Parse(Console.ReadLine()); 

Console.WriteLine("请选择厄运数字"); 

unlunckyNumbe=int.Parse(Console.ReadLine()); 

intend=start(unlunckyNumbe,people,outend); 

Console.WriteLine("最后的胜利者是:

{0}",end); 

Console.ReadLine(); 

privatestaticintstart(intunlunckyNumbe,intpeople,outintend) 

Console.WriteLine("开始游戏了!

"); 

inti=0;//数组循环的索引 

bool[]array=newbool[people];//定义的游戏人数 

intliver=people;//剩下的生存者 

intcountnumber=0;//报号 

for(i=0;i

array[i]=true;//初始化每个人都为真 

do 

for(i=0;i

if(array[i]==true) 

countnumber++;//当为真的时候报数 

if(countnumber%unlunckyNumbe==0) 

array[i]=false; 

liver--;//生存人数减1 

if(liver==1)//当生存人数仅剩一人时 

break; 

}while(liver>1); 

for(i=0;i

if(array[i]) 

break; 

end=i+1; 

returnend; 

}

 

第三题:

(简单)

删除一个整型数组中重复的元素,只保留一个。

参考代码:

class去除重复元素

   {

       staticvoidMain(string[]args)

       {

           stringss=Console.ReadLine();

           int[]aa=newint[ss.Length];

           for(inti=0;i

           {

               aa[i]=Convert.ToInt32(ss[i].ToString());

           }

           intlen=aa.Length;

           for(inti=0;i

           {

               for(intj=i+1;j

               {

                   if(aa[i]==aa[j])

                   {

                       for(intm=j;m

                       {

                           aa[m]=aa[m+1];

                            

                       }

                       len--;

                       if(aa[i]==aa[j])

                       {j--;}

                   } 

               }

           }

           for(inti=0;i

           {

               Console.WriteLine(aa[i]);

           }

           Console.ReadLine();

       }

   }

第四题:

(简单)

齐天大圣在天宫摘了一个蟠桃回来,想要分给自己的子孙但是猴子太多了,大圣想了一个方法,猴子们站成一排,然后报数,“1”,“2”,“1”,“2”…按照这种顺序,第一次凡是数到1的都被淘汰,剩下的人继续从1开始报数,组数字后留下的猴子就是桃子的主人。

现在要求猴子的数量由输入决定,然后求出最后成功的是第几个。

 

第五题:

(难)

5.A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些

  人参加了竞赛:

  

(1)A参加时,B也参加;

(2)B和C只有一个人参加;

  (3)C和D或者都参加,或者都不参加;

  (4)D和E中至少有一个人参加;

  (5)如果E参加,那么A和D也都参加。

        static void Main(string[] args)

        {

            char[] name={'A','B','C','D','E'};

            int[] value = new int[5];

            for (value[0]=0;value[0]<2;value [0]++)

                for (value[1]=0; value[1] < 2; value[1]++)

                    for (value[2]=0; value[2] < 2; value[2]++)

                        for (value[3]=0; value[3] < 2; value[3]++)

                            for (value[4]=0; value[4] < 2; value[4]++)

                            {

                                if ((value[1] >= value[0]) && (value[1] + value[2] == 1) && (value[2] == value[3]) && (value[3] + value[4]==1) && (value[4]==0 || value[4]==1 && value[0]==1 && value[3]==1))

                                {

                                    for (int i = 0; i < 5; i++)

                                    {

                                        if (value[i]==1)

                                        {

                                            Console.WriteLine("{0}参加", name[i]);

                                        }

                                        else

                                        {

                                            Console.WriteLine("{0}不参加", name[i]);

                                        }

                                    }

                                }

                            }

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2