牛客网语法篇练习循环控制

1.2023年就要来到了,KiKi要对他的n位好朋友说n遍”Happy new year!Good luck!”的祝福语。

n = int(input())
for i in range(n):
    print('Happy new year!Good luck!')

2.任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。

num = int(input().strip())
m,n = 0,0
for i in range(1,num+1):
    if i%2 == 1:
        m += 1
    else:
        n += 1
print(m,n)       

3.KiKi知道了质数(只能被1和他自身整除的数),他想知道所有三位整数中,有多少个质数。

import math
n = 0
for i in range(100,1000):
    for j in range(2, int(math.sqrt(i))+1):
        if i%j==0:
            n += 1
            break
print(900-n)

4.输出九九乘法表

for i in range(9):
    for j in range(i + 1):
        print('{}*{}={:2d} '.format(j + 1, i + 1, (i + 1) * (j + 1)), end='')
    print()

5.牛牛开始学习数列啦,现在他想知道1-2+3-4...+n的值。

n = int(input())
if n % 2 == 0:
    answer = (-1) * (n/2)
else:
    answer = (1-n)/2 + n 
print(int(answer))

6.这次牛牛又换了个数列,他想计算:1+1/2+1/3+…+1/N的值。(保留6位小数)

n=int(input())
a=0
for i in range(1,n+1):
    a=a+1/i
print('{:6f}'.format(a))

7.牛牛准备继续进阶,计算更难的数列
输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的。

a = int(input())
s = 0
for i in range(1, a+1):
    s += 1 / (pow(-1, i+1) * i )
print('%.3f' % s)

