跳一跳
标题
跳一跳
类别
流程控制
时间限制
1 S
内存限制
256 Kb
问题描述
跳一跳是一款微信小游戏,游戏规则非常简单,只需玩家要从一个方块跳到下一个方块,如果未能成功跳到下一个方块则游戏结束。
计分规则如下:
1. 如果成功跳到下一个方块上,但未跳到方块中心,加1 分
2. 如果成功跳到下一个方块上,且刚好跳到方块中心,则第一次加2 分,此后连续跳到中心时每次递增2 分。也就是说,第一次跳到方块中心加2 分,连续第二次跳到方块中心加4 分,连续第三次跳到方块中心加6 分,…,以此类推。
3. 如果未能成功跳到方块上,加0 分,且游戏结束
现在给出玩家一局游戏的每次跳跃情况,请计算玩家最终得分。
输入说明
输入为若干个非零整数(整数个数小于1000 ),表示玩家每次的跳跃情况。整数之间用空格分隔,整数取值为0 ,1 ,2 。
0 表示未能成功跳到下一个方块上,
1 表示成功跳到下一个方块上但未跳到方块中心,
2 表示成功跳到下一个方块上,且刚好跳到方块中心。
输入的数据只有最后一个整数是0 ,其余均非零。
输出说明
输出一个整数表示该玩家的最终得分。
输入样例
1 1 2 1 2 2 2 0
输出样例
17
#include <stdio.h>
int main ( ) {
int num[ 100 ] ;
int i = 0 , sum = 0 ;
int count = 1 , flag = 0 ;
for ( i= 0 ; i< 100 ; i++ ) {
scanf ( "%d" , & num[ i] ) ;
if ( num[ i] == 0 ) {
break ;
} else if ( num[ i] == 1 ) {
sum+ = 1 ;
flag = 0 ;
count = 1 ;
} else if ( num[ i] == 2 ) {
if ( flag== 0 ) {
sum+ = 2 ;
flag = 1 ;
count++ ;
} else if ( flag == 1 ) {
sum = sum+ 2 * count;
count++ ;
}
}
}
printf ( "%d" , sum) ;
return 0 ;
}
完全平方数
标题
完全平方数
类别
基本计算
时间限制
1 S
内存限制
256 Kb
问题描述
若一个整数n能表示成某个整数m的平方的形式,则称这个数为完全平方数。写一个程序判断输入的整数是不是完全平方数。
输入说明
输入数据为一个整数n,0 <= n< 10000000 。
输出说明
如果n是完全平方数,则输出构成这个完全平方数的整数m,否则输出no。
输入样例
样例1 :
144
样例2 :
15
输出样例
样例1 输出:
12
样例2 输出:
no
`在这里插入代码片`
#include <stdio.h>
int main ( ) {
int n;
scanf ( "%d" , & n) ;
int i = 1 ;
for ( i= 1 ; i< n/ 2 ; i++ ) {
if ( n == i* i)
break ;
}
if ( i == n/ 2 ) {
printf ( "no" ) ;
} else printf ( "%d" , i) ;
return 0 ;
}
成绩分级2
标题
成绩分级
描述
给出一个百分制的成绩,要求输出成绩等级'A' , 'B' , 'C' , 'D' , 'E' 。90 分以上为'A' ,80 ~ 89 分为'B' ,70 ~ 79 分为'C' ,60 ~ 69 分为'D' ,60 分以下为'E' 。
时间限制
1
内存限制
10000
类别
1
输入说明
输入一个百分制成绩,浮点型,如78.5 。
输出说明
输出成绩和等级,成绩保留两位小数,如78.50 C
输入样例
78.5
输出样例
78.50 C
提示
格式输出% .2f % c
#include <stdio.h>
int main ( ) {
float score;
scanf ( "%f" , & score) ;
printf ( "%.2f " , score) ;
int t;
t = score/ 10 ;
switch ( t) {
case 10 :
case 9 : printf ( "A" ) ; break ;
case 8 : printf ( "B" ) ; break ;
case 7 : printf ( "C" ) ; break ;
case 6 : printf ( "D" ) ; break ;
default : printf ( "E" ) ; break ;
}
return 0 ;
}
日期计算
标题
日期计算
类别
流程控制
时间限制
1 S
内存限制
256 Kb
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2 月有29 天,且满足下面条件之一的是闰年:
1 ) 年份是4 的整数倍,而且不是100 的整数倍;
2 ) 年份是400 的整数倍
输入说明
输入包含两个整数y和d,y表示年份,年份在1900 到2018 之间(包含1900 和2018 )。 d表示这一年的第几天,d在1 至365 之间。
输出说明
在一行输出两个整数,分别表示答案的月份和日期。
输入样例
2015 80
输出样例
3 21
#include <stdio.h>
int main ( ) {
int year, day;
int sum = 0 ;
scanf ( "%d %d" , & year, & day) ;
int m[ 12 ] = { 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } ;
if ( ( year% 4 == 0 && year% 100 != 0 ) || year% 400 == 0 ) {
m[ 1 ] = 29 ;
}
for ( int i = 0 ; i< 12 ; i++ ) {
sum = sum + m[ i] ;
if ( sum == day) {
printf ( "%d %d" , i+ 1 , m[ i] ) ;
break ;
} else if ( sum > day) {
printf ( "%d %d" , i+ 1 , day- sum+ m[ i] ) ;
break ;
}
}
return 0 ;
}
平均数
标题
平均数
类别
流程控制
时间限制
1 S
内存限制
1000 Kb
问题描述
计算n个整数(x1, x2, x3. . . )的平均数,结果保留两位小数。
输入说明
第一行为整数n(1 <= n <= 100 ),接下来是n个整数( 0 <= x1, x2, x3. . . . <= 2 ^ 31 - 1 ) 。
输出说明
输出这n个整数的平均数,结果保留两位小数。
输入样例
5
2 3 1 4 5
输出样例
3.00
#include <stdio.h>
int main ( ) {
int n;
scanf ( "%d" , & n) ;
double num[ n] , sum = 0 ;
for ( int i = 0 ; i< n; i++ ) {
scanf ( "%lf" , & num[ i] ) ;
sum = sum+ num[ i] ;
}
printf ( "%.2lf" , sum/ n) ;
return 0 ;
}
整数比较1
Problem 1 整数比较1
描述:
编写程序,对于从键盘输入的2 个整数,先输出较大者的个位数字,然后输出较小者的平方值。
输入说明:
输入的两个整数之间以一个空格分隔。
输出说明:
在一行上输出两个整数,整数之间以一个空格分隔,最后换行。
输入样例
样例1 输入
29989 372
输出样例
样例1 输出
9 138384
#include <stdio.h>
int main ( ) {
int a, b;
scanf ( "%d %d" , & a, & b) ;
int max, min;
max = a>= b? a: b;
min = a<= b? a: b;
printf ( "%d %d" , max% 10 , min* min) ;
return 0 ;
}
整数比较2
Problem 3 整数比较3
描述:
从键盘输入四个整数,要求按由小到大的顺序输出。
输入说明:
输入四个整数,以空格间隔。
输出说明:
输出排序后的整数,以空格间隔。
输入样例
样例1 输入
- 99 9 99 - 9
输出样例
样例1 输出
- 99 - 9 9 99
#include <stdio.h>
int main ( ) {
int n[ 4 ] ;
int i, j;
for ( i = 0 ; i< 4 ; i++ ) {
scanf ( "%d" , & n[ i] ) ;
}
for ( i = 0 ; i< 3 ; i++ ) {
for ( j= i+ 1 ; j< 4 ; j++ ) {
if ( n[ j] < n[ i] ) {
int t;
t = n[ i] ;
n[ i] = n[ j] ;
n[ j] = t;
}
}
}
for ( i= 0 ; i< 4 ; i++ ) {
printf ( "%d " , n[ i] ) ;
}
return 0 ;
}
输出26个字母
Problem 1 输出26 个英文字母
描述:
编写一个程序,分别按正向和逆向输出小写字母。
输入说明:
无。
输出说明:
字母间以空格分隔,正向输出完换行,再逆向输出。
输入样例
无。
输出样例
无。
#include <stdio.h>
int main ( ) {
int i = 97 ;
for ( i= 97 ; i< 123 ; i++ ) {
printf ( "%c " , i) ;
}
printf ( "\n" ) ;
for ( i = 122 ; i> 96 ; i-- ) {
printf ( "%c " , i) ;
} return 0 ;
}
四位密码器
标题
四位密码器
描述
编制密码转换方式:大写字母-- > 小写字母,小写字母-- > 大写字母,数字-- > * ,其它符号-- > @。
时间限制
1
内存限制
10000
类别
1
输入说明
输入函数使用scanf,格式% c控制。
输出说明
输出密码转换后的结果。
输入样例
A2c&
输出样例
a* C@
提示
输入四位密码字符,如A2c&
#include <stdio.h>
int main ( ) {
char c[ 4 ] ;
for ( int i= 0 ; i< 4 ; i++ ) {
scanf ( "%c" , & c[ i] ) ;
if ( c[ i] >= 'a' && c[ i] <= 'z' ) {
printf ( "%c" , c[ i] - 32 ) ;
} else if ( c[ i] >= 'A' && c[ i] <= 'Z' ) {
printf ( "%c" , c[ i] + 32 ) ;
} else if ( c[ i] >= '0' && c[ i] <= '9' ) {
printf ( "*" ) ;
} else {
printf ( "@" ) ; }
}
return 0 ;
}
股票
5. 股票
题目描述:
小明热爱炒股,经过一番分析之后,他决定投入一笔资金买入一定数量的某只股票。
之后连续n天,他每天都关注这支股票并进行交易,但不会追加资金,即他只会用卖股票的钱买入股票。
现在给出他首次买入股票时的价格和数量,以及其后每天股票的价格和他的交易数量,
请计算n天之后他的资产(股票总值 + 现金)。
输入描述:
输入数据由若干行构成,第一行为三个正整数m,p,n。
m表示首次买入股票数量(0 < m< 10000 ),p表示首次买入价格( 0 < p<= 100 ) ,n表示之后进行股票交易的天数(0 < n< 50 )。
其后是n行数据,每行包括两个整数k和d,k表示当天交易数量(- 10000 < k< 10000 ),
正数表示买入,负数表示卖出;d表示当天股票价格( 0 < d<= 100 ) 。
输出描述:
输出一个整数表示n天后小明的资产(股票总值 + 现金)。
输入样例:
100 10 5
- 30 12
- 30 18
20 12
30 10
20 12
输出样例:
1440
#include <stdio.h>
int main ( ) {
int m, p, n;
int sum = 0 ;
scanf ( "%d %d %d" , & m, & p, & n) ;
int num[ n] [ 2 ] ;
int i = 0 , j = 0 ;
for ( i = 0 ; i< n; i++ ) {
for ( j = 0 ; j< 2 ; j++ ) {
scanf ( "%d" , & num[ i] [ j] ) ;
}
sum = sum + num[ i] [ 0 ] * num[ i] [ 1 ] ;
}
int fm = m;
for ( i= 0 ; i< n; i++ ) {
fm = fm + num[ i] [ 0 ] ;
}
int final;
final = fm* num[ n- 1 ] [ 1 ] - sum;
printf ( "%d" , final) ;
return 0 ;
}
阶乘之和
标题
阶乘之和
描述
输入自然数N(N< 10 ),采用双层for 循环结构,计算N!和ΣN! ,并输出结果。
时间限制
1
内存限制
10000
类别
1
输入说明
输入自然数N(< 10 ),如7
输出说明
输出N、N! 、ΣN!
输入样例
7
输出样例
7 5040 5913
提示
采用双层for 循环结构,不大于10 的自然数的阶乘之和
#include <stdio.h>
int main ( ) {
int n;
scanf ( "%d" , & n) ;
printf ( "%d " , n) ;
int i = 0 , m = 1 ;
int sum = 0 ;
for ( i= 1 ; i<= n; i++ ) {
m = m* i;
sum = sum + m;
}
printf ( "%d %d" , m, sum) ;
return 0 ;
}
交错序列前N 项之和
题目描述:编写程序,计算交错序列1 - 2 / 3 + 3 / 5 - 4 / 7 + 5 / 9 - 6 / 11 + …的前N项之和。
输入格式:输入一个正整数
输出格式:输出计算结果,结果保留三位小数
示例:
输入:5
输出:0.917
#include <stdio.h>
int main ( ) {
int n;
float sum = 0 , t;
scanf ( "%d" , & n) ;
float num = 1 , den = 1 , flag = 1 ;
for ( num= 1 ; num<= n; num++ , den+ = 2 ) {
t = flag* num/ den;
sum+ = t;
flag = - flag;
}
printf ( "%.3f" , sum) ;
return 0 ;
}
求奇数之和
题目描述:计算给定一组整数中奇数的和,直到遇到0 时结束。
输入格式:共一行,输入一组整数,以空格分隔
输出格式:输出一个整数
示例:
输入:1 2 3 4 5 0 6 7
输出:9
#include <stdio.h>
int main ( ) {
int num[ 100 ] ;
int sum = 0 ;
for ( int i = 0 ; i< 100 ; i++ ) {
scanf ( "%d" , & num[ i] ) ;
if ( num[ i] == 0 ) {
break ;
} else if ( num[ i] % 2 == 1 ) {
sum = sum+ num[ i] ;
}
}
printf ( "%d" , sum) ;
return 0 ;
}
英文表示数字
题目描述:输入一个0 ~ 9 的一位整数,输出其对应的英文单词。要求用switch 结构完成。
示例:
输入:0
输出:zero
输入:8
输出:eight
#include <stdio.h>
int main ( ) {
int n;
scanf ( "%d" , & n) ;
switch ( n) {
case 0 : printf ( "zero" ) ;
break ;
case 1 :
printf ( "one" ) ; break ;
case 2 :
printf ( "two" ) ; break ;
case 3 :
printf ( "three" ) ; break ;
case 4 :
printf ( "four" ) ; break ;
case 5 :
printf ( "five" ) ; break ;
case 6 :
printf ( "six" ) ; break ;
case 7 :
printf ( "seven" ) ; break ;
case 8 :
printf ( "eight" ) ; break ;
case 9 :
printf ( "nine" ) ; break ;
} ;
return 0 ;
}
阶梯电价计算
标题
阶梯电价计算
描述
电价分三个档次,一档:0 ~ 110 ( 含110 ) 度电,每度电0.5 元;二挡:110 ~ 210 ( 含210 ) 度电,超出110 部分每度电0.55 元;三挡:超过210 度电,超出210 部分每度电0.70 元,给出一个家庭一月用电量,请计算出应缴的电费。
时间限制
1
内存限制
10000
类别
1
输入说明
输入一月用电量,正实数,如70.5 。
输出说明
输出应缴电费、档次和该档超额使用的电量数据,档次使用字母A、B和C表示,分别对应一、二和三档,电量和电费使用浮点型,结果四舍五入,保留小数点后两位小数
输入样例
70.5
输出样例
35.25 A 0.00
提示
格式输出% .2f % c % .2f
#include <stdio.h>
int main ( ) {
float u, fee;
scanf ( "%f" , & u) ;
if ( u<= 110 ) {
fee = 0.5 * u;
printf ( "%.2f A 0.00" , fee) ;
} else if ( u> 110 && u<= 210 ) {
fee = 110 * 0.5 + ( u- 110 ) * 0.55 ; 0 ;
printf ( "%.2f B %.2f" , fee, u- 110 ) ;
} else {
fee = 110 * 0.5 + 100 * 0.55 + ( u- 210 ) * 0.70 ;
printf ( "%.2f C %.2f" , fee, u- 110 ) ;
}
return 0 ;
}
循环队列
假设以数组sequ[ m] 存放循环队列的元素,同时设变量rear和quelen分别指示循环队列中队尾元素的位置和内含元素的个数。试给出判别此循环队列的队满条件,并写出相应的入队列和出队列的算法(在出队算法中要返回队头元素)。
输入样例:
5
123456
输出样例:
1234
1
解释:
输入说明:
1. 输入队列长度m:5 。
2. 向队列逐个放入元素:123456 。
输出说明:
1. 输出队列里所有元素:1234 (使用不另设标志的队满判别方式,使得长度为5 的队列最多只能放4 个元素)。
2. 将队头出队,返回,输出:1 。
在这里插入代码片
分段函数1
题目描述: 编写程序计算分段函数f ( x) 的值。
x^ 1 / 2 ( x>= 0 )
f ( x) =
( x+ 1 ) ^ 2 + 2 x+ 1 / x ( x< 0 )
输入格式:输入实数x的值
输出格式:输出f ( x) 的值,结果保留两位小数。
示例:
输入:4
输出:2.00
#include <stdio.h>
#include <math.h>
int main ( ) {
float x, f;
scanf ( "%f" , & x) ;
if ( x>= 0 ) {
f = sqrt ( x) ;
} else if ( x< 0 ) {
f = ( x+ 1 ) * ( x+ 1 ) + 2 * x+ 1 / x;
}
printf ( "%.2f" , f) ;
return 0 ;
}
分段函数2
题目:分段函数
时间限制:1 S
内存限制:10000 Kb
问题描述:
有一个函数:
x ( x< 1 )
y = 2 x- 1 ( 1 <= x< 10 )
3 x- 11 ( x>= 10 )
编程输出其函数值。
输入说明:
输入自变量x(输入必须为整数)
输出对应的函数值。
输入样例:
3
输出样例:
5
#include <stdio.h>
int main ( ) {
int x, y;
scanf ( "%d" , & x) ;
if ( x< 1 ) {
y = x;
} else if ( x>= 1 && x< 10 ) {
y= 2 * x- 1 ;
} else y= 3 * x- 11 ;
printf ( "%d" , y) ;
return 0 ;
}
利润计算
题目:利润计算
时间限制:1 S
内存限制:10000 Kb
问题描述:
企业发放的奖金根据利润提成。利润I低于或者等于100000 元的,奖金可提10 % 润高于100000 元低于200000 元时(100000 <= I<= 200000 ) ,低于100000 元的部分按照10 % 提成,高于100000 元的部分,可提成7.5 % ;
(200000 <= I<= 400000 ) 时,低于200000 元的部分仍按上述办法提成(下同)。高于200000 元的部分按5 % 提成;
(200000 <= I<= 600000 ) 元时,高于400000 元的部分按3 % 提成;时,高于600000 元的部分按照1.5 % 提成;I> 1000000 时,超过1000000 元的部分按1 % 提成。
从键盘输入当月利润I,求应发奖金总数。
输入说明:
从键盘输入当月利润I。
输出说明:
输出当月应发的奖金总数,结果保留两位小数。
输入样例:
150000
输出样例:
13750.00
#include <stdio.h>
int main ( ) {
float n, bon;
scanf ( "%f" , & n) ;
if ( n<= 100000 ) {
bon = n* 0.1 ;
} else if ( n>= 100000 && n<= 200000 ) {
bon = 100000 * 0.1 + ( n- 100000 ) * 0.075 ;
} else if ( n>= 200000 && n<= 400000 ) {
bon= 100000 * 0.1 + 100000 + 0.075 + ( n- 200000 ) * 0.05 ;
} else if ( n>= 400000 && n<= 600000 ) {
bon= 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + ( n- 400000 ) * 0.03 ;
} else if ( n>= 600000 && n<= 1000000 ) {
bon= 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + ( n- 600000 ) * 0.015 ; }
else if ( n>= 1000000 ) {
bon= 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + ( n- 1000000 ) * 0.01 ; }
printf ( "%.2f" , bon) ;
return 0 ;
}