当前位置: 首页 > news >正文

中山市做网站公司如何做网页推广

中山市做网站公司,如何做网页推广,如何用本机电脑做网站服务器吗,做360网站官网还是百度知道片头 哈喽!小伙伴们,大家好~,今天我们来学习蓝桥杯基础篇(三),继续练习相关习题,准备好了吗?我们开始啦~ 一、while循环 可以简单理解为循环版的if语句。if语句是判断1次&#xff0…

片头

哈喽!小伙伴们,大家好~,今天我们来学习蓝桥杯基础篇(三),继续练习相关习题,准备好了吗?我们开始啦~


一、while循环

   可以简单理解为循环版的if语句。if语句是判断1次,如果条件成立,则执行后面的语句;while是每次判断,如果成立,则执行循环体中的语句,否则停止。

int main() {int i = 0;while (i < 10) {cout << i << endl;i++;}return 0;
}
题目1: 求1~100中所有数的立方和
int main() {int sum = 0 , sum2 = 0;int i = 1;while (i <= 100) {sum1 += i * i * i;i++;}cout << "1~100中所有数的立方和为: " << sum << endl;return 0;
}
题目2:求斐波那契数列的第n项。f(1)=1,f(2)=1,f(3)=2,f(4)=3,f(n)=f(n-1)+f(n-2)

首先,我们来观察斐波那契数列,规律是:后一个数=前2个数相加

f(1)=1,f(2)=1

f(3)=f(1)+f(2)

f(4)=f(2)+f(3)

f(5)=f(3)+f(4)

.....

f(n)=f(n-2)+f(n-1)

为此,我们可以列出一张表,表示 i,a,b的关系

iab
0f(1)f(2)
1f(2)f(3)
2f(3)f(4)
3f(4)f(5)
4f(5)f(6)
5f(6)f(7)
.........
n-3f(n-2)f(n-1)
n-2f(n-1)f(n)
n-1f(n)f(n+1)

通过这张表,我们可以看到,i的范围在0~n-2,采用while循环

//求斐波拉契数列的第n项,
//f(1)=1,f(2)=1,f(3)=2,
//f(4)=3,f(5)=5,f(6)=8,f(7)=13,f(8)=21,f(9)=34,f(10)=55//f(1)=1,f(2)=1
//f(3)=f(1)+f(2),
//f(4)=f(2)+f(3),
//f(5)=f(3)+f(4),
//...
//f(n)=f(n-2)+f(n-1)//  i    a       b
//  0   f(1)    f(2)
//  1   f(2)    f(3)
//  2   f(3)    f(4)
//  3   f(4)    f(5)
//  4   f(5)    f(6)
//  5   f(6)    f(7)
//  6   f(7)    f(8)
//...
// n-3  f(n-2)  f(n-1)
// n-2  f(n-1)  f(n)
// n-1  f(n)    f(n+1)//当i=n-1时,应该退出循环
//i的取值范围在0~n-2int main() {int i = 0;int n;cin >> n;int a = 1;int b = 1;while (i < n - 1) {int c = a + b;a = b;b = c;i++;}cout << a << endl;return 0;
}

死循环:循环永久执行,无法结束。我们要避免写出死循环。

//死循环: 循环永久执行,无法结束。我们要避免写出死循环
int main4() {int x = 1;while (x == 1) puts("!");return 0;
}

二、do-while循环

do-while循环不常用。do-while语句与while语句非常相似。唯一的区别:do-while语句限制性循环体后检查条件。不管条件的值如何,我们都要至少执行1次循环。

int main() {int x = 1;while (x < 1) {cout << "x!" << endl;x++;}int y = 1;do {cout << "y!" << endl;} while (y < 1);return 0;
}

输出结果:

y!

再来举一个例子:

int main() {int r = 0;int j = 1;while (j <= 10) {r += j;j++;}cout << r << endl;int s = 0;int i = 1;do {s += i;i++;} while (i <= 10);cout << s << endl;return 0;
}

 可以看到,在控制台中显示的结果相同,均为50


三、for循环

基本思想:把控制循环次数的变量从循环体中剥离

for(init-statement ; condition ; expression)

{

          statement

}

init-statement 可以是声明语句、表达式、空语句,一般用来初始化循环变量;

