Day03—homework

本文集锦了多种编程练习题目,包括统计正负数个数、计算未来学费、寻找特定数列元素等,通过实际操作加深对编程语言的理解和运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Day03–homework

在这里插入图片描述

1.统计正负数个数并计算平均值

编写程序:

def main(x,zheng,fu,i,sum1):
    while x!=0:
        x = int(input('输入一个整数,以输入值0来结束:'))
        if(x>0):
            zheng += 1
        elif(x<0):
            fu += 1
        i += 1
        sum1 = sum1 + x
    if sum1 != 0:
        xxx = sum1/(i-1)
        print('输入的正数有%d个,输入的负数有%d个,这组数的和为%d,这组数的平均数为%.2f'%(zheng,fu,sum1,xxx))
    else:
        print('结束')
        return   
def start():
    x = 1
    zheng = 0
    fu = 0
    i = 0
    sum1 = 0
    main(x,zheng,fu,i,sum1)
        
start()

结果为:

输入一个整数,以输入值0来结束:1
输入一个整数,以输入值0来结束:2
输入一个整数,以输入值0来结束:-1
输入一个整数,以输入值0来结束:0
输入的正数有2个,输入的负数有1个,这组数的和为2,这组数的平均数为0.67

在这里插入图片描述

2.计算未来学费

编写程序:

def main(money,sum1):
    for i in range(1,14):
        money = money * 0.05 + money
        if i ==10:
            print('十年之后的学费:%.2f'%money)
        if i >= 10: 
            sum1 += money
    print('十年后大学四年的总学费为:%.2f'%sum1)

def start():
    money = 10000
    sum1 = 0
    main(money,sum1)

start()

结果为:

十年之后的学费:16288.95
十年后大学四年的总学费为:70207.39

在这里插入图片描述

3.同第一题

4.找出可被5、6同时整除的数

编写程序:

def main(geshu):
    for i in range(100,1001):
        if i%5 == 0 and i%6 == 0:
            print(i,end=' ')
            geshu += 1
            if geshu % 10 == 0:
                print('\n')
def start():
    geshu = 0
    main(geshu)    

start()     

结果为:

120 150 180 210 240 270 300 330 360 390

420 450 480 510 540 570 600 630 660 690

720 750 780 810 840 870 900 930 960 990

在这里插入图片描述

5.while循环找满足条件的数

编写程序:

def main():
    n = 0
    m = 0
    math(n,m)
def math(n,m):
    while n**2 <= 12000:
        n += 1
    print('n的平方大于12000的最小整数n为:%d'%n)

    while m**3 < 12000:
        m += 1
    print('n的立方大于12000的最大整数n为:%d'%(m-1))
main()

结果为:

n的平方大于12000的最小整数n为:110
n的立方大于12000的最大整数n为:22

在这里插入图片描述

7.演示消除错误

编写程序:

def start():
    sum1 = 0
    sum2 = 0
    main(sum1,sum2)

def main(sum1,sum2):
    for i in range(1,50001):
        sum1 += 1/i
        i += 1
    print('从左向右计算为:',sum1)
    for i in range(50000,0,-1):
        sum2 += 1/i
        i -= 1
    print('从右向左计算为:',sum2)

start()

结果为:

从左向右计算为: 11.397003949278504
从右向左计算为: 11.397003949278519

在这里插入图片描述

8.数列求和

编写程序:

sum1 = 0
for i in range(3,100,2):
    sum1 += (i-2)/i
print('数列的和为:',sum1) 

结果为:

数列的和为: 45.124450303050196

在这里插入图片描述

9.计算π

编写程序:


def start():
    pi = 0
    i = int(input('输入i的值:'))
    main(pi,i)

def main(pi,i):    
    for j in range(1,i+1):
        pi += 4 * ((-1)**(1+j)/(2*j-1))
    print('π的值为:%f'%pi)

start()

结果为:

输入i的值:10000
π的值为:3.141493

输入i的值:20000
π的值为:3.141543

输入i的值:100000
π的值为:3.141583

在这里插入图片描述

10.完全数

编写程序:

for i in range(1,10000):
    x = 0
    for j in range(1,i):
        if i % j == 0:
            x += j
    if x == i:
        print('10000以下的完全数有:%d'%x)

结果为:

10000以下的完全数有:6
10000以下的完全数有:28
10000以下的完全数有:496
10000以下的完全数有:8128

在这里插入图片描述

11.数学问题:组合

编写程序:

list1 = []
for i in range(1,8):
    for j in range(1,8):
            if i != j and sorted([i,j]) not in list1:
                list1.append([i,j])
print('所有可能的组合为:',list1)
print('组合总个数为:',len(list1))

结果为:

所有可能的组合为: [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 4], [3, 5], [3, 6], [3, 7], [4, 5], [4, 6], [4, 7], [5, 6], [5, 7], [6, 7]]
组合总个数为: 21

在这里插入图片描述

12.计算均值和方差

编写程序:

import numpy as np

arr=[]
i = 1
while i <= 10:
    x  = float(input('输入十个数字:'))
    arr.append(x)
    i += 1
#求均值
arr_mean = np.mean(arr)
#求方差
arr_var = np.var(arr)
print("平均值为:%f" % arr_mean)
print("方差为:%f" % arr_var)

结果为:

平均值为:5.710000
方差为:7.956900
5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符后续字符,再按顺序输出 5.3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL、DL中。 5.4 试编写程序,要求比较两个字符串STRING1STRING2所含字符是否相同,若相同则显示‘MATCH’,若相同则显示‘NOT MATCH’。 5.5 试编写程序,要求能从键盘接收一个个位数N,然后响铃N次。 5.6 编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P负数数组N,并分别把这两个数组中的数据的个数显示出来。 5.7 试编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它放在AX中。 5.8 把AX中存放的16位二进制数K看作是8个二进制的“四分之一字节”。试编写一个程序,要求数一下值为3(即11B)的四分之一字节数,并将该数在终端上显示出来。 5.9 试编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 5.10 设有一段英文,其字符变量名为ENG,并以$字符结束。试编写程序,查对单词SUN在该文中的出现次数,并以格式”SUNXXXX“显示出次数。 5.11 从键盘输入一系列以$为结束的字符串,然后对其中的非数字字符进行计数,并显示出计数结果。 5.12 有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。 5.13 在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字,如有,则把CL的第五位置1,否则置0. 5.14 在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多的数及其出现的次数分别放在AXCX中。 5.15 数据段中已定义了一个有N个字数据的数组M,试编写程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 5.16 在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一个程序求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。 5.17 试编写一个程序,把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中,例如:当(AX)=2A49H时,程序执行完后,MEM中的4个字节的内容为39H,34H,41H32H。 5.18 把0~100D之间的30个数存入以GRADE为首地址的30个字数组中,GRADE+i表示学号i+1的学生的成绩。另一个数组RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。编写程序,根据GRADE中的学生成绩,将学生名次填入RANK数组中。 5.19 已知数组A包含15个互相等的整数,试编写程序,把既在A中又在B中出现的整数存在于数组中C中。 5.20 设在A,BC单元中存放着三个数,若三个数是0,则求出三树之并存放于D单元中;其中有一个数为0,则把其他两个数也清零。试编写程序
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值