8.帮助牛牛计算 1+(1+2)+(1+2+3)+...+(1+2+3+...+n。。

a = int(input())
b = 0
for i in range(1, a+1):
    for j in range(1, i+1):
        b += j
print('%d' % b)

9.求一个整数的所有数位之和。

a = input()
b = 0
for i in range(len(a)):
    b += int(a[i])
print(b)

10.有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1;不断重复这样的运算,经过有限步之后,一定可以得到1;牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1。

n=int(input())
count=0
while n!=1:
    if n%2==0:
        n=n/2
        count+=1
    else:
        n=n*3+1
        count+=1
print(count)

11.KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。

count = 0
for i in range(1, 2020):
    if '9' in str(i):
        count += 1
print(count)

12.小乐乐的班主任想统计一下班级里一共有多少人需要被请家长,三个成绩(语文,数学,外语)平均分低于60的将被请家长,小乐乐想编程帮助班主任算一下有多少同学被叫家长。

n = int(input())
count = 0
matrix = []
for i in range(n):
    matrix.append(list(map(int, input().split())))
    if (matrix[i][0]+matrix[i][1]+matrix[i][2])/3 < 60:
        count += 1
print(count)

13.春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

while True:
    try:
        m,n=map(int,input().split())
        res=[]
        for i in range(m,n+1):
            a=int(i/100)
            b=int((i-a*100)/10)
            c=int((i-a*100-b*10))
            if a**3+ b**3+c**3==i:
                res.append(i)
        if len(res)>0:
            print(' '.join([str(i) for i in res]))
        elif len(res)==0:
            print('no')
            
    except:
        break

14.变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:655 = 6 * 55 + 65 * 5    1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。

for i in range(10000,100000):
    if (i//10000)*(i%10000)+(i//1000)*(i%1000)+(i//100)*(i%100)+(i//10)*(i%10)==i:
        print(i,end = ' ')

15.公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。

while True:
    try:
        a=input().split()
        max=0
        min=100
        sum=0
        for i in range(7):
            a[i]=int(a[i])
            if a[i]>max:
                max=a[i]
            if a[i]<min:
                min=a[i]
            sum+=a[i]
        print('%.2f'%((sum-max-min)/5))
    except:
        break

16.将一个四位数,反向输出。

a = input()
print(a[::-1])

17.小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。

n = int(input())
list1 =[]
while(n//6>0):
    list1.append(n%6)
    n = n//6
list1.append(n)
list1.reverse()
for i in list1:
    print(i,end="")

18.国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得多少金币。

k=int(input())
n=1
while k>n*(n+1)/2:
    n+=1
coin=sum([x**2 for x in range(1,n+1)])-(n*(n+1)/2-k)*n
print(int(coin))

 19.今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。

a = int(input())
for i in range(1,a+1):
    n = str(i)
    if n == n[::-1]:
        print(n)

20.KiKi学习循环,BoBo老师给他出一系列打印图案的练习,该任务是打印用“*”组成的线段图案。

while True:
    try:
        x = int(input())
        print('*'*x)
    except:
        break

21.KiKi学习循环,BoBo老师给他出一系列打印图案练习,该任务是打印用“*”组成的正方形图案。

while True:
    try:
        n = int(input())
        for i in range(1,n+1):
            print('* '*n)
    except:
        break

22.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的直角三角形图案。

while True:
    try:
        a=int(input())
        for i in range(1,a+1):
                print('* '*i)
    except:
        break

23.KiKi学习循环,BoBo老师给他出打印图案练习,该任务是打印用“*”组成翻转直角三角形图案。

while True:
    try:
        a=int(input())
        for i in range(a,0,-1):
            print('* '*i)
            i=i-1
    except:
        break

24.KiKi学习循环,BoBo老师给他出打印图案练习,任务是打印用“*”组成带空格直角三角形图案。

while True:
    try:
        n=int(input())
        for i in range(1,n+1):
            print("  "*(n-i)+"* "*i)
    except:
        break

25.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的金字塔图案。

while(True):
    try:
        num = int(input())
        for i in range(1,num+1):
            print(' '*(num - i) +'* '*i)
    except:
        break

26.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。

while True:
    try:
        a = int(input())
        for i in range(1,a+1):
            print(' '*(i-1) + '* '*(a-i+1) )
    except:
        break

27.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的菱形图案。

while True:
    try:
        n = int(input())
        for i in range(0, n + 1):
            print(' ' * (n - i) + '* ' * (i + 1))

        for j in range(1, n + 1):
            print(' ' * j + '* ' * (n + 1 - j))

    except:
        break

28.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的K形图案。

while True:
    try:
        n = int(input())
        for i in range(0, n + 1):
            print('* ' * (n - i + 1)+'  '*i)
 
        for i in range(1, n + 1):
            print('* ' * ( i + 1)+'  '*(n-i+1))
 
    except:
        break

29.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的箭形图案。

while True:
    try:
        n = int(input())
        for i in range(n+1):
            print('  ' * (n-i) + '*' * (i+1))
        for j in range(n):
            print('  ' * (j+1) + '*' * (n-j))
    except:
        break

30.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的反斜线形图案。

while True:
    try:
        n = int(input())
        l=[]
        for i in range(n):
            c=[]
            c.append((' '*i+'*'+' '*(n-i-1)))
            l.append(c)
        for t in range(n):
            print(*l[t])

    except:
        break

31.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的正斜线形图案。

while True:
    try:
        n = int(input())
        for i in range(0 , n):
            print(' ' * (n - i - 1) + '*' + ' ' * i)

    except:
        break

32.KiKi学习循环,BoBo老师给他出打印图案的练习,该任务是打印用“*”组成的X形图案。

while True:
    try:
        a = int(input())
        if a % 2 != 0:
            for i in range(a//2):
                print(' '*i+'*'+' '*(a-2*i-2)+'*'+' '*i)
                if i+1 ==(a//2):
                    print(' '*(i+1)+'*'+' '*(i+1)+' '*(i+1))
            for j in range(1,a//2+1):
                print(' '*(a//2-j)+'*'+' '*(2*j-1)+'*'+' '*(a//2-j))
        else:
            for n in range(a//2):
                print(' '*n+'*'+' '*(2*(a//2-n-1))+'*'+' '*n)
            for k in range(a//2):
                print(' '*(a//2-k-1)+'*'+' '*(2*k)+'*'+' '*(a//2-k-1))
    except:
        break

33.KiKi学习循环,BoBo老师给他出打印图案练习,该任务是打印用“*”组成的“空心”正方形图案。

while True:
    try:
        n = int(input())
        for i in range(n):
            if i == 0 or i == n-1:
                print('* '*n)
            else:
                print('* '+'  '*(n-2)+'* ')
    except:
        break

34.KiKi学习循环,BoBo老师给他出打印图案练习,该任务是打印用“*”组成的“空心”三角形图案。

while True:
    try:
        n = int(input())
        print('* ' + '  '*(n - 1))
        for i in range(1, n - 1):
            print('* ' + '  '*(i - 1) + '* ' + '  '*(n - i - 1))
        print('* ' * n)
    except:
        break

35.KiKi学习循环,BoBo老师给他出打印图案练习,该任务是打印用数字组成的数字三角形图案。

while True:
    try:
        x=int(input())
        zs=''
        for i in range(1,x+1):
            zs=zs+str(i)+" "
            print(zs)
    except:
        break

36.今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。

while True:
    try:
        n = int(input())
        for i in range(1,n+1):
            m = '*' + '     *' * (i - 1)
            print(m.center(6*n-1))
            m = '* *' + '   * *' * (i - 1)
            print(m.center(6*n-1))
            m = '* * *' + ' * * *' * (i - 1)
            print(m.center(6*n-1))
        for j in range(n):
            print('*'.center(6*n-1))
    except:
        break

37.今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。

h=int(input())
l=["*","* *","* * *"]
for i in range(h-1):
    n=len(l)
    for j in range(n):
        l.append(l[j]+" "*(2*n-1-2*j)+l[j])
w=6*2**(h-1)-1
for i in range(len(l)):
    print(l[i].center(w))
for i in range(h):
    print("*".center(w))

### 关于牛客网C++编程题目 牛客网提供了丰富的C++编程练习题,涵盖了基础语法到复杂算法等多个层次的内容。以下是关于如何利用这些资源以及一些典型题目类型的详细介绍。 #### 题目类型概述 牛客网上常见的C++编程题目主要分为以下几种类型: 1. **基本输入输出操作** 基本的输入输出是学习任何一门编程语言基础,在C++中可以通过`cin`和`cout`实现简单的交互功能[^2]。例如: ```cpp #include <iostream> using namespace std; int main(){ int num; cin >> num; // 输入整数 cout << num << endl; // 输出并换行 return 0; } ``` 2. **循环结构与条件判断** 循环和条件判断是程序设计的核心部分之一。通过嵌套循环或者复杂的逻辑表达式可以完成更高级的任务。比如求解一组数的总和问题[^1]: ```cpp #include <iostream> using namespace std; int main(){ int n; while(cin>>n){ if(n==0) break; else{ int sum=0; for(int i=0;i<n;i++){ int a; cin>>a; sum+=a; } cout<<sum<<endl; } } return 0; } ``` 3. **序列处理与数组应用** 数组的应用非常广泛,尤其是在处理大量数据时显得尤为重要。下面是一个典型的例子,它展示了如何读取多组数据并对每组分别计算其累加值: 4. **函数定义与调用** 函数能够提高代码重用性和可维护性。在实际开发过程中合理运用自定义函数可以使解决方案更加清晰简洁。这里给出一个简单示例说明如何创建并使用函数[^3]: ```cpp #include<stdio.h> void calculateSum(double *result, int count){ int s=1; int tmp=0; double local_sum=0; for(int i=1;i<=count;i++) { tmp += s*(2*i-1); local_sum += 1.0 / tmp; s = -s; } *result = local_sum; } int main() { int n; scanf("%d", &n); double result; calculateSum(&result, n); printf("%.3lf\n", result); return 0; } ``` 5. **并发编程概念理解** 并发编程涉及多个线程之间的协调工作,其中存在诸如原子性、可见性和有序性的挑战。某些特定的关键字如Java中的`volatile`可以帮助解决这些问题;而在C/C++环境中也有相应的机制来保障线程安全[^4]。 #### 提升技巧建议 为了更好地掌握上述知识点并通过更多样化的题目巩固所学技能,可以从以下几个方面入手: - 定期参与平台上的每日一练活动; - 结合理论知识深入研究经典案例分析; - 积极参加各类竞赛模拟测试以检验自己的水平。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫步桔田

编程界的一枚小学生!感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值