[XDOJ]日常作业汇总(不定时更新)

事先声明
1.该文章仅用于个人学习,谢绝未经本人同意和任何用于商业用途的搬运。
2.本人22级学生,学校题库内的题目可能会不定期更改题目要求,请各位参照答案的同学对照好题目要求,切莫直接抄袭。

题号目录

  • [XDOJ]日常作业汇总(不定时更新)
  • [1~50]
    • 2.数列分段
    • 3.最小差值
    • 4.命令行选项
    • 5.消除类游戏
    • 6.数字排序
    • 7.车牌限行_分支结构
    • 9.计算球体质量
    • 10.温度转换
    • 11.整数简单运算
    • 15.A+B+C
    • 16.字符输入输出
    • 18.数字字符
    • 19.实数运算
    • 20.四则运算
    • 21.数位输出
    • 27.阶梯电价1_分支结构
    • 28.计算某月天数_分支结构
    • 29.计算整数各位数字之和
    • 30.完数
    • 31.最大公约数
    • 32.角谷定理
    • 33.递归数列
    • 34.水仙数
    • 35.歌德巴赫猜想
    • 36.矩阵
    • 37.排序2
    • 38.回文数
    • 39.马鞍点
    • 40.等差数列
    • 41.PM2.5
    • 42.整除判断1
    • 43.整数分析
    • 44.斐波纳契数列素数判断
    • 45.气温波动
    • 46.折点计数
    • 47.冰箱温度预测
    • 48.除法计算器
    • 49.完全平方数
    • 50.选号程序
  • [50~100]
    • 51.寻找最大整数_分支结构
    • 52.字符处理_分支结构
    • 53.abc组合
    • 53.成绩分级1_分支结构
    • 55.数列求和
    • 56.直角三角形判断_分支结构
    • 57.Fibonacci数列
    • 60.简单程序
    • 63.工资计算_分支结构
    • 64.自然数分解
    • 65.数字处理
    • 66.平均数
    • 67.查找
    • 68.日期计算
    • 69.0-1矩阵
    • 70.Z字形扫描
    • 71.相邻区域
    • 72.寻找最长的行
    • 73.字符串压缩
    • 75.灰度直方图
    • 76.统计正整数的个数
    • 79.求平均值
    • 80.字符统计
    • 81.字符串查找
    • 82.密码强度
    • 83.图像旋转
    • 84.目录操作
    • 85.字符串相似度
    • 86.画图
    • 87.跳一跳
    • 88.ISBN号码
    • 89.计算球的体积
    • 90.求三位整数各位之和
    • 91.求三角形面积
    • 92.工资发放
    • 93.整数比较1_分支结构
    • 94.整数比较2分支结构
    • 97.输出26个英文字母
    • 98.成绩分级2_分支结构
    • 99.阶梯电价2_分支结构
    • 100.三角形判别
  • [101~150]
    • 101.四位密码器
    • 110.判断奇偶性
    • 111.整除判断2
    • 112.分段函数1_分支结构
    • 113.出租车计价
    • 116.阶梯电价控制
    • 125.利率计算
    • 126.购房贷款计算
    • 139.字符加密
    • 146.英文表示数字_分支结构
    • 147.求奇数的和
    • 149.求交错序列前N项和
    • 150.分段函数2_分支结构
  • [151~200]
    • 151.利润计算_分支结构
    • 155.阶乘之和—双层循环
    • 156.数字个数统计
    • 157.自然数求和
    • 159.阶乘运算
    • 161.数字个数统计2
    • 162.矩阵相乘
    • 163.数值求和—二维数组练习
    • 164.转换排序—数组中的元素排序练习
    • 165.最值位置—数组数列元素查询练习
    • 176.中间数
    • 177.累加和校验
    • 183.最大公约数和最小公倍数
    • 185.迭代法求根
    • 189.小球下落问题
    • 190.矩阵对角线求和
    • 191.密码编译
    • 192.数组逆序排列
    • 193.歌唱比赛
    • 196.输出金字塔
    • 200.数组元素平移
  • [201~250]
    • 201.后项除以前项
    • 204.单词统计—字符数组练习
    • 205.金字塔打印
    • 206.字符删除—字符数组练习
    • 207.单词排序—字符数组练习
    • 215.字符逆序排放
    • 219.素数判断
    • 221.字符串元素统计
    • 227.字符串查找
    • 228.字符串筛选
    • 229.字符串连接
    • 230.调用函数求素数
    • 240.整数转换为字符串
    • 241.十六进制转换为十进制
    • 244.单词排序
    • 249.分解质因数
  • [251~300]
    • 298.最大值与最小值_分支结构
    • 299.奖金计算_分支结构
    • 300.位数判断
  • [301~350]
    • 301.亲和数
    • 302.质数求和
  • [351~400]
    • 374.课堂练习-沸水降温曲线
    • 375.课堂练习题2-温度统计
    • 378.正整数的最优分解
    • 381.小中大
    • 382.图像旋转-2021
    • 384.种苹果
    • 385.报数游戏

[1~50]

2.数列分段

问题描述
给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
输入格式
输入的第一行包含一个整数n,表示数列中整数的个数。
第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
输出格式
输出一个整数,表示给定的数列有多个段。
样例输入
8
8 8 8 0 12 12 8 0
样例输出
5
样例说明
8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。

#include int main(){int i=0, n, m, count=1;//i为序号,n为输入数字数目,m为移动读取赋值的量,count为总共数组数目scanf("%d", &n);int s[n];for(i; i<n; i++){scanf("%d", &s[i]);}do{ m=s[i];i++;count++;}while(m!=s[i+1]);printf("%d", count);return 0;}

