【PTA-C语言】编程练习3 - 循环结构Ⅱ

这篇具有很好参考价值的文章主要介绍了【PTA-C语言】编程练习3 - 循环结构Ⅱ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 如果代码存在问题,麻烦大家指正 ~ ~
  • 有帮助麻烦点个赞 ~ ~

7-9 特殊a串数列求和(分数 15)

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:
输入在一行中给出不超过9的正整数a和n。

输出格式:
在一行中按照“s = 对应的和”的格式输出。

输入样例:

2 3

输出样例:

s = 246

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码文章来源地址https://www.toymoban.com/news/detail-770137.html

#include <stdio.h>
int main()
{
    int a, b, sum=0, i, x=0;
    scanf("%d %d", &a, &b);
    for (i = 1; i <= b; i++) {
        x = x*10 + a;
        sum += x;
    }
    printf("s = %d", sum);
    return 0;
}

7-10 穷举法搬运砖块问题(分数 15)

这是中国古典算术问题,某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。有多少种搬法用N人正好搬N块砖?

输入格式:
输入正整数N。

输出格式:
输出所有满足条件的搬法,每种搬法占一行。

每行按如下格式依次输出该搬法中男人、女人、小孩的人数,按男人人数的递增顺序输出,中间用空格间隔(=前后没有多余的空格,行末也无空格)。

men=男人数 women=女人数 child=小孩数

若没有满足条件的搬法,则输出"No solution!"

输入样例1:

45

输出样例1:

men=0 women=15 child=30
men=3 women=10 child=32
men=6 women=5 child=34
men=9 women=0 child=36

输入样例2:

1

输出样例2:

No solution!

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码

#include <stdio.h>
int main()
{
    int n, i, j, k, t=0;
    scanf("%d", &n);
    for(i=0; i<=n/3; i++)
        for(j=0; j<=n/2; j++){
            k = (n-i*3-j*2)*2;
            if(i+j+k == n) {
                printf("men=%d women=%d child=%d\n", i, j, k);
                t=1;
            }
        }
    if(t==0)printf("No solution!\n");
    return 0;
}

7-11 数字金字塔(分数 15)

输入一个正整数repeat (repeat<10),做repeat次下列运算:

  • 输入一个正整数n(n<10),输出n行数字金字塔。

输出时使用以下语句:

  • printf(" ");
  • printf("%d ", i);
  • printf("\n");

输入格式:
输入在第1行中给出1个正整数repeat(repeat<10)
接下来repeat行,每行给出一个正整数n(n<10)

输出格式:
按照对应顺序的n值,依次输出repeat个数字金字塔
(n行数字金字塔的格式如样例所示,注意:每个数字后面跟一个空格。)

输入样例:

2
5
2

输出样例:

        1 
      2 2 2 
    3 3 3 3 3 
  4 4 4 4 4 4 4 
5 5 5 5 5 5 5 5 5 
  1 
2 2 2 

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码

#include<stdio.h>
int main()
{
    int repeat, i=0, n, m, p, q;
    scanf("%d", &repeat);
    for(i=0; i<repeat; i++){
        scanf("%d", &n);
        for(m=1; m<=n; m++){
            for(q=n; q>m; q--)
                printf("  ");
            for(p=1; p<=2*m-1; p++)
                printf("%d ", m);
            printf("\n");
        }
    }
    return 0;
}

7-12 输出N以内的所有素数(分数 15)

编程找出N(2≤N≤500)以内(即小于等于N)的所有素数。

输入格式:
输入整数N(2≤N≤500)。

输出格式:
每8个一行输出N以内的所有素数。注意每个数据均占5列,且采用右对齐。

输入样例1:

50

输出样例:

    2    3    5    7   11   13   17   19
   23   29   31   37   41   43   47

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码

#include <stdio.h>
#include <math.h>
int isprime(int n)
{
    if(n == 1) return 0;
    for(int i = 2; i <= sqrt(n); i++) {
        if(n % i == 0)
            return 0;
    }
    return 1;
}
int main()
{
    int i, n, k=0;
    scanf("%d", &n);
    for(i=1; i<=n; i++)
        if(isprime(i)) {
            k++;
            if(k == 8) {
                printf("%5d\n", i);
                k=0;
            } else printf("%5d", i);
        }
    return 0;
}

