编程题收集

这篇文章包含了一系列编程和Shell脚本题目,涉及判断闰年的C++程序、生成随机数并让用户猜数字的Shell脚本、快速排序算法、猴子吃桃问题的递推解法、斐波那契数列的递归实现、Python列表生成与乘法表打印、字符串连接函数、找出列表中最大和第二大元素的Python函数以及批量修改文件扩展名和统计远程IP连接的Shell脚本等。这些题目覆盖了基础编程和Shell脚本处理的多个方面。
摘要由CSDN通过智能技术生成

1、编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。

参考答案:
#include<iostream> using namespace std;
int main(){
    int year;
    cin >> year;
    # yes 表示是闰年,no 表示是平年
    if year % 400 == 0:
        cout << "yes";
    else if year % 4 == 0 and year % 100 != 0:
        cout << "yes";
    else:
        cout << "no";
    return 0;
}

2、使用shell生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。

#!/bin/bash
num=$((RANDOM % 100 + 1))  # 生成 1~100 之间的随机数
while true; do
    read -p "Guess a number between 1 and 100: " guess
    if [[ $guess -eq $num ]]; then
        echo "Congratulations! You guessed the number!"         
    break
    elif [[ $guess -lt $num ]]; then
        echo "Too low. Try again."     
    else
        echo "Too high. Try again."     
    fi
done

3、有一个整数数组,请你根据快速排序的思路,找出数组中第 k 大的数。
给定一个整数数组 a ,同时给定它的大小n和要找的 k ,请返回第 k 大的数(包括重复的元素,不用去重),保证答案存在。

private int fast(int[] a, int low, int high) {
        int key = a[low];
        while (low != high) {
            while (a[high] >= key && high > low) {
                high--;
            }
            a[low] = a[high];
            while (a[low] < key && high > low) {
                low++;
            }
            a[high] = a[low];
        }
        a[low] = key;
        return low;
}

4、猴子吃桃问题:猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个; 第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共吃了多少个桃子?

#include <stdio.h> 
int main(int argc, char *argv[])
{
int day = 9;
int x1, x2; /* x1表示前一天,x2表示后一天 */
x2 = 1; /* 第10天,剩下一个 */
for(;day>=1;day--) /* 从第9天开始递推到第1天 */
{
/* x2表示后一天的 */
x1 = (x2 + 1) * 2;
x2 = x1;
}
printf("\n\n猴子第一天共计摘下:%d个桃子\n\n", x1);
return 0;
}

5、斐波那契数列怎么使用递归算法实现

def fb(n):
    if n==1:
        return 1
    if n==2:
        return 1
    else:
        return fb(n-1)+fb(n-2)

6、python实现:生成一个1-100的列表

print([i for i in range(1,101)])

7、python实现:打印99乘法表

for i in range(1,10):
	for j in range(1,10): 
		if i>=j:
			print("{}*{}={}".format(i,j,i*j),end =" ") 
			if i<j:
				print('\n')

8、要求:编写一个函数,输入一个字符串列表,返回将所有字符串元素连接起来后的结果。
示例:
输入:['hello', 'world'] 输出:'helloworld'

def func(str_list): 
    return ''.join(str_list)

9、python实现:设计一个函数返回传入的列表中最大和第二大的元素的值。

def max2(x):
    m1 = max(x)#m1是最大元素
    x2 = x.copy()#复制一个列表,同时不破坏原来的列表
    x2.remove(m1)#把列表里最大的元素删除
    m2 = max(x2)#再次取列表里最大的元素,这时取到的就是列表里第二大的元素
    return m2,m1  #m1是第二大的值,m2是最大

print(max2([2,33,4,5,5,6,77,8,9]))

10、使用python库函数快速实现数组排序

使用python中的sort函数,例如
a = [3,1,4,6] a.sort()
print(a)
输出结果为[1,3,4,6]

11、写一个 shell脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数。为了简单起见,你可以假设:
nowcoder.txt只包括小写字母和空格。
每个单词只由小写字母组成。
单词间由一个或多个空格字符分隔。

cat test.sh | tr -s ' ' '\n' | sort | uniq -c | sort | awk '{print $2" "$1}'

12、请用shell脚本编写一个猜数字大小的游戏

 #!/bin/bash
 
# 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
# 猜小了或猜大了,直至用户猜对脚本结束。
 
# RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
# 使用取余算法将随机数变为 1‐100 的随机数
num=$[RANDOM%100+1]
echo "$num"
 
# 使用 read 提示用户猜数字
# 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),
# ‐lt(小于),‐le(小于等于)
while  :
do
	read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
    if [ $cai -eq $num ]
    then
       	echo "恭喜,猜对了"
       	exit
    	elif [ $cai -gt $num ]
    	then
           	echo "Oops,猜大了"
      	else
           	echo "Oops,猜小了"
 	fi
done

 13、编写批量修改扩展名脚本

#!/bin/bash
 
# 编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件 
# 执行脚本时,需要给脚本添加位置参数
# 脚本名  txt  doc(可以将 txt 的扩展名修改为 doc)
# 脚本名  doc  jpg(可以将 doc 的扩展名修改为 jpg)
 
for i in `ls *.$1`
do
   	mv $i ${i%.*}.$2
done

14、查看有多少远程的 IP 在连接本机

#!/bin/bash
 
# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) 
 
# 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,
# -t仅显示 tcp 连接的信息,‐n 数字格式显示
# Local Address(第四列是本机的 IP 和端口信息)
# Foreign Address(第五列是远程主机的 IP 和端口信息)
# 使用 awk 命令仅显示第 5 列数据,再显示第 1 列 IP 地址的信息
# sort 可以按数字大小排序,最后使用 uniq 将多余重复的删除,并统计重复的次数
netstat -atn  |  awk  '{print $5}'  | awk  '{print $1}' | sort -nr  |  uniq -c

15、编写shell脚本,计算nginx accesslog中请求量最多的前10个url,并按数量多少从大到小排序

cat /var/log/nginx/access.log |cut -d " " -f 1 |sort |uniq -c |sort -nr |head -n 10

附:面试题https://blog.csdn.net/weixin_51808099/article/details/125979247?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%94%A8shell%E5%A4%84%E7%90%86%E4%B8%80%E4%B8%8B%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9,%E5%B0%86%E5%9F%9F%E5%90%8D%E5%8F%96%E5%87%BA%E5%B9%B6%E8%BF%9B%E8%A1%8C%E8%AE%A1%E6%95%B0%E6%8E%92%E6%95%B0,%E5%A6%82%E5%A4%84&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-125979247.nonecase&spm=1018.2226.3001.4187

附:shell脚本

https://blog.csdn.net/yugemengjing/article/details/82469785?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167653748416800211526234%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167653748416800211526234&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-82469785-null-null.142^v73^pc_new_rank,201^v4^add_ask,239^v1^control&utm_term=shell%E8%84%9A%E6%9C%AC%E7%BC%96%E7%A8%8B100%E4%BE%8B&spm=1018.2226.3001.4187 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值