文章目录
- 7-51 求奇数分之一序列前N项和
- 7-52 生成3的乘方表
- 求组合数
- 7-54 求整数均值
- 7-55 阶梯电价
- 7-56 求平方与倒数序列的部分和
- 7-57 求交错序列前N项和
- 7-58 求平方根序列前N项和
- 7-59 求阶乘序列前N项和
- 7-60 统计学生平均成绩与及格人数
- 7-61 统计字符
- 7-62 输出闰年
- 7-63 成绩转换
- 7-64 查询水果价格
- 7-65 高速公路超速处罚
- 7-66 出租车计价
- 7-67 统计学生成绩
- 7-68 三角形判断
- 7-69 求给定精度的简单交错序列部分和
- 7-70 猜数字游戏
- 7-71 求e的近似值
- 7-72 求奇数和
- 7-73 求分数序列前N项和
- 7-74 最大公约数和最小公倍数
- 7-75 猴子吃桃问题
- 7-76 兔子繁衍问题
- 7-77 查找指定字符
- 7-78 字符串逆序
- 7-79 字符串转换成十进制整数
- 7-80 求矩阵各行元素之和
- 7-81 统计大写辅音字母
- 7-82 输出菱形图案
- 7-83 计算分段函数[3]
- 7-84 求1到100的和
- 7-85 计算存款利息
- 7-86 求幂之和
- 7-87 计算个人所得税
- 7-88 输出三角形面积和周长
- 7-89 三天打鱼两天晒网
- 7-90 求整数的位数及各位数字之和
- 7-91 输出三角形字符阵列
- 7-92 简化的插入排序
- 7-93 数字加密
- 7-94 交换最小值和最大值
- 7-95 求整数序列中出现次数最多的数
- 7-96 求矩阵的局部极大值
- 7-97 字符串字母大小写转换
- 7-98 输出数组元素
- 7-99 找最长的字符串
- 7-100 计算职工工资
7-51 求奇数分之一序列前N项和
分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
23
输出样例:
sum = 2.549541
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
double sum;
int i=1;
while(n--){
sum+=pow(i,-1);
i+=2;
}
printf("sum = %.6f",sum);
return 0;
}
7-52 生成3的乘方表
分数 5
作者 C课程组
单位 浙江大学
输入一个非负整数n,生成一张3的乘方表,输出3
0
~3
n
的值。可调用幂函数计算3的乘方。
输入格式:
输入在一行中给出一个非负整数n。
输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。
输入样例:
3
输出样例:
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0;i<=n;i++){
printf("pow(3,%d) = %d\n",i,(int)pow(3,i));
}
return 0;
}
求组合数
本题要求编写程序,根据公式C
n
m
=
m!(n−m)!
n!
算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。
输入样例:
2 7
输出样例:
result = 21
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
double fact(int n){
double sum=1;
for(int i=1;i<=n;i++){
sum*=i;
}return sum;
}
int main(){
int m,n;
cin>>m>>n;
double sum;
sum=fact(n)/(fact(m)*fact(n-m));
cout<<"result = "<<sum;
return 0;
}
7-54 求整数均值
分数 5
作者 乔林
单位 清华大学
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出4个整数,其间以空格分隔。
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
输入样例:
1 2 3 4
输出样例:
Sum = 10; Average = 2.5
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
double sum=0;
int x,x2,num=0,x3,x4;
cin>>x>>x2>>x3>>x4;
sum=(x+x2+x3+x4)/4.0;
printf("Sum = %d; Average = %.1f",x+x2+x3+x4,sum);
return 0;
}
7-55 阶梯电价
分数 5
作者 陈建海
单位 浙江大学
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
double sum=0;
if(n>50){sum=50*0.53+(n-50)*0.58;printf("cost = %.2f",sum);}
else if(n>=0){sum=n*0.53;printf("cost = %.2f",sum);}
else cout<<"Invalid Value!";
return 0;
}
7-56 求平方与倒数序列的部分和
分数 5
作者 C课程组
单位 浙江大学
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m
2
+1/m+(m+1)
2
+1/(m+1)+⋯+n
2
+1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例:
5 10
输出样例:
sum = 355.845635
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n,m;
cin>>m>>n;
double sum=0;
for(int i=m;i<=n;i++){
sum+=pow(i,2)+pow(i,-1);
}
printf("sum = %.6f",sum);
return 0;}
7-57 求交错序列前N项和
分数 5
作者 陈建海
单位 浙江大学
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,结果保留三位小数。
输入样例:
5
输出样例:
0.917
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int N;
cin>>N;
double sum=0;
for(int i=1,j=1;i<=N;i++,j+=2){
sum+=i*pow(-1,i+1)/j;
}
printf("%.3f",sum);
return 0;
}
7-58 求平方根序列前N项和
分数 5
作者 颜晖
单位 浙江大学
本题要求编写程序,计算平方根序列
1
+
2
+
3
+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 22.47
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
double sum=0;
for(int i=1;i<=n;i++){
sum+=sqrt(i);
}
printf("sum = %.2f",sum);
return 0;
}
7-59 求阶乘序列前N项和
分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。
输入格式:
输入在一行中给出一个不超过12的正整数N。
输出格式:
在一行中输出整数结果。
输入样例:
5
输出样例:
153
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
double fact(int n){
double sum=1;
for(int i=1;i<=n;i++){
sum*=i;
}return sum;
}
int main(){
int n;
cin>>n;
int sum;
for(int i=1;i<=n;i++){
sum+=fact(i);
}
cout<<sum;
return 0;
}
7-60 统计学生平均成绩与及格人数
分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
输入格式:
输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。
输出格式:
按照以下格式输出:
average = 成绩均值
count = 及格人数
其中平均值精确到小数点后一位。
输入样例:
5
77 54 92 73 60
输出样例:
average = 71.2
count = 4
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n>=0){
if(n==0){printf("average = 0.0\n");printf("count = 0");}
else{
int i;
int sum=0;
int temp=0;
for(i=1;i<=n;i++)
{
int t;
scanf("%d",&t);
sum+=t;
if(t>=60) temp++;
}
printf("average = %.1lf\n",(double)sum/n);
printf("count = %d\n",temp);}}
return 0;
}
7-61 统计字符
分数 5
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。
输出格式:
在一行内按照
letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。
输入样例:
aZ &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
char s;
s=getchar();
int n=1;
int letter=0,blank=0,digit=0,ot=0;
while(s!='\n'||n<=10){
if(isdigit(s))digit++;
else if(isupper(s)||islower(s))letter++;
else if(s==' '||s=='\n')blank++;
else ot++;
s=getchar();
n++;
}
cout<<"letter = "<<letter<<", blank = "<<blank<<", digit = "<<digit<<", other = "<<ot;
return 0;
}
7-62 输出闰年
分数 5
作者 陈建海
单位 浙江大学
输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
输入样例2:
2000
输出样例2:
Invalid year!
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=2000||n>2100){
cout<<"Invalid year!";
}else {
int k=1;
for(int i=2001;i<=n;i++){
if(i%4==0&&i%100!=0||i%400==0){
cout<<i<<endl;k=0;
}
}
if(k)cout<<"None";
}
return 0;
}
7-63 成绩转换
分数 6
作者 沈睿
单位 浙江大学
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
switch(n/10){
case 10:
case 9:cout<<"A";break;
case 8:cout<<"B";break;
case 7:cout<<"C";break;
case 6:cout<<"D";break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:cout<<"E";break;
}
return 0;}
7-64 查询水果价格
分数 5
作者 C课程组
单位 浙江大学
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
首先在屏幕上显示以下菜单:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:
输入在一行中给出用户连续输入的若干个编号。
输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。
输入样例1:
3 -1 0 2
输出样例1:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
输入样例2:
1 2 3 3 4 4 5 6 7 8
输出样例2:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cout<<"[1] apple"<<endl;
cout<<"[2] pear"<<endl;
cout<<"[3] orange"<<endl;
cout<<"[4] grape"<<endl;
cout<<"[0] exit"<<endl;
cin>>n;
int sum=0;
while(sum<5&&n!=0){
sum++;
switch(n){
case 1:cout<<"price = 3.00"<<endl;break;
case 2:cout<<"price = 2.50"<<endl;break;
case 3:cout<<"price = 4.10"<<endl;break;
case 4:cout<<"price = 10.20"<<endl;break;
}
if(n!=1&&n!=2&&n!=3&&n!=4)cout<<"price = 0.00"<<endl;
cin>>n;}
return 0;
}
7-65 高速公路超速处罚
分数 5
作者 陈建海
单位 浙江大学
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。
输入样例1:
65 60
输出样例1:
OK
输入样例2:
110 100
输出样例2:
Exceed 10%. Ticket 200
输入样例3:
200 120
输出样例3:
Exceed 67%. License Revoked
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
double n;
double m;
cin>>n>>m;
int t=((n-m)*100+50)/m;
//(int)t;
if(t<10)cout<<"OK"<<endl;
else if(t<50&&t>=10)cout<<"Exceed "<<t<<"%. Ticket 200";
else if(t>=50)cout<<"Exceed "<<t<<"%. License Revoked";
return 0;
}
7-66 出租车计价
分数 5
作者 沈睿
单位 浙江大学
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
double m;
cin>>m>>n;
double sum=0;
if(m<=3)sum+=10;
else if(m<=10)sum+=2*(m-3)+10;
else sum+=3*(m-10)+24;
if(n>=5)sum+=n/5*2;
cout<<(int)(sum+0.5);
return 0;
}
7-67 统计学生成绩
分数 5
作者 陈建海
单位 浙江大学
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
输入样例:
7
77 54 92 73 60 65 69
输出样例:
1 0 2 3 1
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int A=0,B=0,C=0,D=0,E=0;
while(n--){
int x;
cin>>x;
if(x>=90)A++;
else if(x>=80)B++;
else if(x>=70)C++;
else if(x>=60)D++;
else E++;
}
cout<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<E;
return 0;
}
7-68 三角形判断
分数 5
作者 杨起帆
单位 浙江大学
给定平面上任意三个点的坐标(x
1
,y
1
)、(x
2
,y
2
)、(x
3
,y
3
),检验它们能否构成三角形。
输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x
1
、y
1
、x
2
、y
2
、x
3
、y
3
。
输出格式:
若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
输入样例1:
4 5 6 9 7 8
输出样例1:
L = 10.13, A = 3.00
输入样例2:
4 6 8 12 12 18
输出样例2:
Impossible
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
double x1,x2,x3,y1,y2,y3,A=0,L=0;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
double l1=sqrt(pow(abs(x2-x1),2)+pow(abs(y2-y1),2)),l2=sqrt(pow(abs(x3-x2),2)+pow(abs(y3-y2),2)),l3=sqrt(pow(abs(x3-x1),2)+pow(abs(y3-y1),2));
if(l1+l2<=l3||l1+l3<=l2||l2+l3<=l1)cout<<"Impossible"<<endl;
else{
double p=0;
p=(l1+l2+l3)/2;
printf("L = %.2f, A = %.2f\n",l1+l2+l3,sqrt(p*(p-l1)*(p-l2)*(p-l3)));
}
return 0;}
7-69 求给定精度的简单交错序列部分和
分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。
输入格式:
输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例1:
4E-2
输出样例1:
sum = 0.854457
输入样例2:
0.02
输出样例2:
sum = 0.826310
#include <stdio.h>
#include <math.h>
int main(){
int fm = 1;
double eps, item = 0.0, sum = 0.0, sign = 1.0;
scanf("%lf", &eps);
do{
item = sign*(1.0/fm);
sign = -sign;
fm += 3;
sum += item;
}while( fabs(item) > eps );
printf("sum = %lf", sum);
return 0;
}
7-70 猜数字游戏
分数 5
作者 C课程组
单位 浙江大学
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。
输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!
#include <stdio.h>
int main(){
// randNum:随机数 guessNum:用户猜测数 N:次数 flag:标志
int randNum, guessNum, N, flag = 0;
scanf("%d %d", &randNum, &N);
for( int i=1; i<=N; i++ ){ //循环输入N次结束
scanf("%d", &guessNum);
if( guessNum < 0 ) // 输入不合法
break;
if( guessNum > randNum ) // 输入太大
printf("Too big\n");
else if( guessNum < randNum ) // 输入太小
printf("Too small\n");
else if( guessNum == randNum ){ // 相等
if( i == 1 ) // 1次成功
printf("Bingo!\n");
else if( i <= 3 ) // 3次以内成功
printf("Lucky You!\n");
else if( i > 3 ) // 3次以上成功
printf("Good Guess!\n");
flag = 1;
break;
}
}
// 判断是否在N次内猜对
if( flag == 0 )
printf("Game Over\n");
return 0;
}
7-71 求e的近似值
分数 5
作者 C课程组
单位 浙江大学
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
输入格式:
输入第一行中给出非负整数 n(≤1000)。
输出格式:
在一行中输出部分和的值,保留小数点后八位。
输入样例:
10
输出样例:
2.71828180
#include <stdio.h>
double fact( int n );
int main(){
int n;
double sum = 1.0;
do{
scanf("%d", &n);
}while( n<0 || n>1000 ); //保证n的范围
for( int i=1; i<=n; i++){
sum += 1.0 / fact(i);
}
printf("%.8lf", sum);
return 0;
}
double fact( int n ){
if( n <= 1 )
return n;
else
return n * fact( n-1 );
}
7-72 求奇数和
分数 5
作者 C课程组
单位 浙江大学
本题要求计算给定的一系列正整数中奇数的和。
输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出正整数序列中奇数的和。
输入样例:
8 7 4 3 70 5 6 101 -1
输出样例:
116
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
while(n>0){
if(n%2==1){
sum+=n;
}
cin>>n;
}
cout<<sum;
return 0;}
7-73 求分数序列前N项和
分数 6
作者 张彤彧
单位 浙江大学
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
#include <stdio.h>
#include<stdlib.h>
int main(){
int N;
double sum = 2, fz = 2, fm = 1; // fz:分子 fm:分母
scanf("%d", &N);
if( N == 0 ){ // N为0,恒为零
printf("0.00");
exit(0);
}
if( N == 1 ){ // N为1,恒为2
printf("2.00");
exit(0);
}
for( int i=2; i<=N; i++ ){ // 从第二项开始
fz = fm + fz; // 计算分子
fm = fz - fm; // 计算分母
sum += (fz / fm);
}
printf("%.2lf\n", sum);
return 0;
}
7-74 最大公约数和最小公倍数
分数 7
作者 张彤彧
单位 浙江大学
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int a,b,t;
scanf("%d %d",&a,&b);
int m=a,n=b;
while(b!=0){
t=a%b;
a=b;
b=t;
}
cout<<a<<" "<<m*n/a;
return 0;
}
7-75 猴子吃桃问题
分数 6
作者 徐镜春
单位 浙江大学
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
输入格式:
输入在一行中给出正整数N(1<N≤10)。
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int a;
cin>>a;
int sum=1;
for(int i=1;i<a;i++){
sum+=1;
sum*=2;
}cout<<sum;
return 0;}
7-76 兔子繁衍问题
分数 5
作者 徐镜春
单位 浙江大学
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
//int aa[100000000];
int f(int x){
if(x==1||x==2)return 1;
else return f(x-1)+f(x-2);
}
int main(){
int a;
cin>>a;
/*aa[1]=1,aa[2]=1;
for(int i=3;;i++){
aa[i]=aa[i-1]+aa[i-2];
if(aa[i]>=a){cout<<i;break;}
}
if(a==1)cout<<"1";*/
for(int i=1;;i++){
if(f(i)>=a){ cout<<i;break;}
}
return 0;}
7-77 查找指定字符
分数 5
作者 颜晖
单位 浙江大学
本题要求编写程序,从给定字符串中查找某指定的字符。
输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。
输入样例1:
m
programming
输出样例1:
index = 7
输入样例2:
a
1234
输出样例2:
Not Found
/*#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
char a;
cin>>a;
getchar();
char s[100];
cin.getline(s,100);
//cin>>s;
char * x;
x=strchr(s,a);
if(x==NULL)cout<<"Not Found";
else cout<<"index = "<<x-s+1;
return 0;}*/
#include <stdio.h>
int main()
{
int i, index, count;
char a, ch, str[80];
scanf("%c\n", &a);
i=0;
index=-1;
count=0;
ch=getchar();
for(i=0; ch!='\n'; i++){
str[i]=ch;
count++;
ch=getchar();
}
for(i=0; i<count; i++)
if(a==str[i])
index=i;
if(index!=-1)
printf("index = %d", index);
else
printf("Not Found");
return 0;
}
7-78 字符串逆序
分数 5
作者 白洪欢
单位 浙江大学
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
输出格式:
在一行中输出逆序后的字符串。
输入样例:
Hello World!
输出样例:
!dlroW olleH
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
string s;
//char s[100];
getline(cin,s);
for(int i=s.length()-1;i>=0;i--){
cout<<s[i];
}
return 0;}
7-79 字符串转换成十进制整数
分数 5
作者 张彤彧
单位 浙江大学
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入格式:
输入在一行中给出一个以#结束的非空字符串。
输出格式:
在一行中输出转换后的十进制数。题目保证输出在长整型范围内。
输入样例:
±P-xf4±1!#
输出样例:
-3905
#此题用python
import re
# 16进制 0-9 A-F a-f
s = input()
ans = re.sub(r'[^0-9a-fA-F]', '', s)
if not ans:
ans = '0'
int_ans = int(ans, 16)
if -1 < s.find('-') < s.find(ans[0]):
int_ans = -int_ans
print(int_ans)
7-80 求矩阵各行元素之和
分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间
以空格分隔。
输出格式:
每行输出对应矩阵行元素之和。
输入样例:
3 2
6 3
1 -8
3 12
输出样例:
9
-7
15
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
int sum=0;
for(int i=0;i<m;i++){
sum=0;
for(int j=0;j<n;j++){
int x;
cin>>x;
sum+=x;
}
cout<<sum<<endl;
}
return 0;
}
7-81 统计大写辅音字母
分数 5
作者 C课程组
单位 浙江大学
英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出字符串中大写辅音字母的个数。
输入样例:
HELLO World!
输出样例:
4
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
char s[100];
cin.getline(s,100);
int sum=0;
for(int i=0;i<strlen(s);i++){
if(isupper(s[i])&&s[i]!='A'&&s[i]!='E'&&s[i]!='I'&&s[i]!='O'&&s[i]!='U')
sum++;
}
cout<<sum;
return 0;}
7-82 输出菱形图案
分数 5
作者 张高燕
单位 浙大城市学院
本题要求编写程序,输出指定的由“A”组成的菱形图案。
输入格式:
本题无输入
输出格式:
按照下列格式输出由“A”组成的菱形图案。
A
A A
A
php
7-83 计算分段函数[3]
分数 5
作者 颜晖
单位 浙大城市学院
本题目要求计算下列分段函数f(x)的值:
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
234
输出样例2:
f(234.0) = 234.0
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
double x;
cin>>x;
if(x==10)
cout<<"f(10.0) = 0.1";
else printf("f(%.1f) = %.1f",x,x);
return 0;}
7-84 求1到100的和
分数 4
作者 颜晖
单位 浙大城市学院
本题要求编写程序,计算表达式 1 + 2 + 3 + … + 100 的值。
输入格式:
本题无输入。
输出格式:
按照以下格式输出:
sum = 累加和
php
sum = 5050
7-85 计算存款利息
分数 4
作者 颜晖
单位 浙大城市学院
本题目要求计算存款利息,计算公式为interest=money×(1+rate)
year
−money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
输入格式:
输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
输出格式:
在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
输入样例:
1000 3 0.025
输出样例:
interest = 76.89
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
double m,y,r;
cin>>m>>y>>r;
double i=m*pow(1+r,y)-m;
printf("interest = %.2f",i);
return 0;}
7-86 求幂之和
分数 6
作者 颜晖
单位 浙大城市学院
本题要求编写程序,计算sum=2
1
+2
2
+2
3
+⋯+2
n
。可以调用pow函数求幂。
输入格式:
输入在一行中给出正整数n(≤10)。
输出格式:
按照格式“result = 计算结果”输出。
输入样例:
5
输出样例:
result = 62
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int x;
cin>>x;
double sum=0;
for(int i=1;i<=x;i++){
sum+=pow(2,i);
}
cout<<"result = "<<sum;
return 0;
}
7-87 计算个人所得税
分数 6
作者 沈睿
单位 浙江大学
假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:
当工资不超过1600时,税率为0;
当工资在区间(1600, 2500]时,税率为5%;
当工资在区间(2500, 3500]时,税率为10%;
当工资在区间(3500, 4500]时,税率为15%;
当工资超过4500时,税率为20%。
输入格式:
输入在一行中给出非负工资。
输出格式:
在一行输出个人所得税,精确到小数点后2位。
输入样例1:
1600
输出样例1:
0.00
输入样例2:
1601
输出样例2:
0.05
输入样例3:
3000
输出样例3:
140.00
输入样例4:
4000
输出样例4:
360.00
输入样例5:
5000
输出样例5:
680.00
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
double x,sum=0;
cin>>x;
if(x<=1600)cout<<"0.00";
else if(x<=2500)printf("%.2f",0.05*(x-1600));
else if(x<=3500)printf("%.2f",0.10*(x-1600));
else if(x<=4500)printf("%.2f",0.15*(x-1600));
else printf("%.2f",0.20*(x-1600));
return 0;}
7-88 输出三角形面积和周长
分数 6
作者 C课程组
单位 浙江大学
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=
s(s−a)(s−b)(s−c)
,其中s=(a+b+c)/2。
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照
area = 面积; perimeter = 周长
的格式输出,保留两位小数。否则,输出
These sides do not correspond to a valid triangle
输入样例1:
5 5 3
输出样例1:
area = 7.15; perimeter = 13.00
输入样例2:
1 4 1
输出样例2:
These sides do not correspond to a valid triangle
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int x,y,z;
cin>>x>>y>>z;
if(x+y<=z||z+x<=y||z+y<=x){
cout<<"These sides do not correspond to a valid triangle\n";
return 0;
}
double sum=0,zou=x+y+z,s=zou/2;
sum=sqrt(s*(s-x)*(s-y)*(s-z));
printf("area = %.2f; perimeter = %.2f",sum,zou);
return 0;}
7-89 三天打鱼两天晒网
分数 5
作者 C课程组
单位 浙江大学
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:
103
输出样例1:
Fishing in day 103
输入样例2:
34
输出样例2:
Drying in day 34
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int x;
cin>>x;
if(x%5<=3&&x%5!=0){
cout<<"Fishing in day "<<x;
}else cout<<"Drying in day "<<x;
return 0;}
7-90 求整数的位数及各位数字之和
分数 5
作者 C课程组
单位 浙江大学
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10
9
的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
321
输出样例:
3 6
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
long long x;
cin>>x;
int sum=0,num=0;
while(x){
sum+=x%10;
num++;
x/=10;
}
cout<<num<<" "<<sum;
return 0;}
7-91 输出三角形字符阵列
分数 6
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int x;
cin>> x;
if(x==1)cout<<"A ";
if(x==3){cout<<"A B C \n";
cout<<"D E \n";
cout<<"F ";}
if(x==6){cout<<"A B C D E F \n";
cout<<"G H I J K \n";
cout<<"L M N O \n";
cout<<"P Q R \n";
cout<<"S T \n";
cout<<"U ";}
return 0;}
7-92 简化的插入排序
分数 7
作者 C课程组
单位 浙江大学
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int x;
cin>>x;
set<int>a;
while(x--){
int d;
cin>>d;
a.insert(d);
}
int d;
cin>>d;
a.insert(d);
for(set<int>::iterator it =a.begin();it!=a.end();it++){
cout<<*it<<" ";
}
return 0;}
7-93 数字加密
分数 5
作者 陈建海
单位 浙江大学
输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。
输入格式:
输入在一行中给出一个四位的整数x,即要求被加密的数。
输出格式:
在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。
输入样例:
1257
输出样例:
The encrypted number is 4601
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int x;
cin>>x;
int a,b,c,d;
a=((x/1000)+9)%10;
b=((x/100)+9)%10;
c=((x/10)+9)%10;
d=((x%10)+9)%10;
cout<<"The encrypted number is "<<c<<d<<a<<b;
return 0;}
7-94 交换最小值和最大值
分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
#include <stdio.h>
int main()
{
int count,arr[12],brr[10],temp,max = 0,min = 0,max_index=0,min_index = 0;
scanf("%d",&count); //输入N的值
for(int i = 0; i < count;i++)
scanf("%d",&arr[i]);
/*最小N的情况*/
if(count == 1){
printf("%d ",arr[0]);
return 0;
}
/*只有两个数交换的情况*/
if(count == 2)
{
if(arr[0] > arr[1])
printf("%d %d ",arr[1],arr[0]);
else
printf("%d %d ",arr[0],arr[1]);
return 0;
}
/*循环两次的目的是为了解决 “sample等价,最大值出现在最前 ”的情况*/
for (int m = 0; m < 2; m++)
{
min = arr[0];
/*此循环的目的是找出最大值与最小值*/
for (int i = 0; i < count; i++)
{
/* 判断最大值 及 其数组下标 */
if(arr[i] >= max){
max = arr[i];
max_index = i;
}
/* 判断最小值 及 其数组下标 */
if(arr[i] <= min){
min = arr[i];
min_index = i;
}
}
/*将第一位与最小值交换*/
temp = arr[0];
arr[0] = arr[min_index];
arr[min_index] = temp;
/*将最后一位与最大值交换*/
temp = arr[count-1];
arr[count - 1] = arr[max_index];
arr[max_index] = temp;
}
/*输出数组*/
for(int i = 0;i <count;i++){
printf("%d ",arr[i]);
}
return 0;}
7-95 求整数序列中出现次数最多的数
分数 5
作者 张彤彧
单位 浙江大学
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int sum=0,num=1,t=1;
for(int i=0;i<n;i++){
if(a[i]==a[i+1])num++;
else num=1;
sum=max(sum,num);
}
t=sum-1;
for(int i=0;i<n;i++){
if(a[i]==a[i+1]){
t--;
}else{
t=sum-1;
}
if(t==0){
num=a[i];break;
}
}cout<<num<<" "<<sum;
return 0;}
7-96 求矩阵的局部极大值
分数 8
作者 徐镜春
单位 浙江大学
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5
#include<iostream>
using namespace std;
int main()
{
int n; int m;
int arr[20][20];
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) //(0 0) (0 1) (0 2)
//(1 0) (1 1) (1 2)
cin >> arr[i][j];
int flag = 0;
for (int i = 1; i < n - 1; i++)
{
for (int j = 1; j < m - 1; j++)
{
if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i - 1][j])
{
cout << arr[i][j] << " " << i+1 << " " << j+1 << endl;
flag = 1;
}
}
}
if (flag == 0)
cout << "None" <<" " << n << " " << m << endl;
system("pause");
}
7-97 字符串字母大小写转换
分数 3
作者 颜晖
单位 浙大城市学院
本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。
输出格式:
在一行中输出大小写转换后的结果字符串。
输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
char s;
s=getchar();
while(s!='#'){
if(isupper(s))s=s+32;
else if(islower(s))s=s-32;
cout<<s;
s=getchar();
}
return 0;}
7-98 输出数组元素
分数 4
作者 颜晖
单位 浙江大学
本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。
输入格式:
输入的第一行给出正整数n(1<n≤10)。随后一行给出n个整数,其间以空格分隔。
输出格式:
顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。
输入样例:
10
5 1 7 14 6 36 4 28 50 100
输出样例:
-4 6 7
-8 30 -32
24 22 50
#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
vector<int>a(n);
for(int i=0;i<n;i++){
cin>>a[i];
}
int x=1;
for(int i=0;i<n-2;i++){
cout<<a[i+1]-a[i];
if(x%3==0) cout<<"\n";
else cout<<" ";
x++;
}
cout<<a[n-1]-a[n-2];
return 0;
}
7-99 找最长的字符串
分数 6
作者 张泳
单位 浙大城市学院
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最长的字符串:
The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。
输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang
# 用python
#By yangbo 2020.07.12
n=int(input())
mx,num=0,""
for i in range(n):
s=input()
if len(s)>mx:
mx=len(s)
num=s
print("The longest is: %s"%num)
7-100 计算职工工资
分数 5
作者 C课程组
单位 浙江大学
给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。
输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
输入样例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
输出样例:
zhao 565.00
qian 430.00
zhou 630.00
#include<stdio.h>
#define N 1000
struct yuan
{
char name[11];
double z1;//如果这里用int型,则显示错误
double z2;
double z3;
double sum;
}ren[N];
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %lf %lf %lf",ren[i].name,&ren[i].z1,&ren[i].z2,&ren[i].z3);
ren[i].sum=ren[i].z1+ren[i].z2-ren[i].z3;
}
for(i=0;i<n;i++)
{
printf("%s %.2lf\n",ren[i].name,ren[i].sum);
}
return 0;
}