欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

class03 mfy

时间:2024-05-11 13:36 作者:admin 点击:
if结构 同一个问题,尽量写成一整坨 switch(值){ case 值1: case 值2: case 值3: default: } 匹配到符合条件的值后,开始执行接下来的【所有】语句,直到运行结束或遇到break break通常与switch语句

if结构

同一个问题,尽量写成一整坨

switch(值){

case 值1:

case 值2:

case 值3:

default:

}

匹配到符合条件的值后,开始执行接下来的【所有】语句,直到运行结束或遇到break

break通常与switch语句搭配使用,但不是必须的

switch执行的效率,远高于if(if 爬楼梯 switch 坐电梯)

if使用没有限制,switch必须使用固定的值,或有限的可表示范围

while结构

与for结构可以任意替换,没有区别

循环次数:0~无数次

在不确定具体循环次数的情况下,使用while更好

for结构

与while结构可以任意替换,没有区别

循环次数:0~无数次

在确定循环次数或有具体范围的情况下,用for更好

do{

代码坨

}while(条件);

先执行一次代码坨,再根据条件判断重复还是结束

与while和for不能任意替换

循环次数:1~无数次

在正常情况下,不用

break 跳出结构(循环和switch)

continue 从新开始循环(仅限循环)

所有结构可以相互嵌套形成一整坨

累加问题

(1、范围,2、初始值 0 ,3、累加项 +相关)

已知:s=1+2+3+ ... n

输入n输出s

int s=0;

for(int i=1;i<=n;i++){

s+=i;

}

cout<<s;

已知:s=1/1+1/2+1/3+ ... 1/n

输入n输出s

double s=0;

for(int i=1;i<=n;i++){

s+=1.0/i;

}

cout<<s;

已知:s=1+2+3+ ... n

输入k,输出n=?使s>k

int i=1,n;

int s=0;

while(1){

s+=i;

if(s>k){

n=i;

break;

}

}

cout<<n;

累乘问题

(1、范围,2、初始值 1 ,3、累乘项 *相关)

具体变化同上累加

小青蛙喜欢游泳,最开始蹬一次腿儿2.0米,

后面越游越累,后面的每次是前一次的0.98倍

已知目的地距离当前位置x米远,蹬几次可以游到目的地

输入x,输出次数

s=2.0+2.0*0.98+2.0*0.98*0.98+2.0*0.98*0.98*0.98

累加项:2.0*k个0.98相乘

double s=0;

double i=2.0;

int k=0,n;

while(1){

s+=i*pow(0.98,k);

k++;

if(s>=x){

n=k;

break;

}

}

cout<<n;

double s=0;

double i=2.0;

int k=0,n;

while(1){

s+=i;

i*=0.98;

k++;

if(s>=x){

n=k;

break;

}

}

cout<<n;

已知图书编码是一个13位数字

将图书编码中的前12位里的奇数位*-1,偶数位*3,

将各个位的结果相加得到和

将和mod 10,得到的结果如果与第13位相同,则是正版书,否则是盗版

输入图书编码,输出正版或盗版

1111111111111

1*-1+1*3+1*-1+1*3+1*-1+1*3+1*-1+1*3+1*-1+1*3+1*-1+1*3=12

12%10=2

2 1 -> 盗版

long long a;

int yz=a%10;

a/=10;

int s=0;

int k=3;

while(1){

s+=a%10*k;

a/=10;

if(k==3) k=-1;

else k=3;

if(a<=0) break;

}

if(s%10==yz) ...

else ...


数字拆分的过程中,无论数字多长(整数类型范围内)

查看取余或整除中1后边的0的个数,0的数量,决定了保留或去掉的位数

123456789

1234

/100000%10

456789

%1000000/100000

%保留

/去掉

循环数字拆分,从后往前

int a;

while(a){

cout<<a%10;

a/=10;

}


1094

int s=0;

for(int i=1;i<=n;i++){

if(i%7==0) continue;

bool f=false;

int m=i;

while(m){

if(m%10==7){

f=true;

break;

}

m/=10;

}

if(f) continue;

s+=i*i;

}

cout<<s;

int s=0;

for(int i=1;i<=n;i++){

string str=to_string(i);

if(i%7==0||str.find('7')<str.size()) continue;

s+=i*i;

}

cout<<s;

//数字拼接 1089

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (1)
    100%