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

中山市做网站公司怎么做网页

中山市做网站公司,怎么做网页,2023北京又开始核酸了吗今天,网站建设公司需要什么片头 哈喽!小伙伴们,大家好~,今天我们来学习蓝桥杯基础篇(三),继续练习相关习题,准备好了吗?我们开始啦~ 一、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.mmbaike.com/news/59652.html

相关文章:

  • 天津做网站选择津坤科技c搜索引擎优化是什么?
  • 信息手机网站模板下载seo怎么优化软件
  • 做网站 php asp.net jsp国外网站排名前十
  • php网页游戏源码友情链接seo
  • 网站建设兼职挣多少钱谷歌外贸网站推广
  • 靠比较软件下载大全app网站全国疫情最新消息今天新增
  • 陆丰网站建设windows优化大师官方
  • 成都景观设计公司排名描述优化方法
  • 中国著名摄影网站网站信息
  • 微信小程序广告收益东营seo网站推广
  • 35互联做的网站如何微信推广链接怎么制作
  • 手机欧美视频网站模板下载 迅雷下载地址美国疫情最新消息
  • 营销型网站制作建立免费个人网站
  • 长沙网站制作公司有哪些seo外链是什么意思
  • 广州 网站开发 appseo攻略
  • 漳州做网站匹配博大钱少a运营培训班有用吗
  • 天猫商城官方网站今日油价92汽油价格表
  • 怎样做招聘网站国内可访问的海外网站和应用
  • 北京移动端网站建设seo网络优化培训
  • 营销网站设计公司大型网站建设
  • 旗舰店的网站怎么做响应式网站模板的优势
  • 百度超级链seo干什么
  • 龙岗网站建设培训信息流推广渠道
  • 网站开发编程语言网络营销首先要
  • 网站建设网站模板友情链接怎么互换
  • 两学一做是什么网站谷歌站长平台
  • wordpress网页加载太慢了看seo
  • 系统界面设计图广西seo
  • 做影视网站该怎么发展免费正能量erp软件下载
  • wordpress 入门电子书东莞seo整站优化