C#编程入门程序8.docx
《C#编程入门程序8.docx》由会员分享,可在线阅读,更多相关《C#编程入门程序8.docx(17页珍藏版)》请在冰豆网上搜索。
![C#编程入门程序8.docx](https://file1.bdocx.com/fileroot1/2023-1/3/94ffad53-b471-4ca9-8fc8-b863c8385a94/94ffad53-b471-4ca9-8fc8-b863c8385a941.gif)
C#编程入门程序8
c#程序设计基础必做习题集(3)
十一.多重循环
任务76:
按照以下的要求编写程序:
(1)编写程序利用for循环在控制台上打印一行10个“*”;
(2)编写程序利用二重for循环在控制台上打印10行10列个“*”。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=1;i<=10;i++)
Console.Write("*");
Console.WriteLine("\n---------------------");
for(inti=1;i<=10;i++)
{
for(intj=1;j<=10;j++)
Console.Write("*");
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务77:
编写程序利用二重循环打印如下的图形:
*
**
***
****
*****
******
*******
********
*********
**********
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=1;i<=10;i++)//一共印打10行
{
for(intj=1;j<=i;j++)//第i行打印i个“*”
Console.Write("*");
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务78:
编写程序利用二重循环打印如下图形:
****
*****
******
*******
********
*********
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=4;i<=9;i++)
{
for(intj=1;j<=i;j++)
Console.Write("*");
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务79:
打印10行“*”,要求每行“*”的个数是个0到20之间的随机整数。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
Randomrnd=newRandom();
for(inti=1;i<=10;i++)
{
intx=rnd.Next(0,20);//产生0到20之间的随机整数x
for(intj=1;j<=x;j++)//每行打印x个“*”
Console.Write("*");
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务80:
编写程序,利用二重循环打印如下的图形:
*
***
*****
*******
*********
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("*");//空8,打1……1
Console.WriteLine("***");//空7,打3……2
Console.WriteLine("*****");//空6,打5……3
Console.WriteLine("*******");//空5,打7……4
Console.WriteLine("*********");//空4,打9……5
Console.WriteLine("***********");//空3,打11……6
//空格数=f(i)=9-i
//星的个数=g(i)=2*i-1
//第i行,需要先打印-i个空格,再打印*i-1个“*”
for(inti=1;i<=6;i++)
{
for(intj=1;j<=9-i;j++)//打印第i行的空格
Console.Write("");
for(intj=1;j<=2*i-1;j++)//打印第i行的“*”
Console.Write("*");
Console.Write("\n");
}
Console.ReadLine();
}
}
}
任务81:
编写程序打印如下的图形:
AAAAAAAAAA
BBBBBBBBBB
CCCCCCCCCC
DDDDDDDDD
EEEEEEEEEE
FFFFFFFFFFF
GGGGGGGGG
HHHHHHHHH
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=1;i<=8;i++)//控制打印8行
{
for(intj=1;j<=10;j++)//控制每行打印的字母
Console.Write((char)(i+64));
Console.Write("\n");
}
Console.ReadKey();
}
}
}
任务82:
有两个乒乓球队一队和二队,一队的选手有A、B、C、D、E五名选手,二队的选手有F、G、H、I、J,要求两个队的所有选手两两进行对阵,请编写程序打印比赛对阵情况表。
(也可以通过穷举法去掉相等的情况)
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication7
{
classProgram
{
staticvoidMain(string[]args)
{
for(charteam1='A';team1<='E';team1++)
{
for(charteam2='F';team2<='J';team2++)
Console.WriteLine(team1+"--------"+team2);
}
Console.ReadLine();
}
}
}
任务83:
已知有A、B、C、D、E、F、G六支篮球队参加篮球比赛,本次比赛采用的方式是打循环赛,即每两支球队之间都需要进行对阵,编写程序,打印本次比赛的对阵情况表。
(也可以通过穷举法去掉相等的情况)
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication7
{
classProgram
{
staticvoidMain(string[]args)
{
for(charteam1='A';team1<='E';team1++)
{
for(charteam2=(char)(team1+1);team2<='F';team2++)
Console.WriteLine(team1+"--------"+team2);
}
Console.ReadLine();
}
}
}
任务84:
公元五世纪末,我国古代的数额学家张丘建在的《算经》中提出了著名的“百钱百鸡问题”:
一只公鸡5元钱,一只母鸡3元钱,三只小鸡一元钱,现在又100元钱,要正好买100只鸡,可以买公鸡、母鸡、小鸡各多少只?
请打印所有的买法。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
//x表示公鸡的个数,y表示母鸡的个数,z表示小鸡的个数
Console.WriteLine("所有的买法如下:
");
for(intx=0;x<=20;x++)
{
for(inty=0;y<=33;y++)
{
intz=100-x-y;
if(z%3==0&&x*5+y*3+z/3==100)
{
Console.WriteLine("公鸡{0}只,母鸡{1}只,小鸡{2}只;",x,y,z);
}
}
}
Console.ReadKey();
}
}
}
任务85:
编写程序利用二重循环,求出所有的1000到10000之间的素数:
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=1000;i<=10000;i++)
{
boolisPrime=true;
for(intj=2;j<=i-1;j++)//判断i是否是素数
{
if(i%j==0)
isPrime=false;
}
if(isPrime)//通过标志变量来决定是否是素数
Console.Write(i+"");
}
Console.ReadKey();
}
}
}
任务86:
打印如下图所示的乘法口诀表:
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=1;i<=9;i++)
{
for(intj=1;j<=i;j++)
{
Console.Write("{0}*{1}={2}",j,i,j*i);
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
任务87:
随机产生8个0到15之间的整数,编写程序求出这8个随机整数的阶乘,再求出这8个阶乘的和。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication4
{
classProgram
{
staticvoidMain(string[]args)
{
Randomrnd=newRandom();
longsum=0;
for(inti=1;i<=8;i++)
{
intx=rnd.Next(0,15);//随机产生8个0到15的整数
longp=1;
if(x>0)
{
for(intj=1;j<=x;j++)//求x的阶乘
p=p*j;
Console.WriteLine("{0}!
={1}",x,p);
}
else
p=1;//0的阶乘是1
sum=sum+p;//求所有阶乘的和
}
Console.WriteLine("所有以上的阶乘之和={0}",sum);
Console.ReadKey();
}
}
}
任务88:
随机产生10个100到10000之间的整数,求这10个随机整数的逆数(即反向数),并求这些逆数的和。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication4
{
classProgram
{
staticvoidMain(string[]args)
{
Randomrnd=newRandom();
intsum=0;
for(inti=1;i<=10;i++)
{
intr=rnd.Next(10,10000);
Console.Write("{0}的逆数是:
",r);
intreverse=0;
do
{
intp=r%10;//获取个位数
reverse=reverse*10+p;
r=r/10;
}while(r!
=0);
Console.WriteLine(reverse);
sum=sum+reverse;//求所有逆数之和
}
Console.ReadKey();
}
}
}
任务89:
编写程序找出2到10000之间的所有个位数是1的素数,并显示出来,要求每行显示5个。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication4
{
classProgram
{
staticvoidMain(string[]args)
{
intcount=0;
for(inti=2;i<=10000;i++)
{
boolisPrime=true;//判断i是否是素数
for(intj=2;j<=i-1;j++)
{
if(i%j==0)
{
isPrime=false;
break;
}
}
if(isPrime)//如果是素数,在判断它的各位是否是1
{
if(i%10==1)//个位数是1
{
Console.Write(i+"");
count++;
if(count%5==0)//控制每显示5个就换一行
Console.Write("\n");
}
}
}
Console.ReadKey();
}
}
}
任务90:
通过键盘输入一个正整数n,找出1到n之间所有的回文数。
所谓的回文数指本身等于它的逆数的数。
参考代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication4
{
classProgram
{
staticvoidMain(string[]args)
{
Console.Write("请输入一个正整数n:
");
intn=Convert.ToInt32(Console.ReadLine());
for(inti=1;i<=n;i++)
{
intformer=i;//原数
intreverse=0;//反向数
do//求反向数
{
intp=former%10;
reverse=reverse*10+p;
former=former/10;
}while(former!
=0);
if(i==reverse)//反向数就是本身,就是回文数
Console.Write(i+"");
}
Console.ReadKey();
}
}
}
任务91:
编写一个程序,从键盘上输入n个自然数,求最大公约数。
(输出-1为止)
intm,n,r;
m=Convert.ToInt32(Console.ReadLine());
n=Convert.ToInt32(Console.ReadLine());
do
{
r=m%n;
while(r!
=-1)
{
m=n;
n=r;
r=m%n;
}
m=Convert.ToInt32(Console.ReadLine());
}while(m!
=0);
Console.WriteLine(n);
任务92:
对任意整数进行因数分解。
intx;
x=Convert.ToInt32(Console.ReadLine());
Console.Write(x+"=");
for(inti=2;i<=x-1;i++)
{
while(x%i==0)
{
if(x/i==1)
{
Console.Write(i);
break;
}
else
{
Console.Write(i+"*");
x=x/i;
}
}
}