condition 是条件表达式,和 while 中的条件表达式作用一样;可以为空,空语句表示true

expression 一般负责修改循环变量,可以为空

例题1:打印0~9数字
int main() {for (int i = 0; i < 10; i++) {cout << i << endl;}return 0;
}
例题2:求1~100中所有数的立方和
int main() {int sum = 0;for (int j = 1; j <= 100; j++) {sum += j * j * j;}cout << "1~100中所有数的立方和为: " << sum << endl;return 0;
}
例题3:求斐波那契数列的第n项。f(1)=1,f(2)=1,f(3)=2,f(4)=3,f(n)=f(n-1)+f(n-2)
//使用for循环实现斐波那契数列
int main() {int a = 1;int b = 1;int n;cin >> n;for (int i = 0; i < n - 1; i++) {int c = a + b;a = b;b = c;}cout << a << endl;return 0;
}

此外,init-statement 可以定义多个变量,expression 也可以修改多个变量

例题4:求 1*10 + 2*9 + 3*8 + 4*7 + 5*6 
int main() {int sum = 0;int i = 1, j = 10;for (i = 1, j = 10; i < j; i++, j--) {cout << i << "*" << j << endl;sum += i * j;}cout << sum << endl;return 0;
}

四、跳转语句

1. break

可以提前从循环中退出,一般与if语句搭配。

例题5:判断一个大于1的数是否为质数(质数:只能被1和自己整除的数)
int main() {int num;cin >> num;bool flag = 1; //假设该数为质数for (int i = 2; i < num; i++) {if (num % i == 0) {flag = 0;break;}}if (flag == 1) {cout << "这个数为质数" << endl;}else {cout << "这个数不是质数" << endl;}return 0;
}
2. continue

可以直接跳到当前循环体的结尾。作用和if语句类似。

例题6:求1~100中所有偶数的和
int main() {int i = 1;int sum = 0;for (i = 1; i <= 100; i++) {if (i % 2 == 1)continue;sum += i;}cout << sum << endl;return 0;
}

五、多层循环

//多层循环
int main() {//外层循环控制行数//内层循环控制列数for (int i = 0, k = 1; i < 10; i++) {for (int j = 0; j < 10; j++, k++){cout << k << " ";}cout << endl;}return 0;
}

结果如下:

 我们还可以将代码优化一下:

int main() {int n;cin >> n;for (int i = 1, k = 1; i <= n; i++) {for (int j = 1; j <= n; j++, k++) {printf("%-5d ", k);        //左对齐//printf("%5d ", k);	   //右对齐//cout << k << " ";}cout << endl;}return 0;
}

 例题7:打印1~100中的所有质数,并计算质数的数量
//练习: 打印1~100中所有的质数
int main() {int num = 0;for (int i = 1; i <= 100; i++) {bool flag = 1;  //假设此时的i为质数for (int j = 2; j < i; j++) {if (i % j == 0) {flag = 0;break;}}if (flag == 1) {cout << i << endl;num++;}}cout << "1~100中所有的质数有" << num << "个" << endl;return 0;
}

 例题8:打印正三角
     *************************

分析这类题型,我们需要定义3个变量 i,j,k,分别表示行数,空格,以及"*"

比如,我输入n=5,外层循环打印5行,i的取值范围1~n;

接下来观察空格的数量变化:

第1层,空格的数量为4;

第2层,空格的数量为3;

第3层,空格的数量为2;

第4层,空格的数量为1;

第5层,没有打印空格。

通过以上分析,我们得知,空格的数量为 n-i

再来观察"*"的数量变化:

第1层,打印1个"*";

第2层,打印3个"*";

第3层,打印5个"*";

第4层,打印7个"*";

第5层,打印9个"*"。

通过以上分析,我们得知,”*“的数量为 2*i-1

代码如下:

int main() {int n;cin >> n;//外层控制行数for (int i = 1; i <= n  ; i++) {//内层循环1控制空格数量for (int j = 1; j <= n-i; j++) {printf(" ");}//内层循环2控制"*"数量for (int k = 1; k <= 2*i-1; k++) {printf("*");}cout << endl;}return 0;
}
例题9:打印倒三角

 *********
  *******
   *****
    ***
     *

和上一道题的做法类似,我们依然定义3个变量 i,j,k,分别表示行数,空格,"*"的数量

比如,我输入n=5,则打印5行,i 的取值为 1~n

接下来观察空格的数量,

第1层,没有空格,

第2层,1个空格,

第3层,2个空格,

第4层,3个空格,

第5层,4个空格,

通过上述分析,我们得知,空格的数量为 i-1

再来观察"*"的数量,

第1层,9颗"*",

第2层,7颗"*",

第3层,5颗"*",

第4层,3颗"*",

第5层,1颗"*",

通过上述分析,我们得知,"*"的数量为 2*(n-i)+1

 代码如下:

int main() {int n;printf("请输入行号: ");scanf("%d", &n);//外层循环控制行数for (int i = 1; i <= n; i++) {//内层循环1控制空格数量for (int j = 1; j <= i - 1; j++) {printf(" ");}//内层循环2控制"*"数量for (int k = 1; k <= 2 * (n - i) + 1; k++) {printf("*");}cout << endl;}return 0;
}
例题10:输入一个n,打印n阶菱形,n为奇数

 n = 9 的结果
     *
    ***
   *****
  *******
 *********
  *******
   *****
    ***
     *

方法一:

我们可以将这个菱形,拆成2个三角形,正三角和倒三角,用for循环分别输出行数i,空格j的数量,"*"号的数量k

打印正三角时,当 n==9 时,只有5行,i 的取值范围 1 ~ n/2+1,空格的取值范围 n/2+1 - i,“*"号的取值范围 2*i-1

打印倒三角时,当 n==9 时,只有4行,i 的取值范围 1 ~ n/2,空格的取值范围为 i ,”*"号的取值范围 [2*(n/2+i)-1]-2*i

代码如下:

//方法一: 可以打印出菱形,但是不推荐!!!
int main19() {int n;		//代表行数cin >> n;int i, j, k;//正三角for (i = 1; i <= n/2 + 1; i++) {for (j = 1; j <= n/2+1 - i; j++) {printf(" ");}for (k = 1; k <= 2 * i - 1; k++) {printf("*");}cout << endl;}//倒三角for (i = 1; i <= n/2 ; i++) {for (j = 1; j <= i; j++) {printf(" ");}for (k = 1; k <= (2*(n/2+1)-1)-2*i ; k++) {printf("*");}cout << endl;}return 0;
}

方法二:采用曼哈顿距离

代码如下:

//方法二: 运用曼哈顿距离
int main() {int n;cin >> n;//构造一个 n×n 的正方形//计算每个方格到中心原点的距离//如果距离<=n/2 , 都是"*"//如果距离>n/2  , 为空格//(cx,cy)表示中心原点int cx = n / 2;int cy = n / 2;for (int i = 0; i <= n-1; i++) {for (int j = 0; j <= n-1; j++) {if (abs(i - cx) + abs(j - cy) <= n / 2) {printf("*");}else {printf(" ");}}cout << endl;}return 0;
}
例题11:输入一个n,打印n阶空心菱形,n为奇数

 n = 9 的结果
     *
    * *
   *   *
  *     *
 *       *
  *     *
   *   *
    * *
     *

空心菱形,顾名思义,和实心菱形相比,只有外围需要打印"*",内部都是空格

代码如下:

int main() {int n;cin >> n;//构造一个 n×n的正方形//计算每个方格到中心原点的距离//如果距离<=n/2 , 都是"*"//如果距离>n/2  , 为空格//(cx,cy)表示中心原点int cx = n / 2;int cy = n / 2;for (int i = 0; i <= n - 1; i++) {for (int j = 0; j <= n - 1; j++) {if (abs(i - cx) + abs(j - cy) == n / 2) {printf("*");}else {printf(" ");}}cout << endl;}return 0;
}

六、习题

第1题  偶数

输出1~100之间(包括1和100)的全部偶数

代码如下:

int main() {int n;cin >> n;for (int i = 1; i <= n; i += 2) {cout << i << endl;}return 0;
}

第2题  奇数

输入一个整数x,输出1到x之间(包括1和x)的全部奇数

代码如下:

int main() {int n;cin >> n;for (int i = 1; i <= n; i += 2) {cout << i << endl;}return 0;
}

第3题  正数

输入6个数字,它们要么是正数,要么是负数,统计并输出正数的个数,6个数字,每个占一行,输出格式为"x positive numbers",其中x为正数的个数

代码如下:

int main() {int num = 0;double x;for (int i = 0; i <= 5; i++) {cin >> x;if (x > 0) {num++;}}cout << num << " positive numbers" << endl;return 0;
}

另外,我们还可以使用数组来解决

int main() {int num = 0;int a[6];for (int i = 0; i <= 5; i++) {cin >> a[i];if (a[i] > 0) {num++;}}cout << num << " positive numbers" << endl;return 0;
}

第4题  连续奇数的和1

给定2个整数x和y,输出在它们之间(不包括x和y)的所有奇数的和,第一行输入x,第二行输入y,输出一个整数,表示所有满足条件的奇数的和

 代码如下:

void swap(int& a, int& b) {int temp = a;a = b;b = temp;
}int main() {int x, y;cin >> x >> y;if (x > y) swap(x, y);int sum = 0;for (int i = x + 1; i < y; i++) {if (i % 2 == 0)continue;sum += i;}cout << "所有满足条件的奇数的和为:"<<sum << endl;return 0;
}

第5题  最大数和它的位置

给定100个数,请你找出其中最大的数字,以及它的输入位置(位置从1开始),输入共100行,每行包含1个整数,第一行输出最大的数字,第二行输出该数字的输入位置

我们采用擂台法解决此类问题:

int main() {int a[110];for (int i = 0; i <= 99; i++) {cin >> a[i];}int max = a[0];int max_i = 0;for (int j = 1; j <= 99; j++) {if (a[j] > max) {max = a[j];max_i = j;}}cout << "最大的数字为: " << max << endl;cout << "该数字的输入位置为: " << max_i + 1 << endl;return 0;
}

 还可以进一步简化:

int main() {int a[110];int max = 0;    //这里max赋值为0,方便和后面的数进行比较int max_i;for (int i = 0; i <= 99; i++) {cin >> a[i];if (a[i] > max) {max = a[i];max_i = i;}}cout << "最大的数字为: " << max << endl;cout << "该数字的输入位置为: " << max_i + 1 << endl;return 0;
}

第6题  递增序列

代码如下:

int main() {int x;while (true) {cin >> x;if (x == 0) break;for (int i = 1; i <= x; i++) {cout << i << " ";}cout << endl;}return 0;
}

片尾

今天我们学习了C++蓝桥杯基础篇(三),希望这篇文章对友友们有所帮助!!!

点赞收藏加关注!!!

谢谢大家!!!

http://www.shuangfujiaoyu.com/news/34092.html

相关文章:

  • 珠海网站设计网络优化东莞网站建设平台
  • 网站文件命名有什么引流客源的软件
  • 莱州免费发布信息的网站平台品牌宣传文案范文
  • 如何建立一个网站的数据库文件域名注册服务网站查询
  • 2017做网站挣钱吗国内优秀个人网站欣赏
  • wordpress编辑器富文本上海seo优化公司
  • 携程的网站建设嘉兴网站建设方案优化
  • 什么是二级域名网站企业推广方式
  • wordpress 域名授权aso应用优化
  • wordpress 免插件 cdnseo咨询河北
  • wordpress注入工具宁波seo网站
  • 做汽车导航仪在什么网站找客户查看别人网站的访问量
  • 完成门户网站建设百度推广登录首页官网
  • 网站建设包括哪些部分德国搜索引擎
  • 聂教练做0网站产品市场营销策划方案
  • php做电商网站有那几个模块seo领导屋
  • 成都营销型网站公司电话百度竞价排名背后的伦理问题
  • 深圳汽车网站建设百度一下首页百度
  • 织梦做网站也是模板吗好看的web网页
  • 建网站需要多长时间杭州余杭区抖音seo质量高
  • wordpress怎么改搜索广告优化师适合女生吗
  • 企业做网站的发票怎样入账什么是交换链接
  • 申请域名后怎么建设网站宁德市中医院
  • 做公司+网站建设哪里有专业的培训机构
  • 网站被k了怎么做上海百度公司地址
  • 东莞网站建设-搜盟网内存优化大师
  • 基础建设的网站有哪些内容今日重大新闻
  • 建设银行网站是多少钱广州百度seo公司
  • 政府网站建设教程微信营销方式
  • 杭州网站建设 网络服务搜索引擎营销的五大特点