SDUT OJ 1835

原文链接:https://blog.csdn.net/a_madara/article/details/53526496

写在前面:
最近有小学弟问了,刚来的小学弟正在打基础的阶段
于是po出了老同学写的答案^^
希望小学弟们能在c/c++的世界打出一片天地,算法的大门时刻为你们打开oooooo

A

Problem Description

机械实验班有个同学叫小泉,有一天数学老师给小泉布置了一道个人作业,给小泉M(M<=100)组数据,每组数据有N个正整数(N<=100)让他把每组的N个数按升序排成一行,但由于数的数目比较多,人工做很费时,于是小泉就想到了喜欢编程序的你,请你帮他解决这个问题,可不要让他失望噢。
Input
输入包括M+1行,第一行是两个正整数M、N;M表示总共多少组数据,下面M行每行包含N个正整数。(输入数据之间会用空格隔开)
Output
输出包括M行,每行分别对应输入中M组数据的升序序列,数与数之间用一个空格隔开。
Example Input
2 3
1 3 2
4 2 6
Example Output
1 2 3
2 4 6

 #include <stdio.h>
int main()
{
    int m ,n, i, j, a[100], *p, *q, t, k, x;
    scanf("%d %d", &m, &n);
    for(i = 1; i <= m; i++)
    {
        for(j = 0; j < n; j++)
        {
            scanf("%d", &a[j]);
        }
        for(k = 0; k < n; k++)
        {
            p = &a[0];
            q = &a[1];
            for(j = 0; j <= n - k - 2; j++)
            {
                if(*q < *p)
                {
                    t = *q;
                    *q = *p;
                    *p = t;
                }
                p++;
                q++;
            }
        }
        for(x = 0; x < n - 1; x++)
        {
            printf("%d ", a[x]);
        }
        printf("%d\n", a[n - 1]);
    }
    return 0;
}

B
Problem Description

LeiQ当上了体育委员,现在老师让他去给班级里的人排队,LeiQ刚学了排序,所以他想以这种方式给班级里的人排队(从矮到高),他想知道排序完成后的结果。

Input
多组输入,每组的第一行是一个正数n(1<=n<=100),第二行是n个数,表示每一个人的高度。

Output
输出排序完成后的结果。

Example Input
3
176 175 174
Example Output
174 175 176

#include <stdio.h>
int main()
{
    int n, i, j, a[100], *p, *q, t, k, x;
    while(~scanf("%d", &n))
    {
        for(i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
        for(k = 0; k < n; k++)
        {
            p = &a[0];
            q = &a[1];
            for(j = 0; j <= n - k - 2; j++)
            {
                if(*q < *p)
                {
                    t = *q;
                    *q = *p;
                    *p = t;
                }
                p++;
                q++;
            }
        }
        for(x = 0; x < n - 1; x++)
        {
            printf("%d ", a[x]);
        }
        printf("%d\n", a[n - 1]);
    }

    return 0;
}

C
Problem Description
输入一个正整数n(1<=n<=10),再输入n*n的矩阵,要求求该矩阵的下三角元素之和。
Input
输入包括n+1行。
第一行为整数n;
接下来的n行为矩阵数据。
Output
矩阵的下三角元素之和。
Example Input
5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
Example Output
75

#include <stdio.h>
int main()
{
    int n, *p, a[100][100], i, j, s;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    s = 0;
    p = &a[0][0];
    for(i = 0; i < n; i++)
    {
        for(j = 0; j <= i; j++)
        {
            s += *p;
            p++;
        }
       p = &a[i + 1][0];
    }
    printf("%d\n", s);
    return 0;
}

D
Example Input
aaaa
ggg g
lozxvxoMJBCHsTXooXTsHCBJMoxvxzol
i am a good acmer
2013
Example Output
YES
YES
YES
NO

#include <stdio.h>
#include <string.h>
int main()
{
    int i, n, k;
    char a[100003], b[100003], *p, *q;
    while (gets(a))
    {
        if(strcmp(a,"2013") == 0)
        break;
        k = 0;
        for(i = 0; a[i] != '\0'; i++)
        {
            if(a[i] != ' ')
            {
                b[k] = a[i];
                k++;
            }

        }
        b[k] = '\0';
        n = strlen(b);
        p = b;
        q = b + (n - 1);
        for(i = 0; i < n; i++)
        {
            if(*q == *p)
            {
                p++;
                q--;
            }
            else
                break;
        }
        if(i >= n)
            printf("YES\n");
        else
            printf("NO\n");
    }

    return 0;
}

————————————————
版权声明:本文为CSDN博主「清寒飘叶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a_madara/article/details/53526496

上一篇:C 数据结构实验之链表一:顺序建立链表 SDUT


下一篇:android 图片性能优化