重构C经典100例题之80-100题

# 题目:海滩上有一堆桃子,五只猴子来分。
# 第一只猴子把这堆桃子平均分为五份,多了一个,
# 这只 猴子把多的一个扔入海中,拿走了一份。
# 第二只猴子把剩下的桃子又平均分成五份,又多了 一个,
# 它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 
# 问海滩上原来最少有多少个桃子?

i=0
j=1
while i<5:
    x=4*j

    for i in range(0,5):
        i+=1
        print(i)
        if x%4!=0:
            break
        x=(x/4)*5+1
    j+=1

print(f"{x}\n")
# 题目:809*??=800*??+9*?? 
# 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,??=12
# 9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
def output(b, i):
    print(f"\n{b} = 800 * {i} + 9 * {i}\n");

a = 809;
i=10
while i<100:
    i+=1
    b = i * a;
    if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100:
        output(b, i);

#8进制转换10进制
#输入8进制,输出10进制
#方法一: n=eval("0o"+str(int(input("8进制输入:"))))
a=input("8进制输入:")
#方法二:下图参数改为2则为,2进制转10进制
n=int(a,8)
print(n)
#计算出0-7组成的奇数的组合个数
num=1   
for i in range(0,8):
  
    for j in range(0,8):
        if (i*10+j)%2!=0:
            print(f"这是第{num}次,奇数是",i*10+j)
            num+=1
#一个偶数总能表现成两个素数之和
#2a=b+c
def isOshu(n):
    if n<=1:
       
        return 0
    i=2

    while i*i<=n:
        if n % i == 0:
            
            return 0
        i+=1  
   
    return 1
doubleNum=int(input("请输入一个偶数:"))


for i in range(1,doubleNum):
    ShuNumTwo = doubleNum-i
  
    isOshu(i) == int(isOshu(i))
    isOshu(ShuNumTwo) == int(isOshu(ShuNumTwo))
    if isOshu(i) == 1 and isOshu(ShuNumTwo) == 1:
        print("证明成功")
        print(f"{doubleNum}={ShuNumTwo}+{i},{ShuNumTwo}是素数,{i}是素数")
    else:
        # print("证明失败")
        continue
#输入一个素数,判断能被几个9整除
n=int(input("请输入一个素数: "))
def isPrime(n):
    if n<=1:
        print("无效输入")
        return False
    i=2
    while i*i<=n:
        if n % i ==0:
            print("不是素数")

            return False
        i+=1
    print("是素数")

    return True
