C#编程习题.docx
《C#编程习题.docx》由会员分享,可在线阅读,更多相关《C#编程习题.docx(64页珍藏版)》请在冰豆网上搜索。
C#编程习题
C#编程习题
以下有18道习题(当然,这并非全部的习题,最后应该会多增加2题,共20题),对于这20道题目,要求大家每道题目都能够做到看到题目,不看其他参考材料的情况下,能够实现出来。
期末考将会从中抽取三道题目(分数占60分),而期末考其实是要出三份试卷的。
所以总的需要从这份里面抽9道题目。
也就是这20题中有9题是肯定会出现在试卷中的.
对于本科目最后成绩的说明:
总评成绩=平时成绩*50%+期末成绩*50%
平时成绩与期末成绩都是100分制的。
平时成绩=出勤课堂纪律情况*40%+作业完成情况*60%
对于作业完成情况的说明:
对于之前的作业,不管是否有提交,我都不再追究。
我只要求从发这份习题给你们开始,每周要按顺序完成如下的5道题目,把每道题目都自己理解完实现出来之后再交上来.
我知道要把这20题都弄懂,不是一件容易的事情,但不是不可能。
第一,我会提供一些材料,大家可以先把这些材料看一遍,大体有个印象,当遇到问题的时候,也要学会查找对应材料来解决问题。
第二,下面的每道题目,我都将会给出参考答案.当然是以截图的方式.也会在关键代码附上相应的注释。
还有一句话,希望能与大家共勉。
“学习,从来都是一个自觉的过程。
遇上一个好老师,会让你少走很多弯路,但不是替代你学习。
遇上一个不够好的老师,或许会多走些弯路,但不代表你就学不好。
事在人为,只要自己有心,外界条件再差也是可以攻克的;若是无心,外界条件再好,也会成为你的借口。
”
最后,再回到我们这门课的现实.能否取得好成绩,能否不挂科,取决于你,而不取决于我。
规则我都已经说清楚了,最后结果如何我说了不算,你的实际行动和实际成绩说了算。
1、编写一个函数,函数名为Max,该函数用来获取给定三个整数的最大值.在Main函数中实现从屏幕中读取三个整数,然后输出这三个整数中最大的那个数的功能.
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
Console。
WriteLine("请输入3个数:
按回车结束”);
inta,b,c,temp;
a=int.Parse(Console。
ReadLine());//定义一个输入值a;
b=int。
Parse(Console。
ReadLine());//定义一个输入值b;
c=int。
Parse(Console。
ReadLine());//定义一个输入值c;
temp=Max(a,b,c);
Console.WriteLine("a={0},b={1},c={2},三个数中最大值为{3}",a,b,c,temp);
}
//074陈振华
staticintMax(inta,intb,intc)
{
inttemp=a;//把a的值付给temp;
if(temp〈b)
{
temp=b;
}
if(temp〈c)
{
temp=c;
}
returntemp;
}
}
}
2、编写一个函数,函数名为PrintTriangle,用来打印n阶的正三角形。
并在Main函数中实现从屏幕中输入n的值,然后根据给定的n的值打印出相应的正三角形。
当n=7时,
*
***
*****
*******
*********
***********
*************
当n=5时,
*
***
*****
*******
*********
代码:
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
inta;
Console。
WriteLine(”请输入你想要打印出的三角形的行数”);
a=int.Parse(Console.ReadLine());
PrintTriangle(a);
}
//074陈振华
staticvoidPrintTriangle(inta)
{
for(inti=1;i<=a;i++)
{
for(intj=i;j〈a;j++)
{
Console。
Write(””);
}
for(intx=i*2—1;x〉0;x--)
{
Console.Write(”*”);
}
Console。
WriteLine("”);
}
}
}
}
3、输入某年某月某日,判断这一天是这一年的第几天?
。
要求:
需写一个函数,给定年月日,求的该天处于该年的第几天。
然后在Main函数中测试。
代码:
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
intyear,month,day;
Console。
WriteLine("请输入年份");
year=int。
Parse(Console。
ReadLine());
Console。
WriteLine(”请输入月份”);
month=int。
Parse(Console。
ReadLine());
Console。
WriteLine("请输入日期");
day=int。
Parse(Console.ReadLine());
Console。
WriteLine("{0}年{1}月{2}日处于该年的第{3}天”,year,month,day,Cs(year,month,day));
}
staticintCs(intyear,intmonth,intday)
{
intsum=0;
for(inti=1;i{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum+=31;
}
if(i==4||i==6||i==9||i==11)
{
sum+=30;
}
if(i==2)
{
sum+=29;
}
}
if((year%400==0||(year%4==0&&year%100!
=0))&&month>2)
sum=sum-1;
returnsum;
}
}
}
4、给定一个大于三的奇数n,打印出相应的三角形。
如n=7时的形状如下:
*
***
*****
*******
*****
***
*
代码;
classProgram
{
staticvoidMain(string[]args)
{
inta;
Console.WriteLine(”请输入你想要打印出的三角形的行数,该数必须是大于三的奇数”);
a=int.Parse(Console.ReadLine());
if(a%2==1&&a〉=3)
{
PrintTriangle(a);
}
else
Console。
WriteLine("该数不是大于三的奇数");
}
///〈summary>
///074陈振华
///
///
staticvoidPrintTriangle(inta)
{
for(inti=1;i<=a/2+1;i++)
{
Console.Write(”*”);
for(intx=1;x〈i;x++)
{
Console.Write("**”);
}
Console.WriteLine("”);
}
for(inti=a/2;i>0;i-—)
{
Console。
Write("*");
for(intx=i-1;x>0;x-—)
{
Console.Write("**");
}
Console。
WriteLine(””);
}
}
}
}
要求:
编写一个函数,给定一个n,打印出相应的三角形,若n不是奇数,则提示说n的值必须为奇数.
5、给一个正整数,要求:
a)写一个函数求出它是几位数.
b)写一个函数,分别输出每一位数字。
c)写一个函数,按逆序输出各位数字,例如原数位123,则输出321.
最后在main函数中测试结果
代码:
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
inta,r;
Console。
WriteLine("请输入一个正整数");
a=int。
Parse(Console。
ReadLine());
r=C105(a);
Console。
WriteLine(”该数是{0}位数”,r);
int[]A=Db(a);
Shuzhu(A);
Cs(A);
}
staticintC105(inta)
{
inti=1;
while(a〉10)
{
a=a/10;
i++;
}
returni;
}
staticint[]Db(inta)
{
intcount=C105(a);
int[]data=newint[count];
while(a〉0)
{
data[--count]=a%10;
a=a/10;
}
returndata;
}
staticvoidShuzhu(int[]A)
{
for(inti=0;i〈A.Length;i++)
{
Console.Write(”{0}”,A[i]);
}
Console。
WriteLine();
}
staticvoidCs(int[]A)
{
for(inti=0;i{
inttemp=A[i];
A[i]=A[A。
Length-i-1];
A[A。
Length—i-1]=temp;
}
Console.WriteLine("倒叙输出后的结果为”);
for(inti=0;i〈A.Length;i++)
{
Console.Write(”{0}”,A[i]);
}
Console.WriteLine();
}
}
}
6、请编写一个函数,计算出从m到n的数的和,比如m=3,n=300,则计算出从3一直加到300的和。
并在Main函数中调用测试。
要求:
1)写个函数采用for语句实现该功能。
2)写个函数采用while语句实现该功能。
3)写个函数采用do…while语句实现该功能.
代码:
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
inta,b;
Console。
WriteLine("请输入两个正整数分,别按回车结束”);
a=int。
Parse(Console。
ReadLine());
b=int.Parse(Console。
ReadLine());
For(a,b);
While(a,b);
Dowhile(a,b);
}
staticvoidFor(inta,intb)
{
intsum=0;
for(inti=a;i<=b;i++)
{
sum=sum+i;
}
Console.WriteLine("从{0}到{1}的所有数的和={2}”,a,b,sum);
}
//074陈振华
staticvoidWhile(inta,intb)
{
intsum=0,i=a;
while(i〈=b)
{
sum=sum+i;
i++;
}
Console。
WriteLine(”从{0}到{1}的所有数的和={2}",a,b,sum);
}
staticvoidDowhile(inta,intb)
{
intsum=0,i=a;
do
{
sum=sum+i;
i++;
}while(i〈=b);
Console。
WriteLine("从{0}到{1}的所有数的和={2}",a,b,sum);
}
}
}
7、写一个函数,判断给定的一个正整数是否是素数,并在Main函数中测试.
8、代码:
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
intm,a;
m=int。
Parse(Console.ReadLine());
a=Sushu105(m);
if(a==0)
{
Console。
WriteLine(”这个数是素数”,a);
}
else
Console.WriteLine(”这个数不是是素数”,a);
}
staticintSushu105(intm)
{
inta=0;
for(inti=2;i〈m;i++)
{
if(m%i==0)
{
a++;
}
}
returna;
}
}
}
9、写一个函数,返回给定m~n之间的所有素数。
再写一个函数,打印出给定一个数组中的所有元素。
并在Main函数中测试。
10、代码:
usingSystem;
usingSystem.Collections。
Generic;
usingSystem。
Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("请输入两个数");
inta,b;
a=int。
Parse(Console.ReadLine());
b=int.Parse(Console。
ReadLine());
//boolresult=IsSushu(6);
//Console.WriteLine(result);
int[]wuxinglin=Suzhu(a,b);
Console。
WriteLine(”{0}到{1}之间的所有素数如下",a,b);
Daying(wuxinglin);
}
///〈summary>
///获取所有a到b之间所有的素数
///〈/summary〉
///〈/param〉
///〈paramname=”b"〉
///staticint[]Suzhu(inta,intb)
{
intcount=Geshu(a,b);
int[]wuxinglin=newint[count];
intd=0;
for(inti=a;i<=b;i++)
{
if(IsSushu(i))
{
wuxinglin[d]=i;
d++;
}
}
returnwuxinglin;
}
///〈summary〉
///返回两个数之间所有的素数的个数0
///
///〈paramname="a">
//////
staticintGeshu(inta,intb)
{
intc=0;
for(inti=a;i〈=b;i++)
{
if(IsSushu(i))
{
c++;
}
}
returnc;
}
///
///判断一个数是不是素数,如果是返回turn,否则返回false
///
///〈paramname="m”>〈/param>
///〈/returns>
staticboolIsSushu(intm)
{
boolresult=true;
for(inti=2;i<=(int)Math.Sqrt(m);i++)
{
if(m%i==0)
{
result=false;
break;
}
}
returnresult;
}
///〈summary〉
///给定一个数组打印出该中所有的元素
///〈/summary〉
///〈paramname=”wuxinglin”〉〈/param〉
staticvoidDaying(int[]wuxinglin)
{
for(inti=0;i{
Console。
Write(”{0}",wuxinglin[i]);
}
}
}
}
11、编写一个函数,返回给定一个正整数m的二进制表示。
比如给定11,则返回1011。
并在Main函数中测试。
12、代码:
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
Console。
WriteLine("请输入一个正整数,按回车键结束");
inta=int。
Parse(Console.ReadLine());
Console.WriteLine(”输入的数{0}被转化为二进制后的结果为{1}”,a,Zhuanhua(a));
}
staticstringZhuanhua(inta)
{
StringBuilderresult=newStringBuilder();
while(a>0)
{
result.Insert(0,a%2);
a=a/2;
}
returnresult。
ToString();
}
}
}
13、编写一个函数,返回给定一个正整数m的n位二进制表示方法,若n小于实际给定数m的二进制位数,则返回其真实位数。
比如m=100,n=3,则返回1100100
比如m=100,n=8,则返回001100100
代码:
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
Console。
WriteLine("请输入一个正整数,按回车键结束”);
inta=int.Parse(Console。
ReadLine());
Console。
WriteLine("请输入你想返回的二进制的位数”);
intb=int。
Parse(Console。
ReadLine());
stringresult=Zhuanhua(a,b);
Console.WriteLine("输入的数{0}被转化为二进制后{1}位的结果为{2}",a,b,result);
}
staticstringZhuanhua(inta,intb)
{
StringBuilderresult=newStringBuilder();
intcount=0;
while(a>0)
{
result.Insert(0,a%2);
a=a/2;
count++;
}
for(inti=count;i<=b;i++)
{
result.Insert(0,0);
}
returnresult.ToString();
}
}
}
14、写一个函数,实现对给定一个整型数组中的每个元素进行逆序重新存放。
例如,原来顺序为1,3,6,5,7,。
要求改为7,5,6,3,1.并在Main函数中测试。
15、代码:
namespace_074
{
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("请输入一个整形数组中间用逗号隔开如\"10,11,12\"");
stringa=Console.ReadLine();
string[]tempData=a。
Split(’,');
int[]data=newint[tempData。
Length];
for(inti=0;i{
data[i]=int。
Parse(tempData[i]);
}
data=Shuzhu(data);
Console。
WriteLine(”逆序输出后的数组如下");
Daying(data);
}
staticint[]Shuzhu(int[]data)
{
inttemp;
for(inti=0;iLength/2;i++)
{
temp=data[i];
data[i]=data[data.Length-i—1];
data[data.Length-i—1]=temp;
}
returndata;
}
staticvoidDaying(int[]data)
{
for(inti=0;i〈data。
Length;i++)
{
Console.Write(”{0},",data[i]);
}
}
}
}
16、写一个函数,