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
附:shell脚本