资源描述
实验一 控制台程序编程
一、实验目的
1、熟悉C#的基本语句;
2、掌握条件语句、多分支语句、循环语句的使用;
3、掌握使跳转语句使用。
二、实验要求
1、程序结构清晰、语句完整;
2、格式正确,语句采用缩进格式;
3、设计子函数实现题目要求的功能;
4、编译、连接通过,熟练使用命令键;
5、运行结果正确,输入输出有提示,格式美观。
三、实验设备、材料和工具
1、奔腾4计算机或以上机型;
2、C#.NET2008或C#.NET2010。
四、实验内容和步骤
(一)调试下列程序,代码仅供参考,将调试结果界面、调试中出现的问题及解决情况写在后面。
1、判断某年是否闰年
实验题目:
编写一个程序,判断用户从键盘输入的年份是否是闰年。如果一个年份能被4整除,并且如果该年份是100的倍数,它能被400整除,那么该年份就是闰年。
实验步骤:
1) 声明int型变量year,用于表示年份。
2) 声明bool型变量isLeap,用于表示是否闰年。
3) 声明string型变量str,用于表示一串字符。
4) 向屏幕输出提示信息,提示用户输入年份。
5) 从键盘读入年份字符串赋值给变量str。
6) 将变量str中的数据转换成int型数据并赋值给变量year。
7) 通过混合取余运算、关系运算和条件逻辑运算判断year是否闰年,并将结果赋值给变量isLeap。
8) 使用条件运算符,当isLeap为true时,给变量str赋字符串“是”;否则,赋“不是”。
9) 输出结果,告诉用户相应年份是否闰年。
参考答案:
//Test1_cs
using System;
class Test1{
static void Main(){
int year;
bool isLeap;
string str;
Console.Write("请输入年份: ");
str=Console.ReadLine();
year=Int3Parse(str);
//判断闰年
isLeap=(year%4==0&&year%100!=0)||(year%400==0);
str=isLeap?"是":"不是";
Console.WriteLine("{0}年{1}闰年",year,str);
}
}
运行结果:
调试中出现的问题及解决情况:
2、求三个整数的最大值
实验题目:
编写一个程序,使用条件运算符求用户输入的三个整数中的最大值。
实验目的:
1) 掌握int型和string型变量的声明和使用方法。
2) 了解C#语言的控制台输入方法。
3) 熟悉关系运算符的运算规则。
4) 熟悉条件运算符的运算规则。
5) 理解运算符的优先级概念。
实验步骤:
1) 声明int 型变量a、b、c,用于保存三个待求整数。
2) 声明 int 型变量max,用于保存最大值。
3) 声明 string 型变量 str,用于表示一串字符。
4) 分别向屏目输出提示信息,提示用户输入三个整数,将用户输入的字符串保存在变量str中,并在将str中的数据转换成int型数据后分别赋值给变量a、b、c。
5) 使用条件运算符和关系运算符求出变量a和b中的大者,并赋值给变量max。
6) 使用条件运算符和关系运算符求出变量max和c中的大者,并赋值给变量max。
7) 输出变量 max的值。
参考答案:
//Test2.cs
using System;
class Test2{
static void Main(){
int a,b,c;
int max;
string str;
Console.Write("请输入第一个数: ");
str=Console.ReadLine();
a=Int3Parse(str);
Console.Write("请输入第二个数: ");
str=Console.ReadLine();
b=Int3Parse(str);
Console.Write("请输入第三个数: ");
str=Console.ReadLine();
c=Int3Parse(str);
//计算机已经按收了这三个数,然后比较三个数的大小.
max=(a>b)?a:b;
max=(max>c)?max:c;
Console.WriteLine("最大值是{0}",max);
}
}
运行结果:
调试中出现的问题及解决情况:
3、日期描述
实验题目:
定义一个表示日期的结构类型(包含年、月、日字段,其中月份采用枚举类型描述),并验证。验证时,访问日期结构类型变量中的每个成员,并访问整个变量。
实验目的:
1) 掌握枚举类型的定义和使用方法。
2) 掌握结构类型的定义和使用方法。
实验步骤:
1) 定义枚举类型MonthOfYear,用于描述一年中的12个月。
2) 定义结构类型Date,用于描述日期,结构类型Date中包含三个公共字段。其中,string型字段Year用于表示年份,MonthOfYear型字段Month用于表示月份,string型字段Day用于表示天数。
3) 定义一个含有Main()方法的类。
4) 在Main方法中,首先声明两个Date变量date1,date2。
5) 分别给变量date1的字段赋值。
6) 输出变量date1各字段的值。
7) 将变量date1的值赋给变量2,然后,修改变量date2的Day字段值。
8) 输出变量date2各字段的值。
参考答案:
//Test3.cs
using System;
class Test3{
enum MonthOfYear{ 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月}
struct Date{
public string Year;
public MonthOfYear Month;
public string Day;
}
static void Main(){
Date date1,date2;
date1.Year="二零零九年";
date1.Month=MonthOfYear.三月;
date1.Day="二号";
Console.WriteLine("{0}{1}{2}",date1.Year,date1.Month,date1.Day);
date2=date1;
dateDay="三十一号";
Console.WriteLine("{0}{1}{2}",dateYear,dateMonth,dateDay);
}
}
运行结果:
调试中出现的问题及解决情况:
4、整数排序
实验题目:
编写一个程序,使用if语句将用户输入的三个整数按从小到大的顺序排序。
实验目的:
1) 掌握if语句的使用方法。
2) 学会嵌套使用if语句。
实验步骤:
1) 声明int型变量a、b、c,用于保存用户输入的三个整数。
2) 声明int型变量t,在交换变量a、b、c的值时,用于临时保存其中的某个值。
3) 从键盘读入三个整数,分别保存在变量a、b、c中。
4) 使用if语句将变量a、b、c中的最大值赋给变量c,最小值赋给变量a,中间值赋给变量b。
5) 按从小到大的顺序依次输出变量a、b、c的值。
参考答案:
代码如下:
//Test4.cs
using System;
class Test4{
static void Main(){
int a,b,c,t;
Console.Write("请输入第一个整数:");
a=Int3Parse(Console.ReadLine());
Console.Write("请输入第二个整数:");
b=Int3Parse(Console.ReadLine());
Console.Write("请输入第三个整数:");
c=Int3Parse(Console.ReadLine());
if(a>b){
t=a;
a=b;
b=t;
}
if(b>c){
t=c;
c=b;
if(t>a)
b=t;
else{
b=a;
a=t;
}
}
Console.WriteLine("从小到大的顺序依次为:{0},{1},{2}",a,b,c);
}
运行结果:
调试中出现的问题及解决情况:
5、简单计算器
实验题目:
编写一个简单的计算器程序,能够根据用户从键盘输入的运算指令和整数,进行简单的加减乘除运算。
实验目的:
1) 掌握循环语句while的使用。
2) 掌握循环语句do-while的使用。
3) 熟悉选择语句switch的使用。
4) 学会嵌套使用循环语句和选择语句。
5) 学会使用break语句。
实验步骤:
1) 声明int型变量firstNumber和secondNumber,用于保存操作数。
2) 声明string型变量operation,用于保存运算符。
3) 声明string型变量response,用于保存用户输入的决定是否继续运算的字符。
4) 声明do-while语句读入运算符和操作数,在该循环中用switch语句执行相应运算,并输出运算结果。
5) 在do-while语句中提示用户输入相应的字符决定是否断续运算,并根据输入字符决定是否结束do-while语句的运行。
参考答案:
代码如下:
//Test5_cs
using System;
class test5{
static void Main(){
//声明两个输入的操作数。
int firstNumber,secondNumber;
//声明一个字符串类型来定义运算符。
string operation;
//来判断是否继续运算。
string response;
do{
Console.Write("请输入运算符(+、-、*、/):");
operation=Console.ReadLine();
Console.Write("请输入第一个操作数:");
//接收输入的操作数并转换成整形。
firstNumber=Int3Parse(Console.ReadLine());
Console.Write("请输入第二个操作数:");
secondNumber=Int3Parse(Console.ReadLine());
switch(operation){
case"+":
Console.WriteLine("{0}+{1}={2}",firstNumber,secondNumber,firstNumber+secondNumber);
break;
case"-":
Console.WriteLine("{0}-{1}={2}",firstNumber,secondNumber,firstNumber-secondNumber);
break;
case"*":
Console.WriteLine("{0}*{1}={2}",firstNumber,secondNumber,firstNumber* secondNumber);
break;
case"/":
Console.WriteLine("{0}/{1}={2}",firstNumber,secondNumber,firstNumber/secondNumber);
break;
default:
Console.WriteLine("运算符不合法");
break;
}
Console.Write("是否继续进行运算(Y/N);");
response=Console.ReadLine();
while(response!="Y"&&response!="y"&&response!="N"&&response!="n"){
Console.WriteLine("输入错误!");
Console.Write("是否继续进行运算(Y/N):");
response=Console.ReadLine();
}
}while(response=="Y"||response=="y");
}
}
运行结果:
调试中出现的问题及解决情况:
6、求指定范围内的所有合数
实验题目:
合数就是非素数,即除了1和它本身之外还有其他约数的正整数。编写一个程序求出指定数据范围(假设10-100)内的所有合数。
实验目的:
1) 掌握循环语句for的使用。
2) 掌握选择语句if的使用。
3) 学会嵌套使用循环语句和选择语句。
4) 学会使用break语句。
实验步骤:
1) 声明int型变量min、max,并分别初始化为10和100;
2) 声明int型变量num,用于保存合数的个数,初始化为0。
3) 嵌套使用for语句,顺序判断10~100中的每个整数,如果某个整数是合数,则输出该数,并将变量num加1。
参考答案:
using System;
class Test6{
static void Main(){
int min=10,max=100;
int num=0;
Console.WriteLine("{0}到{1}之间的合数有:",min,max);
for(int i=min;i<=max;i++){
//for(int j=2;j<i;j++){
for(int j=2;j<i/2;j++){
if(i%j==0){
num++;
Console.Write(" {0}",i);
//让结果每行显示10个合数。
if(num%10==0)
Console.WriteLine();
break;
}
}
}
Console.WriteLine();
Console.WriteLine("总共有{0}个合数",num);
}
}
运行结果:
调试中出现的问题及解决情况:
(二)独立解决实际问题
7、编写一个控控台应用程序,实现对10个元素进行排序,写出实验步骤、代码、给出运行结果截图,并对调试中出现的问题进行分析写出其解决情况:
。要求:数据按两种方式输入,一种是数值型数值,另一种数据用一个字符串一次输入。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string num;
Console.Write("请输入10个数字,中间用空格隔开:");
num = Console.ReadLine();
String[] array = num.Split(' ');
int[] e = new int[10];
Console.Write("输入的10个数字为:");
for (int i = 0; i < array.Length; i++)
{
Console.Write(" "+array[i]);
int f = Convert.ToInt32(array[i]);
e[i] = f;
}
int b ;
for (int j = 0; j< 9; j++)
for (int i = 0; i< 9-j; i++)
{
if (e[i] > e[i+1])
{
b = e[i];
e[i] = e[i+1];
e[i+1] = b;
}
}
Console.WriteLine();
Console.Write("10个元素排序后:");
foreach (int i in e)
{
Console.Write(" "+i);
}
Console.WriteLine();
}
}
}
9 / 9
展开阅读全文