C# 自学 结构练习(11题)

本文提供11道C#编程练习题目,包括计算斐波那契数列、分解质因数、最大公约数和最小公倍数等。虽然部分题目已有其他博主详尽解答,但这里依然可以作为自我训练和学习C#编程的实践素材。

练习原题

1,下列常量中,不是字符常量的是(B)。
A.’\n’ B.“y” C.‘x’

2,f(n)=f(n-1)+f(n-2) f(0)=2 f(1)=3 ,用程序求得f(40)

3,将一个正整数分解质因数。例如:输入90,打印出90=233*5。测试数据有多组

4,输入两个正整数m和n,求其最大公约数和最小公倍数。

5,一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

6,题目:求1+2!+3!+…+20!的和?

7,利用递归方法求5!。 f(n)=n*f(n-1)

8,编一个程序,定义结构类型(有学号、姓名、性别和程序设计成绩四个字段),声明该结构类型变量,用赋值语句对该变量赋值以后再输出。

9,编一个程序,输入一个正数,对该数进行四舍五入到个位数的运算。例如,实数12.56经过四舍五入运算,得到结果13;而12.46经过四舍五入运算,得到结果12

10,有关系式11+22+33+…+kk<2000,编一个程序,求出满足此关系式的k的最大值

11,编一个程序,解决百钱买百鸡问题。某人有100元钱,要买100只鸡。公鸡5元钱一只,母鸡3元钱一只,小鸡一元钱3只。问可买到公鸡,母鸡,小鸡各为多少只。把所有的可能性打印出来。

练习代码

//f(n)=f(n-1)+f(n-2) f(0)=2 f(1)=3 ,用程序求得f(40)
using System;
class lianxi
{
    static int Fn(int num)
    {
        int f0 = 2, f1 = 3, f2 = 0;
        if (num == 0) { return 2; }
        else if (num == 1) { return 3; }
        else
        {
            for (int i = 2; i < num; i++)
            {
                f2 = f0 + f1;
                f0 = f1;
                f1 = f2;
            }
            return f2;
        }
        }
    public static void Main()
    {
        Console.WriteLine(Fn(40));
    }
}

3 、4题其他博主都有写明而且分析详细比我强太多。
比如下面这两位博主(侵删)

https://blog.youkuaiyun.com/qq_33552014/article/details/103009398
https://blog.youkuaiyun.com/qq_40985921/article/details/83412099

//5,一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
using System;
class lianxi5 
{
    static double length(double height) 
    {
        double length = 0;
        for (int i = 0;i < 10;i++) 
        {
            length += height;
            height = height / 2;
        }
        return length;
    }
    static double res(double height) 
    {
        double res = height;
        for (int i = 0;i <10;i++) 
        {
            res = height;
            height = height / 2;
        }
        return res;
    }
    public static void Main() 
    {
        double height = 100.0;
        Console.WriteLine("十次之后经过的路程是{0},最后一次弹起的高度是{1}",length(height),res(height));
        Console.ReadKey();
    }
}
//6.题目:求1+2!+3!+...+20!的和?
using System;
class lianxi6 
{
    static int Fn(int x) 
    {
        int res = 0;
        for (int i = 1;i <= x;i++) 
        {
            for (int f = 1; f <= i;f++) 
            {
                res += f;
            }
        }
        return res;
    }
    public static void Main()
    {
        int x = 20;
        Console.WriteLine("1!+2!+...+20! = {0}",Fn(x));
        Console.ReadKey();
    }
}
//7.利用递归方法求5!。
using System;
class lianxi7
{
    static int res(int x) 
    {
        int res = 0;
        for (int i = 1;i <= x;i++) 
        {
            res += i;
        }
        return res;
    }
    public static void Main()
    {
        int x = 5;
        Console.WriteLine("5! = {0}",res(x));
        Console.ReadKey();
    }
}
//8,编一个程序,定义结构类型(有学号、姓名、性别和程序设计成绩四个字段),声明该结构类型变量,用赋值语句对该变量赋值以后再输出。
using System;
struct cy 
{
    public int studentID;
    public string name;
    public string gender;
    public int grades;
}
class lianxi8 
{
    public static void Main()
    {
        cy NewLine;
        NewLine.studentID = 2021223;
        NewLine.name = "李华";
        NewLine.gender = "男";
        NewLine.grades = 98;
        Console.WriteLine("学号{0} 姓名{1} 性别{2} 程序设计成绩{3}",NewLine.studentID,NewLine.name,NewLine.gender,NewLine.grades);
        Console.ReadKey();
    }
}
//9,编一个程序,输入一个正数,对该数进行四舍五入到个位数的运算。例如,实数12.56经过四舍五入运算,得到结果13;而12.46经过四舍五入运算,得到结果12
using System;
class lianxi9
{
    static double res(double x)
    {
        if (x % 1 > 0.5)
        {
            x = Math.Floor(x) + 1;
        }
        else 
        {
            x = Math.Floor(x);
        }
        return x;
    }
    public static void Main()
    {
        double x = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("{0}四舍五入为{1}",x,res(x));
        Console.ReadKey();
    }
}
//10,有关系式1*1+2*2+3*3+...+k*k<2000,编一个程序,求出满足此关系式的k的最大值
using System;
class lianxi10
{
    static int Fn(int res) 
    {
        int k = 0;
        for (int i = 1;i <= res;i++ ) 
        {
            res = res - i * i;
            if (res <= 0)
            {
                k = i-1;
                break;
            }
        }
        return k;
    }
    public static void Main()
    {
        int res = 2000;
        Console.WriteLine("对1*1+2*2+3*3+...+k*k<2000来讲,k的最大值是{0}",Fn(res));
        Console.ReadKey();
    }
}
//11,编一个程序,解决百钱买百鸡问题。某人有100元钱,要买100只鸡。公鸡5元钱一只,母鸡3元钱一只,小鸡一元钱3只。问可买到公鸡,母鸡,小鸡各为多少只。把所有的可能性打印出来。
using System;
struct Program 
{
    public int x;
    public int y;
    public int z;

}
class lianxi11 
{
    static  void  res(int money) 
    {
        int fin = 0;
        for (int x =0; x < money/5;x++) 
        {
            for (int y = 0; y < (money - 5 * x) / 3; y++) 
            {
                for (int z = 0; z < (money - 5*x-3*y);z++) 
                {
                    fin = x + y + 3 * z;
                    if (fin == 100) 
                    {
                        Console.WriteLine("买公鸡{0}只,母鸡{1}只,小鸡{2}只",x,y,3*z);
                    }
                }
            }
        }   
    }
    public static void Main()
    {
        int money = 100;
        res(money);
    }
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值