3.最小差值

问题描述
给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
输入第一行包含一个整数n。
第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式
输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
样例说明
相差最小的两个数是5和4,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明
有两个相同的数3,它们之间的差值是0.
数据规模和约定
对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。

#include int main(){int i, n, min, max, result;scanf("%d", &n);int str[n], dif[n];for(i=0; i<n; i++){scanf("%d", &str[i]);}for(i=0; i<n; i++){if(str[i]<str[i+1]) dif[i]=str[i+1]-str[i];else dif[i]=str[i]-str[i+1];if(dif[i]<=dif[i+1]) result=dif[i];else result=dif[i+1];}printf("%d", result);return 0;}

4.命令行选项

问题描述
  请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行工具的名字,由小写字母组成,不含任何其他符号。在工具名字之后可能会包含若干选项(以减号”-”开头的字符串),还可能包含一些不是选项的参数(不以减号“-”开头的字符串)。
  请写一个程序分析给出的命令行,输出命令行包含的不重复选项(即,重复的选项只输出一次)。

输入格式
  输入是一个待处理的命令行,长度不超过 255 个字符。该命令行一定是若干个由单个空格分隔的字符串构成,每个字符串里只包含小写字母,数字和减号。
输出格式
  按照字母升序输出该命令行中用到的所有选项的名称,如果一个选项在命令行中出现了多次,只输出一次,如果命令行不包含任何选项,则输出no。
样例输入1
ls -a -l -a documents -b
样例输出1
-a -b -l
样例输入2
ls
样例输出2
no
样例输入
ls -w 10 -x -w 15
样例输出
-w -x

5.消除类游戏

问题描述
  消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。
  现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。
  请注意:一个棋子可能在某一行和某一列同时被消除。
输入格式
  输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。
  接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。
输出格式
  输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。
样例输入1
4 5
2 2 3 1 2
3 4 5 1 4
2 3 2 1 3
2 2 2 4 4
样例输出1
2 2 3 0 2
3 4 5 0 4
2 3 2 0 3
0 0 0 4 4
样例说明
  棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。
样例输入2
4 5
2 2 3 1 2
3 1 1 1 1
2 3 2 1 3
2 2 3 3 3
样例输出2
2 2 3 0 2
3 0 0 0 0
2 3 2 0 3
2 2 0 0 0
样例说明
  棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。
评测用例规模与约定
所有的评测用例满足:1 ≤ n, m ≤ 30。

#include int main(){int i, j, n, m, a[30][30]={0};scanf("%d %d", &n, &m);for(i=0; i<n; i++){for(j=0; j<m; j++){scanf("%d", &a[i][j]);}}for(i=1; i<n-1; i++){for(j=1; j<m-1; j++){if(a[i][j]==a[i][j-1] && a[i][j]==a[i][j+1]){a[i][j]=0;a[i][j-1]=0;a[i][j+1]=0;}if(a[i][j]==a[i-1][j] && a[i][j]==a[i+1][j]){a[i][j]=0;a[i-1][j]=0;a[i+1][j]=0;}}}for(i=0; i<n; i++){for(j=0; j<m; j++){if(j!=m-1)printf("%d ", a[i][j]);else printf("%d\n", a[i][j]);}}return 0;}

6.数字排序

  • 待完成

问题描述
给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。
输入格式
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它的各位数字和。按各位数字和递减的顺序输出。如果两个整数各位数字和相同,则先输出值较小的,然后输出值较大的。
样例输入
5
101 100 999 1234 110
样例输出
999 27
1234 10
101 2
110 2
100 1
评测用例规模与约定
1 ≤ n ≤ 1000,给出的数都是不超过10000的非负整数。

7.车牌限行_分支结构

问题描述
  受雾霾天气影响,某市决定当雾霾指数超过设定值时对车辆进行限行,假设车牌号全为数字,且长度不超过6位,限行规则如下:
(1)限行时间段只包括周一至周五,周六周日不限行;
(2)如果雾霾指数<200,不限行;
(3)如果200≤雾霾指数≤400,周1限行1和6,周2限行2和7,周3限行3和8,周4限行4和9,周5限行5和0;
(4)如果雾霾指数≥400,每天限行五个尾号的汽车,周1、3、5限行1,3,5,7,9,周2、4限行0,2,4,6,8。

现在给出星期几、雾霾指数和车牌号(int),判断该车牌号是否限行。
输入说明
scanf(“%d %d %d”,&a,&b,&c),第一个整数表示星期几(1~7,1表示周一,2表示周二,依次类推,7表示周日),第二个整数表示雾霾指数(0~600),第三个整数表示车牌号,整数之间用空格分隔。
输出说明
printf(“%d yes”,c%10)
printf(“%d no”,c%10)
输出为两个部分,第一部分为车牌最后一位数字,第二部分为限行情况,限行输出yes,不限行输出no。
输入样例
输入样例1
4 230 80801
输入样例2
3 300 67008

输出样例
输出样例1
1 no
输出样例2
8 yes

#include int main(){int week, index, car;scanf("%d %d %d", &week, &index, &car);if(index<200){printf("%d no", car%10);}if(200<=index && index<400){if((week==1 && ((car%10)==1 || (car%10)==6)) || (week==2 && ((car%10)==2 || (car%10)==7)) || (week==3 && ((car%10)==3 || (car%10)==8)) || (week==4 && ((car%10)==4 || (car%10)==9)) || (week==5 && ((car%10)==5 || (car%10)==0))){printf("%d yes", car%10);}else{printf("%d no", car%10);}}if(400<=index){if((((week==1) || (week==3) || (week==5)) && ((car%10==1) || (car%10==3) || (car%10==5) || (car%10==7) || (car%10==9))) || (((week==2) || (week==4)) && ((car%10==0) || (car%10==2) || (car%10==4) || (car%10==6) || (car%10==8)))){printf("%d yes", car%10);}else{printf("%d no", car%10);}}return 0;}