7-13 猜数字游戏(分数 15)

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。

输入样例:

58 4
70
50
56
58
60
-2

输出样例:

Too big
Too small
Too small
Good Guess!

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码

#include <stdio.h>
int main()
{
    int i, a, n, num = 0, t;
    scanf("%d %d", &a, &n);
    if (n == 0 || n <= 0) {
        printf("Game Over\n");
        return 0;
    }
    for(i = 1; ;i++) {
        scanf("%d", &t);
        num++;
        if (num > n || t < 0) {
            printf("Game Over\n");
            return 0;
        }
        if (t > a) printf("Too big\n");
        if (t < a) printf("Too small\n");
        if (t == a && num == 1) {
            printf("Bingo!\n");
            break;
        }
        if (t == a && num > 1 && num <= 3) {
            printf("Lucky You!\n");
            break;
        }
        if (t == a && num > 3 && num <= n) {
            printf("Good Guess!\n");
            break;
        }
    }
    return 0;
}

7-14 外星人的一天(分数 15)

地球上的一天是 24 小时。但地球上还有一些精力和勤奋度都远超一般人的大神级人物,他们的“一天”是以 48 小时为周期运转的,这种人被人们尊称为“外星人”。比如普通人的周一早 8:30 是外星人的周一早 4:15;普通人的周二早 9:21 是外星人的周一下午 4:40 —— 对外星人而言,一周的工作时间只有三天(即普通人的周一至周六),周日他们会蒙头大睡恢复体力,时间对他们是没有意义的。

在外星人眼里,地球人的时钟对他们而言实在是太不方便了。本题就请你为外星人们实现一款专用时钟。

输入格式:
输入在一行中给出一个不超过 10 的正整数 N,随后 N 行,每行给出一个地球人的时刻,格式为:Day hh:mm,其中Day是 [0,6] 区间内的整数,顺序代表周日至周六;hh是 24 小时制的小时数,是 [0,23] 区间内的整数;mm是分钟数,是 [0,59] 区间内的整数。

输出格式:
对输入的每一行地球人时刻,输出对应的外星人时间,格式与输入相同。其中Day在 [0,3] 区间内,对应周日到周三;分钟数若不是整数,则向下取整。注意:由于周日的时间对外星人没有意义,所以直接输出地球人的时间即可。

输入样例:

3
1 08:30
2 09:21
0 21:07

输出样例:

1 04:15
1 16:40
0 21:07

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码

#include <stdio.h>
int main(){
    int day, d, h, m;
    scanf("%d", &day);
    while(day--) {
        scanf("%d %02d:%02d", &d, &h, &m);
        if(d == 0) {
            printf("%d %02d:%02d\n", d, h, m);
            continue;
        } else if (d % 2 == 1) {
            d = d/2 + 1;
        } else {
            d = d/2;
            h += 24;
        }
        m = ((h % 2)*60 + m) / 2;
        h /= 2;
        printf("%d %02d:%02d\n", d, h, m);
    }
    return 0;
}

7-15 整数的分类处理(分数 15)

给定 N 个正整数,要求你从中得到下列三种计算结果:

  • A1 = 能被 3 整除的最大整数
  • A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
  • A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)

输入格式:
输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。

输出格式:
在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE

输入样例 1:

8
5 8 7 6 9 1 3 10

输出样例 1:

9 3 6.5

输入样例 2:

8
15 18 7 6 9 1 3 10

输出样例 2:

18 3 NONE

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

参考代码

#include <stdio.h>
int main()
{
    int i, n, m, a1=0, a2=0, cnt3=0;
    double sum=0.0;
    scanf("%d", &n);
    for(i=0; i<n; i++) {
        scanf("%d", &m);
        if(m%3 == 0) {
            if(a1<m) a1=m;
        }
        else if(m%3 == 1)
            a2++;
        else if(m%3 == 2) {
            cnt3++;
            sum += m;
        }
    }
    if(a1) printf("%d ", a1);
    else printf("NONE ");
    if(a2) printf("%d ", a2);
    else printf("NONE ");
    if(cnt3) printf("%.1f", sum/cnt3);
    else printf("NONE");
    return 0;
}

