一级要能够利用程序解决比较简单的问题:
语法要掌握输入输出(如小数)、基本数据类型(如int/double/char/bool)、变量定义和使用、选择结构、数学运算(如模运算)、关系运算和逻辑运算、循环、简单的嵌套循环的使用。
简单的算法技巧要掌握打擂台求最值、利用模运算拆数、重新合并数字、简单的穷举(枚举)、试除法。
特别注意:全局变量和局部变量的初始化特点不同。
输出a÷b×c的值
依次输入数字a、b、c,数字之间以空格分隔。将计算结果保留6位小数输出。
#include<iostream>
#include<iomanip> //函数库名字,必须记住
using namespace std;
int main(){
double a,b,c; //结果是小数,可将变量也定义为double类型
cin>>a>>b>>c;
cout<<setprecision(6)<<fixed<<a/b*c<<endl; //保留小数,必须记住
}
字符判断
输入一个字符,如果该字符是大、小写字母或者数字,输出YES, 否则输出NO。
#include<iostream>
using namespace std;
int main(){
char n; //输入一个字符,变量定义时,注意数据类型要准确
cin>>n;
//字符比较,与&& 或|| 的使用,与的优先级更高,可省略与的括号
if((n>='A'&& n<='Z') || (n>='a'&&n<='z') || (n>='0'&&n<='9')){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
return 0;
}
统计数的个数
给定一个数字的序列S,以及一个区间【L, R】,求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。
#include<iostream>
using namespace std;
int main(){
int n,L,R,tot=0; //tot是计数变量,初始化为0
cin>>n>>L>>R;
for(int i=1;i<=n;i++){ //循环输入x,对每个x进行判断
int x;
cin>>x;
if(x>=L&&x<=R){ //对于区间[L, R]之间的数字,进行计数
tot++;
}
}
cout<<tot<<endl;
return 0;
}
数1的个数
给定一个十进制正整数n(1≤n≤10000),写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。 例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5个“1”。
#include<iostream>
using namespace std;
int main (){
int n,t=0;
cin>>n;
for(int i=1;i<=n;i++){ //看每个i里面有几个1,累加
int x=i; //不能直接去 处理i ,用x
while(x>0){ //这一段代码,循环处理x的每一位
if(x%10==1) t++; //处理个位
x/=10; //去掉个位
}
}
cout<<t<<endl;
return 0;
}
苹果和虫子
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
解法一:
#include<iostream>
using namespace std;
int n,x,y,c; //c表示已经吃了多少个
int main(){
cin>>n>>x>>y;
if(y%x==0) c=y/x; //正好吃了整数个
else c=y/x+1; //如果不是吃整数个,那么就多算1个(被虫子啃烂了)
if(c>n){ //吃掉的 比 总数n 还多,结果不能为负数,就输出0
cout<<0;
}else{ //否则,剩下的苹果数量是n-c
cout<<n-c;
}
return 0;
}
解法二:
#include <iostream>
#include <cmath> //数学函数
using namespace std;
int main (){
int n,x,y;
cin>>n>>x>>y;
int eat=ceil(y*1.0/x); //ceil向上取整
if(n-eat<0){ //考虑吃光了的特殊情况
cout<<0<<endl;
}else{
cout<<n-eat<<endl;
}
return 0;
}
最大质因子
质因子是指能整除给定正整数的质数。而最大质因子是指一个整数的所有质数因子中最大的那个。
比如30的质数因子有2、3、5,所有它的最大质因子是5。
比如17的质数因子只有17,所以它的最大质因子是17。
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=n;i>=2;i--){ //数字从大往小去判断
if(n%i==0){ //余数为0,则i是因子
int tot=0; //针对每个i,计数变量tot都要初始化为0
for(int j=1;j<=i;j++){ //判断i有多少个因子
if(i%j==0){
tot++;
}
}
if(tot==2){ //如果i恰好有两个因子,则i是最大质因子
cout<<i;
return 0; //得到结果,则结束程序
}
}
}
return 0;
}
解法二:将判断质数的逻辑抽象成函数:
#include<iostream>
using namespace std;
int n;
bool f(int x){//判断x是否是质数,是返回true,否返回false
for(int i=2;i<=x-1;i++){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
cin>>n;
for(int i=n;i>=2;i--){ //从大到小枚举,从n开始
if(f(i) && n%i==0){ //是质数,且是因子
cout<<i;
return 0;
}
}
return 0;
}