9.计算球体质量

问题描述:
已知铁的比重是7.86(克/立方厘米),金的比重是19.3(克/立方厘米)。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926
输入说明:
输入两个整数,分别表示铁球与金球的直径(单位为毫米)
输出说明:
输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔
输入样例:
100 100
输出样例:
4115.486 10105.456
提示
用scanf输入,用printf输出,保留3位小数的格式控制字符为%.3f

#include int main(){int t_d, j_d;float t_m, j_m, Pl;Pl=3.1415926;scanf("%d %d", &t_d, &j_d);t_m=Pl*t_d*t_d*t_d/6000.000*7.860;j_m=Pl*j_d*j_d*j_d/6000.000*19.300;printf("%.3f %.3f", t_m, j_m);return 0;}

10.温度转换

问题描述:
已知华氏温度到摄氏温度的转换公式为:摄氏温度= (华氏温度- 32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出
输入说明:
只有一个整数,表示输入的华氏温度
输出说明:
输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入
输入样例:
50
输出样例:
10.00
提示:
用scanf输入,用printf输出,保留2位小数的格式控制字符为%.2f

#include int main(){int f;float c;scanf("%d", &f);c=5.0/9.0*(f-32);printf("%.2f", c);return 0;}

11.整数简单运算

问题描述:
编写程序,计算用户输入的两个整数的和、差、乘积(*)和商(/)。
输入格式:
输入两个整数,整数之间用空格分隔。
输出格式:
输出四个整数结果,分别表示和、差、积和商,每输出一个结果换行。
输入样例:
3 4
输出样例:
7
-1
12
0

#include int main(){int a, b, sum, dif, pro, quo;//sum为和,dif为差,pro为积,quo为商scanf("%d %d", &a, &b);sum=a+b;dif=a-b;pro=a*b;quo=a/b;printf("%d\n", sum);printf("%d\n", dif);printf("%d\n", pro);printf("%d\n", quo); return 0; }

15.A+B+C

问题描述:
通过键盘输入三个整数a,b,c,求3个整数之和。
输入说明:
三整形数据通过键盘输入,输入的数据介于-100000和100000之间,整数之间以空格、跳格或换行分隔。
输出说明:
输出3个数的和。
输入样例:
-6 0 39
输出样例:
33

#include int main(){int a, b, c;scanf("%d %d %d", &a, &b, &c);printf("%d", a+b+c);return 0;}

16.字符输入输出

问题描述:
通过键盘输入5个大写字母,输出其对应的小写字母,并在末尾加上“!”。
输入说明:
5个大写字母通过键盘输入,字母之间以竖线“|”分隔。
输出说明:
输出5个大写字母对应的小写字母,之间无分隔,并在末尾加上‘!’。
输入样例:
H|E|L|L|O
输出样例:
hello!

#includeint main(){char a1, a2, a3, a4, a5;scanf("%c|%c|%c|%c|%c", &a1, &a2, &a3, &a4, &a5);a1+=32;a2+=32;a3+=32;a4+=32;a5+=32;printf("%c%c%c%c%c!", a1, a2, a3, a4, a5);return 0;}

18.数字字符

问题描述:
通过键盘输入1个整数a(0<=a<=4),1个数字字符b(’0’<=b<=’5’),求a+b。
输入说明:
整形数据、数字字符通过键盘输入,输入的整形数据介于0和4之间,输入的数字字符介于‘0’和‘5’之间,二个输入数之间用“,”分隔。
输出说明:
分别以整数形式及字符形式输出a+b,输出的二个数之间用“,”分隔。
输入样例:
3,5
输出样例:
56,8

#include int main(){int a;char b;scanf("%d,%c", &a, &b);printf("%d,%c", a+b, a+b);return 0;}

19.实数运算

问题描述:
通过键盘输入长方体的长、宽、高,求长方体的体积V(单精度)。
输入说明:
十进制形式输入长、宽、高,输入数据间用空格分隔。
输出说明:
单精度形式输出长方体体积V,保留小数点后3位,左对齐。
输入样例:
15 8.12 6.66
输出样例:
811.188

#include int main(){float a, b, c, V;scanf("%f %f %f", &a, &b, &c);V=a*b*c;printf("%.3f", V);return 0;}

20.四则运算

问题描述:
输入两个整数和一个四则运算符,根据运算符计算并输出其运算结果(和、差、积、商、余之一)。注意做整除及求余运算时,除数不能为零。
输入说明:
使用scanf()函数输入两个整数和一个运算符,格式见输入样例。
输出说明:
输出使用printf()函数,格式见输出样例。
输入样例:
5%2
输出样例:
5%2=1

#include int main(){int a,b,x;char c;scanf("%d%c%d",&a,&c,&b);if(c=='+'){x=a+b;}if(c=='-'){x=a-b;}if(c=='*'){x=a*b;}if(c=='/'){x=a/b;}if(c=='%'){x=a%b;}printf("%d%c%d=%d",a,c,b,x);return 0;}

21.数位输出

问题描述:
输入一个5位整数,求出其各数位数值,并按照从高位到低位的顺序输出,如:输入12345,输出为1 2 3 4 5。
输入说明:
输入一个五位正整数。
输出说明:
按数位从高到低依次输出,各数位之间以一个空格相分隔。
输入样例:
96237
输出样例:
9 6 2 3 7

#includeint main(){int x, a, b, c, d, e;scanf("%d", &x);a = x/10000;b = (x/1000)%10;c = (x/100)%10;d = (x/10)%10;e = x%10;printf("%d %d %d %d %d", a, b, c, d, e);return 0;}

27.阶梯电价1_分支结构

28.计算某月天数_分支结构

29.计算整数各位数字之和

30.完数

31.最大公约数

32.角谷定理

33.递归数列

问题描述
一个数列A定义如下:
A(1)=1,
A(2)=1/(1+A(1)),
A(3)=1/(1+A(2)),
……
A(n)=1/(1+A(n-1))。
定义一个函数function用来计算数列的第第n项的值,函数声明如下:
double function(int n);
输入说明
输入为1个正整数n,n<=10。
输出说明
函数输出数列A第n项的值,结果小数点后保留6位有效数字,多余部分四舍五入。
输入样例
5
输出样例
0.625000
提示
所有浮点数使用双精度浮点来运算!!!

#include #include using namespace std;double function(int n){if(n==1)return 1;elsereturn 1/(1+function(n-1));}//答案仅需此段,其余为完整程序测试所用int main(){int n;double result;cin>>n;result=function(n)*10*10*10*10*10*10/1/10/10/10/10/10/10;printf("%.6lf", result);return 0;}

34.水仙数

35.歌德巴赫猜想

问题描述
有一种形式的Fibonacci数列定义如下:
F(0)=7,
F(1)=11,
F(n)=F(n-1)+F(n-2)(n>=2)。
按以下声明写一个函数fib
int fib(int n);
fib函数用来计算参数n对应的F(n),
fib(n)的返回值是F(n)。
输入说明
函数参数为一个整数n(0<=n<40)。
输出说明
函数返回值为整数,表示n对应的F(n)值。
输入样例
2
输出样例
18

#include int fib(int n){if(n==0)return  7;else if(n==1)return 11;else return fib(n-1)+fib(n-2);}//答案仅需此段,其余为完整程序测试所用int main(){int n;scanf("%d", &n);printf("%d", fib(n));return 0;}

36.矩阵

37.排序2

38.回文数

39.马鞍点

40.等差数列

41.PM2.5

42.整除判断1

问题描述
判断正整数a能否被b整数,如果不能整除,输出商和余数
输入说明
输入两个正整数a和b(0 输出说明
如果a能被b整除,输出yes,否则在同一行输出a除以b的商和余数,商和余数之间用空格分隔
输入样例
17 7
输出样例
2 3

#include int main(){int a, b, c, d;scanf("%d %d", &a, &b);if(a%b==0){printf("yes");}else{printf("%d %d", a/b, a%b);}return 0;}

43.整数分析

44.斐波纳契数列素数判断

45.气温波动

46.折点计数

47.冰箱温度预测

问题描述
编写一个程序,用于预测冰箱断电后经过时间t(以小时为单位)后的温度T。已知计算公式如下所示
T=4t2/(t+2)-20
输入说明
输入两个整数h和m表示冰箱断电后经过的时间,h表示小时,m表示分钟
输出说明
输出冰箱断电后经过时间t(以小时为单位)后的温度T,保留两位小数
输入样例
2 0
输出样例
-16.00

#include int main(){int h,m;float T,t;scanf("%d %d",&h,&m);t=h+m/60.0;T=(4.0*t*t)/(t+2.0)-20.0;printf("%.2f",T);return 0;}

48.除法计算器

49.完全平方数

50.选号程序

[50~100]

51.寻找最大整数_分支结构

52.字符处理_分支结构

53.abc组合

53.成绩分级1_分支结构

55.数列求和

56.直角三角形判断_分支结构

57.Fibonacci数列

60.简单程序

输入说明

输出说明
用C程序输出以下两行文字
C programming language is useful!
I like it very much.
输入样例

输出样例
C programming language is useful!
I like it very much.
提示
使用printf输出即可

#include int main(){printf("C programming language is useful!\nI like it very much.");return 0;}

63.工资计算_分支结构

64.自然数分解

65.数字处理

66.平均数

67.查找

68.日期计算

69.0-1矩阵

70.Z字形扫描

71.相邻区域

72.寻找最长的行

问题描述
寻找若干行文本中最长的一行
输入说明
输入为多个字符串(每个字符串长度不超过100个字符),每个字符串占一行,输入的行为“*** end ***”时表示输入结束
输出说明
输出其中最长的一行长度后换行再输出最长行的内容,如果最长行不止一个,则输出其中的第一行。
输入样例
abce
abdf dlfd
end
输出样例
9
abdf dlfd

#include #include int main(){int n,max=0;char a[100],b[100];gets(a);if(gets(a)!="***end***"){n=strlen(a);if(n>max){max=n;strcpy(b, a);}}printf("%d\n%s", max, b);return 0;}

73.字符串压缩

问题描述
  有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。
  例如,字符串aaaaabbbabaaaaaaaaaaaaabbbb可压缩为a5b3aba13b4。
请设计一个程序,将采用该压缩方法得到的字符串解压缩,还原出原字符串并输出。
输入说明
输入数据为一个字符串(长度不大于50,只包含字母和数字),表示压缩后的字符串
输出说明
在一行上输出解压缩后的英文字符串(长度不超过100),最后换行。
输入样例
a5b3aba13b4
输出样例
aaaaabbbabaaaaaaaaaaaaabbbb

方法一(转载自字符串压缩-xdoj):

#include #include using namespace std;int main() {int i, k, num;char s[50], temp;gets(s);for (i = 0; i < strlen(s);) {printf("%c", s[i]);temp = s[i];i++;num = 0;while (s[i] >= '0' && s[i] <= '9') {num = num * 10 + (s[i] - '0');i++;}for (k = 0; k < num - 1; k++) {printf("%c", temp);}}return 0;}

方法二(我的方法):
我的方法代码多一倍,发现真相的我眼泪落下了……

#include #include #include using namespace std;int main(){char b='0', a[51]={'\0'}, alpha, str[101]={0};cin>>a;int i, j, jp, count=0, n;//jp=j_placen=strlen(a);for(i=0, j=0; i<n;){if(isalpha(a[i])){alpha=a[i];str[j]=alpha;i++;j++;jp=j;}if(isdigit(a[i])){if(isdigit(a[i+1])){count=(a[i]-'0')*10+(a[i+1]-'0');i+=2;for(j; j<=count+jp-2; j++){str[j]=alpha;}}else if(a[i]>='3' && a[i]<='9'){count=a[i]-'0';i++;for(j; j<=count+jp-2; j++){str[j]=alpha;}}else{for(j; j<=j;){str[j]=alpha;i++;j++;}}}}cout<<str<<endl;return 0;}

75.灰度直方图

问题描述
  一幅m×n的灰度图像可以用一个二维矩阵表示,矩阵中的每个元素表示对应像素的灰度值。灰度直方图表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率。
  假设图像灰度为16级(灰度值从0-15),现给出一个矩阵表示的灰度图像,输出各级灰度的像素个数。
输入说明
  输入数据第一行为两个整数m 和n分别表示图像的宽度和高度(0<=m,n<=256),其后是n行数据,每行m个整数,分别表示图像各个像素的灰度值。
输出说明
  输出n行数据,每行数据由两个整数组成,分别表示灰度级和该灰度级像素个数,整数之间用空格分隔,灰度级输出顺序为从低到高,如果某灰度级像素个数为0,则不输出该灰度级的统计结果。
输入样例
5 4
0 1 0 2 8
3 4 8 5 9
12 14 10 6 7
1 15 3 6 10
输出样例
0 2
1 2
2 1
3 2
4 1
5 1
6 2
7 1
8 2
9 1
10 2
12 1
14 1
15 1

#include int main(){int m, n, i, j;scanf("%d %d", &m, &n);int a[m][n], b[16] = {0}, sum = 0, p;for(i = 0; i < m; i++){for(j = 0; j < n; j++){scanf("%d", &a[i][j]);}}for(p = 0; p < 16; p++){for(i = 0; i < m; i++){for(j = 0; j < n; j++){if(a[i][j] == p)sum++;}}b[p] = sum;sum = 0;if(b[p] != 0)printf("%d %d\n", p, b[p]);}return 0;}

76.统计正整数的个数

79.求平均值

题目描述:
计算三个整数的平均值,结果保留两位小数。
输入格式:
共一行,包含三个整数,整数之间用空格分隔。
输出格式:
共一行,输出平均值,结果保留两位小数。
输入示例:
20 42 55
输出示例:
39.00

#include int main(){int a, b, c;float x;scanf("%d %d %d", &a, &b, &c);printf("%.2f", (a+b+c)/3.00);return 0;}

80.字符统计

问题描述
  给出一个字符C和一行文字S,统计在这行文字S中字符C出现的次数。
  程序还需要支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入说明
  输入数据由两行构成。
  第一行包含一个字符C和一个数字n。字符C为大小或小写英文字母。数字n表示大小写敏感选项,当数字n为0时表示大小写不敏感,当数字n为1时表示大小写敏感。字符C和数字n之间用空格分隔。
  第二行为一个字符串S,字符串由大小写英文字母组成,不含空格和其他字符。字符串S长度不超过100。
输出说明
输出字符C在字符串S中出现的次数。
输入样例
样例1输入
L 1
HELLOWorld
样例2输入
L 0
HELLOWorld
输出样例
样例1输出
2
样例2输出
3

#include #include #include #include #include using namespace std;int main() {char c;int n;std::string s;cin >> c >> n;cin >> s;if (n == 0) {c = tolower(c);for (int i = 0; i < s.length(); i++) {s[i] = tolower(s[i]);}}int count = 0;for (int i = 0; i < s.length(); i++) {if (s[i] == c)count++;}cout << count;return 0;}

81.字符串查找

问题描述
  给出一个字符串和多行文字,输出在这些文字中出现了指定字符串的行。
程序还需要支持大小写敏感选项:
  当选项打开时,表示同一个字母的大写和小写看作不同的字符;
  当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入说明
  输入数据第一行包含一个字符串s,由大小写英文字母组成,长度不超过100。
  第二行包含一个数字,表示大小写敏感选项。当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
  第三行包含一个整数n,表示给出的文字行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。每个字符串长度不超过100。
输出说明
输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串s的行。
输入样例
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello

输出样例
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello

#include#includeint main(){char str[10000][100], copy[10000][100];char str0[100], str1[100];int i, j, n, sense;scanf("%s", str0);scanf("%d %d", &sense, &n);for(i=0;i<n;i++){scanf("%s", str[i]);}if(!sense){strcpy(str1, str0);for(j=0; j<strlen(str1); j++){if(str1[j]>='A' && str1[j]<='Z')str1[j]+=32;}for(i=0; i<n; i++)strcpy(copy[i], str[i]);for(i=0; i<n; i++){for(j=0; j<strlen(copy[i]); j++){if(copy[i][j]>='A' && copy[i][j]<='Z')copy[i][j]+=32;}}for(i=0; i<n; i++){if(strstr(copy[i], str1)!=NULL)puts(str[i]);} }else {for(i=0; i<n; i++){if(strstr(str[i], str0)!=NULL)puts(str[i]);} }return 0;} 

82.密码强度

83.图像旋转

84.目录操作

问题描述
  在操作系统中,文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。
  有一个特殊的目录被称为根目录,是整个文件系统形成的这棵树的根节点,在类Linux系统中用一个单独的 “/”符号表示。
  因此一个目录的绝对路径可以表示为“/d2/d3”这样的形式。
  当前目录表示用户目前正在工作的目录。为了切换到文件系统中的某个目录,可以使用“cd”命令。
  假设当前目录为“/d2/d3”,下图给出了cd命令的几种形式,以及执行命令之后的当前目录。
  

现在给出初始时的当前目录和一系列目录操作指令,请给出操作完成后的当前目录。
输入说明
  第一行包含一个字符串,表示当前目录。
  后续若干行,每行包含一个字符串,表示需要进行的目录切换命令。
  最后一行为pwd命令,表示输出当前目录
注意:

  1. 所有目录的名字只包含小写字母和数字,cd命令和pwd命令也都是小写。最长目录长度不超过200个字符。
  2. 当前目录已经是根目录时,cd … 和cd /不会产生任何作用

输出说明
输出一个字符串,表示经过一系列目录操作后的当前目录
输入样例
/d2/d3/d7
cd. .(两个“.”中间没有空格,由于Markdown编辑器语法限制只能备注)
cd /
cd /d1/d6
cd d4/d5
pwd
输出样例
/d1/d6/d4/d5

#include#includeint main(){char a[201], b[201];gets(a);int i, j;while(1){gets(b);if(strcmp(b, "pwd")==0) break;else{if(strcmp(b, "cd /")==0){strcpy(a, "/"); }else if(b[4]=='.'){if(strcmp(a, "/")!=0){for(i=strlen(a)-1; i>=0; i--){if(a[i]!='/') a[i]=0;else if(a[i]=='/' && strlen(a)>1){a[i]=0;break;}}}}else if(b[3]=='/' && b[4]!=0){for(i=0; i<strlen(a); i++)a[i]=1;for(i=3; b[i]!='\0'; i++){a[i-3]=b[i];}a[i+4]=0;}else{if(strcmp(a, "/")==0){j=1;for(i=3; b[i]!='\0'; i++, j++){a[j]=b[i];}a[j]='\0';}else{i=strlen(a);a[i]='/';i++;for(j=3; b[j]!='\0'; i++, j++){a[i]=b[j];}a[++i]='\0';}} }}puts(a);return 0; }

85.字符串相似度

问题描述
  最长公共子串指给定的两个字符串之间最长的相同子字符串(忽略大小写),最长公共子串长度可用来定义字符串相似度。
  现给出两个字符串S1和S2,S1的长度为Len1,S2的长度为Len2,假设S1和S2的最长公共子串长度为LCS,则两个字符串的相似度定义为2LCS/(Len1+Len2)。
  例如:S1=”App”,S2=”apple”,S1长度为3,S2长度为5,它们的最长公共子串为”App”,长度为3,则相似度为2
3/(3+5)=0.75。
  现给出两个字符串,请计算它们的相似度结果保留3位小数。
输入说明
输入为两行,分别表示两个字符串S1和S2,每个字符串长度不超过100个字符,所有字符均为可打印字符,包括大小写字母,标点符号和空格。
输出说明
输出两个字符串的相似度,结果四舍五入保留3位小数。
输入样例
App
Apple
输出样例
0.750

#include#include#includeint main(){char s1[101], s2[101], t[101];int i, j;float len1, len2, max=0;int a[100][100]={0};float similar;gets(s1);gets(s2);len1=strlen(s1);len2=strlen(s2);for(i=0; i<len1; i++){for(j=0; j<len2; j++){if(s1[i]==s2[j]||abs(s1[i]-s2[j])==32){if(i!=0 && j!=0)a[i][j]=a[i-1][j-1]+1;else a[i][j]=1;}}}for(i=0; i<len1; i++){for(j=0; j<len2; j++){if(a[i][j]>max) max=a[i][j];}}similar=2.0*max/(len1+len2);printf("%.3f", similar);return 0; } 

86.画图

问题描述
  在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形,指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。
  下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。
  图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。在实际的涂色过程中,所有的矩形 都涂成统一的颜色,图中显示不同颜色仅为说明方便。给出所有要画的矩形,请问总共有多少个单位的面积被涂上颜色。
输入说明
输入的第一行包含一个整数n,表示要画的矩形的个数,1<=n<=100。
接下来n行,每行4个非负整数,分别表示要画的矩形的左下角的横坐标与纵坐标,以及右上角的横坐标与纵坐标。0<=横坐标、纵坐标<=100。
输出说明
输出一个整数,表示有多少个单位的面积被涂上颜色。
输入样例
2
1 1 4 4
2 3 6 5
输出样例
15

在这里插入代码片

87.跳一跳

88.ISBN号码

题目描述:
  每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如 “x-xxx-xxxxx-x” ,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4 就是一个标准的ISBN码。
  ISBN码的首位数字表示书籍的出版语言,例如 0 代表英语;
  第一个分隔符 “-” 之后的三位数字代表出版社,例如 670 代表维京出版社;
  第二个分隔之后的五位数字代表该书在出版社的编号;
  最后一位为识别码。识别码的计算方法如下:
  首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
  例如ISBN号码 0-670-82162-4 中的识别码 4 是这样得到的:
  对 067082162 这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取 158 mod (即%取余)11 的结果 4 作为识别码。
  编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出 “Right” ;如果错误,则输出正确的ISBN号码。
输入格式:
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式:
输出一行,假如输入的ISBN号码的识别码正确,那么输出 “Right” ,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符 “-” )。
示例:
样例输入1
0-670-82162-4
样例输入2
0-670-82162-0

输出样例
样例输出1
Right
样例输出2
0-670-82162-4

#include #include int main(){int i, num = 0;char s[11] = {'0'};for(i = 0; i < 10;){s[i] = getchar();if(s[i] != '-')i++;}/*这里我最开始写的代码出错了一直找不到原因初始错误代码:while(getchar() != '-'){for(i = 0; i < 10; i++){s[i] = getchar();}}运行时发现按回车键没有用,调试时发现卡在 while 那里一直不往下走,问了同学才知道 while 括号里的 getchar() 和 for 循环里的 getchar() 读取的分别是第一个键入和第二个键入……*/for(i = 0; i < 9; i++){num += (s[i] - '0') * (i + 1);}num %= 11;if(num == (s[9] - '0'))printf("Right");elseprintf("%c-%c%c%c-%c%c%c%c%c-%d", s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], num);return 0;}

89.计算球的体积

题目描述:
输入球的半径,计算并输出球的体积,假定pi=3.14,结果保留两位小数。
输入格式:
共一行,输入球体半径,两位小数。
输出格式:
共一行,输出球体体积,结果保留两位小数。
示例:
输入:5.50
输出:696.56

#include int main(){float r, pi, v;pi=3.14;scanf("%f", &r);printf("%.2f", 4.00/3.00*pi*r*r*r);return 0;}

90.求三位整数各位之和

题目描述:
输入一个三位数整数,求其百位、十位和个位数字之和。
输入格式:
共一行,输入一个三位整数。
输出格式:
共一行,输出一个整数。
示例:
输入:128
输出:11

#include int main(){int x, y;scanf("%d", &x);printf("%d", x/100+x/10%10+x%10);return 0;}

91.求三角形面积

题目描述:
  输入三角形的三边长,计算三角形的面积,结果保留两位小数。
  边长分别为a,b,c,三角形的面积公式为s=sqrt(p(p-a)(p-b)(p-c)),其中p=(a+b+c)/2。
输入格式:
共一行,输入三个数,保留两位小数,用空格隔开各个数据。
输出格式:
共一行,输出面积,结果保留两位小数。
示例:
输入:3.00 4.00 5.00
输出:6.00

#include #include int main(){float a, b, c, p;scanf ("%f %f %f", &a, &b, &c);p=(a+b+c)/2.00;printf("%.2f", pow(p*(p-a)*(p-b)*(p-c), 0.50));return 0;}

92.工资发放

题目描述:
公司财务要发工资现金,需要提前换取100元、50元、20元、10元、5元和1元的人民币,请输入工资数,计算张数最少情况下,各自需要多少张。
输入格式:
共一行,输入一个正整数。
输出格式:
共一行,分别是100、50、20、10、5、1元面额的张数,用空格隔开各个数据。
示例:
输入:1258
输出:12 1 0 0 1

#include int main(){int n, a, b, c, d, e, f, x;scanf("%d", n);a=n/100;x=n%100;if(x>=50) b=1;else b=0;}

93.整数比较1_分支结构

94.整数比较2分支结构

97.输出26个英文字母

98.成绩分级2_分支结构

99.阶梯电价2_分支结构

100.三角形判别

描述
已知三角形任意两边之和大于第三边,给出三个正整数a,b,c,,请判断能否构成一个三角形,并输出相应结果。
输入说明
输入数据为同一行上的3个整数a,b,c(0 < a,b,c < 1000),整数之间用空格分隔。
输出说明
如果输入的三个整数能够构成一个三角形,输出该三角形周长,否则输出No
输入样例1
3 3 2
输入样例2
1 1 5
输出样例1
8
输出样例2
No
提示
能够构成一个三角形,输出该三角形周长,否则输出No

#include int main(){int a, b, c, l;scanf("%d %d %d", &a, &b, &c);if(a+b>c && a+c>b && b+c>a)printf("%d", a+b+c);elseprintf("No");return 0;}

[101~150]

101.四位密码器

110.判断奇偶性

题目描述:
编写程序:输入一个正整数,判断该数的奇偶性,输出判断的结果(偶数/奇数)。
输入格式:
输入一个正整数。
输出格式:
输出“偶数”或“奇数”。
示例:
输入:5
输出:奇数

#includeint main(){int a;if(a%2==0)printf("偶数");elseprintf("奇数");return 0;}

111.整除判断2

题目描述:
编写程序,输入一个正整数,判断是否能被5和7同时整除,若可以,则输出yes;否则输出no。
输入格式:
输入一个正整数。
输出格式:
输出“yes”或“no”。
示例:
输入:35
输出:yes

#include int main(){int a;scanf("%d", &a);if(a%5==0 && a%7==0)printf("yes");elseprintf("no");return 0;}

112.分段函数1_分支结构

113.出租车计价

116.阶梯电价控制

125.利率计算

问题描述:
假如我国国民生产总值的年增长率为9%,计算10年后我国国民总值与现在相比增长多少百分比。计算公式为p=(1+r)n,r为增长率,n为年数,p为与现在相比的倍数。
输入说明:
输入两个浮点数,分别表示年增长率和年数,两个浮点数之间用空格分隔。
输出说明:
输出一个浮点数,表示与现在相比的倍数,小数点后保留2位小数。
输入样例:
0.09 10
输出样例:
2.37

#include #include int main(){float r, n, p;//r为增长率,n为年数,p为与现在相比的倍数scanf("%f %f", &r, &n);p=pow((1+r), n);printf("%.2f", p);return 0;}

126.购房贷款计算

问题描述:
购房从银行贷了一笔款d,准备每月还款额为P,月利率为r,计算多少月能还清。(设d为300000元,p为6000元,r为1%,对求得的月份取小数点后一位,对第2位按四舍五入处理)
提示:
计算还清月数m的公式如下:

也可以将公式改写为:

输入说明:
输入三个浮点数,分别表示贷款,每月还款额与月利率,三个浮点数之间用空格分隔。
输出说明:
输出以个浮点数,表示还清贷款的月数,小数点后保留2位小数。
输入样例:
300000 6000 0.01
输出样例:
69.66

#include #include int main(){float d, p, r, m;//d为贷款,p为还款,r为月利率,m为月数scanf("%f %f %f", &d, &p, &r);m=log(p/(p-d*r))/log(1+r);printf("%.2f", m);return 0;}

139.字符加密

问题描述:
请编程序将“China”译成密码,密码规律是:用原来字母后面第四个字母代替原来的字母。例如“A”后面的第四个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。
输入说明:
用赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为‘C’,‘h’,‘i’,‘n’,‘a’,字符之间以空格分隔。
输出说明:
经过运算,使c1,c2,c3,c4,c5分别变成‘G’,‘l’,‘m’,‘r’,‘e’。用printf函数输出这五个字符
输入样例:
C h i n a
输出样例:
Glmre

#include int main(){char c1, c2, c3, c4, c5;scanf("%c %c %c %c %c", &c1, &c2, &c3, &c4, &c5);printf("%c%c%c%c%c", c1+4, c2+4, c3+4, c4+4, c5+4);return 0;}

146.英文表示数字_分支结构

147.求奇数的和

149.求交错序列前N项和

150.分段函数2_分支结构

[151~200]

151.利润计算_分支结构

155.阶乘之和—双层循环

156.数字个数统计

157.自然数求和

159.阶乘运算

161.数字个数统计2

162.矩阵相乘

163.数值求和—二维数组练习

164.转换排序—数组中的元素排序练习

165.最值位置—数组数列元素查询练习

176.中间数

177.累加和校验

183.最大公约数和最小公倍数

185.迭代法求根

189.小球下落问题

190.矩阵对角线求和

191.密码编译

192.数组逆序排列

193.歌唱比赛

196.输出金字塔

200.数组元素平移

[201~250]

201.后项除以前项

204.单词统计—字符数组练习

205.金字塔打印

206.字符删除—字符数组练习

207.单词排序—字符数组练习

215.字符逆序排放

219.素数判断

221.字符串元素统计

227.字符串查找

228.字符串筛选

229.字符串连接

230.调用函数求素数

240.整数转换为字符串

241.十六进制转换为十进制

244.单词排序

题目描述:
定义一个二维字符数组str[10][20],行号表示单词序号,列号表示单词最大长度,输入一个正整数N(N≤10),表示单词数,使用函数wd_sort()完成单词的排序,按字母顺序从小到大排列单词
输入描述:
输入一个正整数N和一个二维字符数组str,字母为小写,行号表示单词序号,列号表示单词最大长度。
输出描述:
格式输出:排序后的单词之间用换行分隔。
输入样例:
3
word
fish
egg
输出样例:
egg
fish
word
提示:
使用strcmp()、strcpy()和strlen()函数,头文件string.h。

#include#includeint main(){char str[10][20];char trans[100];int i, j, n, t;scanf("%d", &n);for(i=0; i<n; i++){scanf("%s", &str[i]);}for(i=0; i<n; i++){for(j=0; j<n-1; j++){if(strcmp(str[j], str[j+1])>0){for(t=0; t<20; t++)trans[t]=str[j][t];for(t=0; t<20; t++)str[j][t]=str[j+1][t];for(t=0; t<20; t++)str[j+1][t]=trans[t];}}}for(i=0; i<n; i++){puts(str[i]);printf("\n");}return 0;}

249.分解质因数

[251~300]

298.最大值与最小值_分支结构

299.奖金计算_分支结构

300.位数判断

[301~350]

301.亲和数

302.质数求和

[351~400]

374.课堂练习-沸水降温曲线

描述:
沸腾的水(100℃)在室温下温度随时间变化的曲线如图所示,给出时间,计算
水的温度

输入:
第一行为两个整数 m(m[0,100]),s(s∈[0,59]),分别表示降温时间的分钟数和秒数
输出:
输出一个小数,表示输入时间对应的水的温度,温度保留 1 位小数。
输入样例:
5 30
输出样例:
72.5

#includeint main(){int m,s;float t,c;scanf("%d%d", &m, &s);t = m+(s*1.0/60);if(t>=0 && t<=10){c = 100-5*t;}else if(t>10 && t<=30){c = 50-(t-10);}else if(t>30 && t<=50){c = 30-((t-30)*1.0)/2;}else{c = 20;}printf("%.1f", c);return 0;}

375.课堂练习题2-温度统计

378.正整数的最优分解

381.小中大

382.图像旋转-2021

384.种苹果

385.报数游戏