2019-10-31 10月31日程序设计实验OJ题目记录

Problem A: 输出连续的整数序列 之一

Description

输出指定区间内的所有整数。

Input

输入只有1行,即N,N是一个int类型的数据。

Output

如果N>0,则输出[1,N]区间内的所有整数;如果N =0,则输出0;如果N<0,则输出[N,-1]内的所有整数。

如果输出的整数多于1个,则两两之间用一个空格隔开。

Sample Input

9

Sample Output

1 2 3 4 5 6 7 8 9

AC代码

#include<stdio.h>
 
int main() {
    int n;
    int flag = 0;
    scanf("%d", &n);
 
    if (n == 0) {
        printf("%d", 0);
    } else if (n > 0) {
        for (int i = 1; i <= n; i++) {
            if (flag == 0) {
                printf("%d", i);
                flag = 1;
            } else {
                printf(" %d", i);
            }
        }
    } else if (n < 0) {
        for (int i = n; i <= -1; i++) {
            if (flag == 0) {
                printf("%d", i);
                flag = 1;
            } else {
                printf(" %d", i);
            }
        }
    }
 
    return 0;
}

Problem B: 输出连续的整数序列 之二

Description

输出若干个连续的整数序列。

Input

输入有多行。第一行是N>0,表示后面有N行输入。

之后每行输入包含2个数据P和Q,两者之间用空格隔开,且均在int类型的表示范围内。

Output

输出N个连续的整数序列,序列两两之间用一个空行隔开。

其中第i个序列是在P和Q之间的整数,包括P和Q,且当输出的数据多于1个时,两两之间用一个空格隔开。

Sample Input

3
1 100
10 -10
10 10

Sample Output

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10

10

HINT

当P或Q是int类型的能够表示的最大值或者最小值时,应该如何处理?

AC代码

#include <stdio.h>
 
int main() {
    int z, x, i, N, temp, j;

    scanf("%d", &N);

    for(j = 0; j < N; ++j) {
        scanf("%d%d",&z,&x);
        if(z > x) {
            temp=z;
            z=x;
            x=temp;
        }

        for(i=z; i<x; ++i) {
            printf("%d ", i);
        }
        printf("%d\n", x);

        printf("\n");
    }
    return 0;
}

Problem C: 是元音字母吗?

Description

输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U

Input

输入一个英文字母

Output

是元音字母,输出“yes”,否则输出“no”,行尾没有回车。

Sample Input

A

Sample Output

yes

AC代码(不要吐槽格式)

#include<stdio.h>
 
int main() {
    char c;
    scanf("%c", &c);
 
    switch(c) {
    case 'a':
        case 'e':
            case 'i':
                case 'o':
                    case 'u':
                        case 'A':
                            case 'E':
                                case 'I':
                                    case 'O':
                                        case 'U':
                                            printf("yes");
                                            break;
                                        default:
                                            printf("no");
                                            break;
    }
 
    return 0;
}

Problem D: 序数的后缀

Description

英文中经常用阿拉伯数字加上字母后缀表示“第几“这样的序数词。比如,”第10次会面“通常写成”10th meeting“。

后缀来源于英文的序数词:第1的英文是first,写成”1st‘;第2的英文是second,写成“2nd”;第3的英文是third,写成“3rd”,第4是fourth,写成“4th”,以后的数字都加“th”。

在这里规定,所有后缀为1的数字都写成“st”结尾,后缀为2的数字写成“nd”结尾,后缀为3的英文写成“rd”结尾,其他的写成“th”结尾。

Input

输入为多个很小的正整数,当输入为0时表示输入结束。

Output

输出为多行,每行对应一个输入数字的序数表示。

Sample Input

1 2 3 4 5 10 11 12 13 14 0

Sample Output

1st
2nd
3rd
4th
5th
10th
11st
12nd
13rd
14th

HINT

用switch语句似乎更容易些。

AC代码

然而并没有用switch。

#include <stdio.h>

int main() {
    int m, n;

    while (1) {
        scanf("%d", &n);
        if (n == 0) {
            break;
        }

        if (n <= 10) {
            if (n == 1) {
                printf("%dst\n", n);
            } else if (n == 2) {
                printf("%dnd\n", n);
            } else if (n == 3) {
                printf("%drd\n", n);
            } else {
                printf("%dth\n", n);
            }
        } else {
            m = n % 10;
            if (m == 1) {
                printf("%dst\n", n);
            } else if (m == 2) {
                printf("%dnd\n", n);
            } else if (m == 3) {
                printf("%drd\n", n);
            } else {
                printf("%dth\n", n);
            }
        }
    }
}

Problem E: 简单的数值统计

Description

现有一堆非零整数,要求统计其中正数、负数的个数以及它们的平均值。

Input

输入一系列整数,仅有最后一个数字是0,表示输入的结束。所有数据以及它们的和都在int的表示范围之内。

Output

输出有2行。如果有负数,第一行输出负数的个数和平均值,否则第一行输出0;如果有正数,第二行输出正数的个数以及平均值,否则第二行输出0。每行输出如果有2个数,则用空格隔开。平均值只保留2位小数。

Sample Input

1 2 3 4 -1 -2 -3 -4 0

Sample Output

4 -2.50
4 2.50

AC代码

#include <stdio.h>

int main() {
    int number;
    int countPositive=0,countNegative=0;
    int sumPositive=0,sumNegative=0;
    float avgPositive,avgNegative;
    scanf("%d",&number);
    while(number != 0) {
        if(number < 0) {
            sumPositive += number;
            countPositive++;
        }
        else {
            sumNegative += number;
            countNegative++;
        }
        scanf("%d",&number);
    }

    avgPositive = (sumPositive * 1.0) / countPositive;
    avgNegative = (sumNegative*1.0) / countNegative;
    if(countPositive != 0)
        printf("%d %.2f\n", countPositive, avgPositive);
    else
        printf("%d\n", countPositive);
    if(countNegative != 0)
        printf("%d %.2f\n", countNegative, avgNegative);
    else
        printf("%d\n", countNegative);
    return 0;
}

Problem F: 求累加和

Description

编程求min~max的累加和(含min和max),其中max>=min>0。

Input

输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。

Output

输出为N行,每个测试用例的计算结果占据一行。每行的格式为:

case i:sum=s.

其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。

Sample Input

2
1 10
1 100

Sample Output

case 1:sum=55.
case 2:sum=5050.

AC代码

#include<stdio.h>

int main() {
    int N, i, j, sum, a, b;
    scanf("%d", &N);
    for(i = 0; i < N; ++i) {
        scanf("%d%d", &a, &b);
        sum = 0;
        for(j = a; j <= b; ++j) {
            sum += j;
        }
        printf("case %d:sum=%d.\n", i + 1, sum);
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354