【C++】循环与分支练习题

刚来CSDN,还望大家多多支持!后续陆续发布C++、R、Linux、Python等基础教程。

一、结构化程序包括的基本控制结构是 ( C ) 。

A、选择结构、循环结构和层次结构

B、选择结构、循环结构和嵌套结构

C、顺序结构、选择结构和循环结构

D、选择结构、goto跳转和循环结构

二、结构化程序设计中,下面对goto语句的使用描述正确的是 ( C ) 。

A、禁止使用goto语句

B、使用goto语句的程序效率高

C、应尽量避免滥用goto语句

D、以上说法都不对

三、以下程序的输出结果为( C )。

int main()
{
    int i=0;
    if (i++)
        printf("%d\n", i++);
    else if (i++)
        printf("%d\n", i++);
    else
        printf("%d\n", i++);
}

A、0 B、1 C、2 D、3

四、以下程序的输出结果为( A )。

int main()
{
int x = 1,a=0,b=0;
switch(x)
{
    case 0:a++;
    case 1:b++;
    default:a++;b++;
    case 2:a+=b;b+=a;
}
printf("a=%d,b=%d\n",a,b);
}

A、a=3,b=5 B、a=0,b=1 C、a=1,b=1 D、a=3,b=3

五、以下程序的输出结果为( B )。

int main()
{
    int a=9,b=11,c=-1;
switch(a%3)
{
case 0:c++;
case 1:c++;break;
    switch(b%2)
    {
    default:c++;
    case 0:c++;break;
    }
}
printf("%d\n",c);
return 0;
}

A、0 B、1 C、2 D、3

六、以下程序的输出结果为( C )。

int main()
{
     int i =0;
     for(;i<=9;i++);
     printf("%d ",i);
     return 0;
}

A、0 B、0 1 2 3 4 5 6 7 8 9 C、10 D、9

七、编程实现:使用循环和分支结构输出一个九九乘法表。

1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9

……

#include<iostream>
using namespace std;

int main()
{
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            cout << j << "x" << i << "=" << i*j << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}

运行结果:

1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
请按任意键继续. . .

八、编程实现:使用循环和分支结构输出以下图形。

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

代码:

#include<iostream>
using namespace std;

int main()
{
    for (int i = 1; i <= 6; i++) {
        int x = i;
        while (--x)
        {
            cout << " ";
        }
        
        int y = i;
        while (y--)
        {
            cout << "*" ;
        }
        cout << endl;
    }

    system("pause");
    return 0;
}

结果:

*
 **
  ***
   ****
    *****
     ******
请按任意键继续. . .

九、编程实现:使用循环和分支结构输出以下图形。

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

代码:

#include<iostream>
using namespace std;

void printStr(string str, int num) {
    while (num--) {
        cout << str;
    }
}

int main()
{
    for (int i = 1; i <= 7; i++) {
        int x;
        if (i <= 4) {
            x = 4 - i;
        }else{
            x = i - 4;
        }
        int y = 7 - x * 2;
        printStr(" ", x);
        printStr("*", y);
        printStr(" ", x);

        cout << endl;
    }

    system("pause");
    return 0;
}

结果:

   *
  ***
 *****
*******
 *****
  ***
   *
请按任意键继续. . .

十、(附加题)输出100以内的素数(一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。如2,3,5,7)

代码:

#include<iostream>
using namespace std;

int main()
{
    for (int i = 2; i <= 100; i++) {

        int num = 0;
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                num++;
            }
        }
        if (!num) {
            cout << i << endl;
        }
    }
        system("pause");
        return 0;
}

结果:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
请按任意键继续. . .

十一、(附加题)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。第10天早上想吃时,就只剩下一个桃子了。求第一天摘了多少个桃子。

代码:

#include<iostream>
using namespace std;

int main()
{
    int num = 1;
    cout << "第" << 10 << "天没吃前剩余桃子还剩:" << num << " 个" << endl;
    for (int i = 1; i <= 9; i++) {
        num = (num + 1) * 2;
        cout << "第" << 10 - i << "天没吃前桃子还剩:" << num << " 个" << endl;
    }

    cout << "\n第一天猴子总共摘了 " << num << " 只" << "桃子!好家伙真能吃!" << endl;
    system("pause");
    return 0;
}

结果:

第10天没吃前剩余桃子还剩:1 个
第9天没吃前桃子还剩:4 个
第8天没吃前桃子还剩:10 个
第7天没吃前桃子还剩:22 个
第6天没吃前桃子还剩:46 个
第5天没吃前桃子还剩:94 个
第4天没吃前桃子还剩:190 个
第3天没吃前桃子还剩:382 个
第2天没吃前桃子还剩:766 个
第1天没吃前桃子还剩:1534 个

第一天猴子总共摘了 1534 只桃子!好家伙真能吃!
请按任意键继续. . .
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值