isPrime(n)
if True:
    print(n//9)
#链接两个字符串
a="hello"
b="world"
c=2
while (c>=1):

    print(a+b)
    c=c-1

# 题目:回答结果(结构体变量传递)。
#输出7个随机数(范围1-50),然后打印随机数个*
import random
numlist=[]
numOne=random.randint(1,50)
numlist.append(numOne)
numTwo=random.randint(1,50)
numlist.append(numTwo)
numThree=random.randint(1,50)
numlist.append(numThree)
numFour = random.randint(1,50)
numlist.append(numFour)
numFive=random.randint(1,50)
numlist.append(numFive)
numSix=random.randint(1,50)
numlist.append(numSix)
numSeven=random.randint(1,50)
numlist.append(numSeven)
i=0
while i < len(numlist):
    print("*"*int(numlist[i]))
    i+=1
#电话加密
#加密规则:
# 1、先加上5
# 2、和除以10取余数
# 3、第一位和第四位交换,第二位和第三位交换
daiJiaMi= input("输入需要加密的内容(四位数字):")
ll=[]
llJia=[]
ll.extend(daiJiaMi)
for i in ll:
    i = int(i)
    i += 5
    i %= 10
    i = str(i)
    llJia.extend(i)
llJia[0],llJia[1],llJia[2],llJia[3]=llJia[3],llJia[2],llJia[1],llJia[0]
print("你输入的是",daiJiaMi,end="")
print(",加密后是",end="")
print(llJia)
import datetime
import sys
import time
import math
NewYear = datetime.datetime(2023, 1, 22, 0, 0, 0)  # 新的一年的日期
i=1
while i<=3:
    i+=1 
    NowDay = datetime.datetime.now()  # 获取当前的日期
    day = (NewYear - NowDay).days  # 新年日期减去当前日期
    second = (NewYear - NowDay).seconds  #得到秒数
    # print(second)
    #秒计算:second直接取余数,分钟计算:second进位到分钟后取余数%
    sec = second % 60
    minute = second / 60 % 60
    hour = second / 60 / 60
    if hour > 24:
        hour = hour - 24
    hour = math.floor(hour)  # 去掉小数点,向下取整
    minute = math.floor(minute)  # 去掉小数点,向下取整
    sys.stdout.write("离今年春节还有" + str(day) + "天" + str(hour) + "小时" + str(minute) + "分钟" + str(sec) + "秒" + '\r')
    sys.stdout.flush()
    time.sleep(1)
    print("离今年春节还有" + str(day) + "天" + str(hour) + "小时" + str(minute) + "分钟" + str(sec) + "秒" + '\r')
   
import datetime
import time
i = datetime.datetime.now()
print(i)
print(f"现在是{i.year}年{i.month}月{i.day}日{i.hour}时{i.minute}分{i.second}秒")
#时间函数:计算在0-500中取到小于2的时间和次数
import random
import time
start= time.time()

n = 1
while True:
    a = random.randint(0,500)
    if a <= 2: 
        print(a)
        break
    else:
        print(a)
        n=n+1

end=time.time()
print(f"一共{n}次循环")
print(f"总时长:{end - start}秒")
#s时间函数
#做一个循环记录时间
import sys
import random
import time
import datetime
start = time.time()
print(start)
i = 1
output = open("data.txt","w",encoding="utf-8")
xueShengQuan=["学号,姓名,A科成绩,B科成绩,C科成绩,平均分\n"]
while i <= 3:
    for row in xueShengQuan:
            #rowtxt = "{},{},{},{},{},{}".format(row[0],row[1],row[2],row[3],row[4],row[5])
        output.write(row)
        output.write("\n")
    i += 1
output.close()
end = time.time()
print(end)
print("总时长:",end - start,end="s\n")
# 题目:猜谜游戏。
import random
numB = random.randint(0,100)
# print(f"电脑的数字是{numB}")
numBb = int(numB)
caiCount = []
while True:
    numA = eval(input("请输入你猜的数字:"))
    print(f"你输入的是{numA}",end=",")
    numAa = int(numA)
    caiCount.append(numAa)
    count= len(caiCount)
    if numAa > numBb:
        print(f"你往小了猜,这是第{count}次")
    elif numBb == numAa:
        print(f"正确,这是第{count}次")
        break
    elif numAa < numBb:
        print(f"你往大了猜,这是第{count}次")
#结构体输出
a=1.26

b="C经典100:https://www.runoob.com/cprogramming/c-exercise-example97.html"
#%0.6f格式化输出6位小数,%s格式化输出字符串
print("%0.6f" % a)
print("%s" % b)
#计算出母字符串中子字符串的个数
# mu,zi=eval(input("输入母字符串,子字符串(我可以计算出子字符串的个数):"))
# mu = map(input("输入母字符串,子字符串(我可以计算出子字符串的个数):").split(","))
inputmuzi=list(map(str,input("输入母字符串,子字符串(我可以计算出子字符串的个数): ").split(",")))
mu = inputmuzi[0]
zi = inputmuzi[1]
num=0
ll=[]
ll.extend(mu)
for i in ll:
    if i == zi:
        num+=1
print(f"你输入的母字符串是:{mu},\n子字符串是{zi},\n其中子字符串出现的次数为{num}")
# 题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
# 程序分析:无。 
a = input("请输入:")
ll =[]
ll.extend(a)
print(ll)
output = open("data.txt","w",encoding="utf-8")
for i in ll:
    if i == "#":
        print("\t此处有#跳过\n")
        output.write("\t此处有#跳过\n")
        continue
    output.write(i)
    output.close
# 题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 输入的字符串以!结束。
# 程序分析:无。
# 程序源代码:
shuiJi = input("输入字符串,我可以把小写变成大写字母:")
listStr =[]
ll=[]
listStr.extend(shuiJi)
for i in listStr:
    if i == "a" or "b" or "c" or "d" or "e" or "f" or "g" or "h" or "i" or "l" or "m" or "n" or "o" or "p" or "q" or "r" or "s" or "t" or "x" or "y" or "z" or "w" or "u" or "v":
        #upper大小写转换
        ll.append(i.upper())
    else:
        ll.append(i)
print(ll)
#输出到当前路径下的text
outlook = open("test.txt","w",encoding="utf-8")
for raw in ll:
    outlook.write(raw)
    #不加空格字符
    outlook.write("")
    outlook.close

# ; 题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
# ; 程序分析:你需要先创建 A.txt 与 B.txt。
# ; A.txt文件内容:
outputA = open("A.txt","r",encoding="utf-8")
ReadA = outputA.read()
outputA.close
outputB = open("B.txt","r",encoding="utf-8")
ReadB  = outputB.read()
outputB.close
listc = []
listc.extend(ReadA)
listc.extend(ReadB)
x = len(listc)
#重新按小到大排序文件内容
for m in range(x):
    for n in range(x-m-1):
        if listc[n+1]<listc[n]:
            listc[n],listc[n+1] = listc[n+1],listc[n]
print(listc)
#新建一个txt记录,设定5个字符转行输入
outputC = open("c.txt","w",encoding="utf-8")
count=0
for row in listc:
    outputC.write(row)
    count+=1
    if count>=5:
        outputC.write("\n")
        count=0
outputC.close

# # 题目:有五个学生,每个学生有3门课的成绩,
# 从键盘输入以上数据(包括学生号,姓名,三门课成绩),
# 计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
# # 程序分析:无。


xueShengQuan = []
i = 1
while i <= 5:
    xueShengXinxiDan=list(map(str,input("学号,姓名,A科成绩,B科成绩,C科成绩: ").split(",")))
    AkeNum = int(xueShengXinxiDan[2])
    BkeNum = int(xueShengXinxiDan[3])
    CkeNum = int(xueShengXinxiDan[4])
    aveNum = (AkeNum + BkeNum + CkeNum)/3
    xueShengXinxiDan.append(aveNum)

    xueShengQuan.append(xueShengXinxiDan)
    print(f"平均成绩为{aveNum}")
    print(f"全部人员信息{xueShengQuan}")
    i += 1
# #输出到excel
# workbook = open("记录学生信息.xls","w",encoding="utf-8")

   
# 输出到txt
workbook = open("记录学生信息.txt","w",encoding="utf-8")
workbook.write("学号,姓名,A科成绩,B科成绩,C科成绩,平均分\n")
for row in xueShengQuan:
    rowtxt = "{},{},{},{},{},{}".format(row[0],row[1],row[2],row[3],row[4],row[5])
    workbook.write(rowtxt)
    workbook.write("\n")
workbook.close()

完成!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值