到了这里,关于【PTA-C语言】编程练习3 - 循环结构Ⅱ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言循环结构一些重要的练习题(较为基础的)

    循环结构 1.求累加和问题 2.输出字母A-Z 3.输入正整数n,计算并输出n! 4.将一个正整数倒序输出 5.打印九九乘法表 6.输出三角形、菱形 7.continue语句和break语句 8.输出100-200之间不能被3整除的数 9.求Pi的值,根据 10.求斐波那契数列前k项的值 11.判断一个数是否为素数 12.输出特定

    2023年04月08日
    浏览(41)
  • PTA Python作业4循环结构

    目录 判断题 单选题 编程题 7-1 最大公约数 7-2 指定范围内的素数 7-3 鸡兔同笼 1-1不管是单层循环还是多层循环,只要执行到break语句,所有循环立即结束。(F) 1-2在Python循环中,对于带有else子句的循环,如果因为执行了break语句而退出的话,会执行else子句的代码。(F) 1-3在P

    2024年02月07日
    浏览(46)
  • 【C/PTA】结构体专项练习

    本文结合PTA专项练习带领读者掌握结构体,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 小明最近喜欢玩一款新游戏。在该游戏中,需要组建队伍去完成任务以获取奖励。小明挑出了所有的队员(每个人能力不同),需要一个函数挑出队长(能力最强的队员)

    2024年02月03日
    浏览(39)
  • 【C/PTA】结构体进阶练习

    本文结合PTA专项练习带领读者掌握结构体,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,

    2024年02月05日
    浏览(36)
  • 【C/PTA】选择结构专项练习(额外)

    本文结合PTA专项练习带领读者掌握选择结构,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 孔融小时候聪明好学,才思敏捷,巧言妙答,大家都夸他是奇童。4岁时,他已能背诵许多诗赋,并且懂得礼节,父母亲非常喜爱他。 一日,父亲买了一些梨子,特地拣

    2024年02月08日
    浏览(44)
  • 【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。 首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。 然后用for循环来输入这个数组中的各个数字。 接下来,就是对这个数组中的数字进

    2023年04月16日
    浏览(38)
  • 数据结构第5章练习答案(PTA)

    2-1以下说法错误的是( A ) A.树形结构的特点是一个结点可以有多个直接前趋 B.线性结构中的一个结点至多只有一个直接后继 C.树形结构可以表达(组织)更复杂的数据 D.树(及一切树形结构)是一种\\\"分支层次\\\"结构 E.任何只含一个结点的集合是一棵树 2-2利用二叉链表存储树,则根

    2024年02月04日
    浏览(51)
  • 数据结构第6章练习答案(PTA)

    2-1具有5个顶点的有向完全图有多少条弧?( C ) A.10        B.16        C.20        D.25 2-2关于图的邻接矩阵,下列哪个结论是正确的?( B ) A.有向图的邻接矩阵总是不对称的 B.有向图的邻接矩阵可以是对称的,也可以是不对称的 C.无向图的邻接矩阵总是不对称的

    2024年02月05日
    浏览(45)
  • 考研C语言刷编程题篇之分支循环结构基础篇(一)

    目录 第一题 第二题  方法一:要循环两次,一次求阶乘,一次求和。 注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。 方法二: 第三题 方法一:用数组遍历的思想  方法二用折半查找的思想 折半查找的思想  第四题 方法一:用两个变量,两个数

    2024年01月21日
    浏览(52)
  • 数据结构第7~8章练习答案(PTA)

    2-1适用于折半查找的表的存储方式及元素排列要求为( D ) 。 A.链接方式存储,元素无序 B.链接方式存储,元素有序 C.顺序方式存储,元素无序 D.顺序方式存储,元素有序 2-2在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包