C语言程序设计基础OJ练习题(实验六一维数组)

2023-10-30

一、C语言实验——最值

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置。
请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

Input

输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。

Output

输出转换好的序列。数据之间用空格隔开。

Sample Input

6
2 3 8 1 4 5

Sample Output

1 3 5 2 4 8

#include<stdio.h>
int main()
{
    int n,a[20],min,max,x,y;
    scanf("%d",&n);
    scanf("%d",&a[0]);
    min = a[0];
    max = a[0];
    for(int i=1; i<n; i++)
    {
        scanf("%d",&a[i]);
        if(a[i]>max)
        {
            max = a[i];
            x = i;
        }
        else if(a[i]<min)
        {
            min = a[i];
            y = i;
        }
    }
    a[x]=a[n-1];
    a[y]=a[0];
    a[n-1]=max;
    a[0]=min;
    for(int i = 0;i<n-1;i++)
    {
        printf("%d ",a[i]);
    }
    printf("%d\n",a[n-1]);
    return 0;
}

 

二、C语言实验——整数位

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

输入一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字。

Input

输入一个不多于5位的正整数。

Output

输出数据有3行,第一行为正整数位数,第二行为各位数字,第三行为逆序的各位数字。

Sample Input

123

Sample Output

3
1 2 3
3 2 1

#include<stdio.h>
int main()
{
    int n,a[20],x;
    scanf("%d",&n);
    x = 0;
    while(n/10!=0)
    {
        a[x++]= n%10;
        n = n/10;
    }
    a[x++]=n;
    printf("%d\n",x);
    for(int i = x-1;i>=0;i--)
    {
        if(i==0)
            printf("%d\n",a[i]);
        else
            printf("%d ",a[i]);
    }
    for(int i = 0;i<x;i++)
    {
        if(i==x-1)
            printf("%d\n",a[i]);
        else
            printf("%d ",a[i]);
    }
    return 0;
}

 

三、小鑫数数儿

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

某天小鑫忽然得到了许多的数字,他很好学,老师给他布置了一个任务,求出这些数字中,小于他们平均数、等于他们平均数、大于他们平均数的数字的数量是多少。(对于出现的平均数,保证都是整数,不会出现浮点数)

Input

 多组输入。

对于每次的输入,第一行一个整数N(1 <= N <= 10),代表数字的个数。

接下来的一行,输入N个整数M(0 <= M <= 100)。

Output

 输出包含三个数,第一个跟第二个数后面是空格,最后一个数后面是换行。

第一个数是这些数字中小于他们平均数的数字的个数,第二个数为等于他们平均数的数字的个数,第三个数为大于他们平均数的数字的个数。

Sample Input

3
1 2 3
5
2 4 4 5 5

Sample Output

1 1 1
1 2 2

#include<stdio.h>
int main()
{
    int n,a[20],s,ave,x,y,z;
    while(scanf("%d",&n)!=EOF)
    {
        s = 0;
        for(int i = 0; i<n; i++)
        {
            scanf("%d",&a[i]);
            s = s+a[i];
        }
        ave = s/n;
        x = y = z = 0;
        for(int i = 0; i<n; i++)
        {
            if(a[i]<ave)
                x++;
            else if(a[i]==ave)
                y++;
            else
                z++;
        }
        printf("%d %d %d\n",x,y,z);
    }
    return 0;
}

 

四、区间之和

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

 

给定一个由 n 个整数组成的序列A1,A2,……, An 和两个整数L,R,你的任务是写一个程序来计算序列号在[L,R](这是一个闭区间) 这段位置区间内所有数的总和。

 

Input

 

输入只有一组测试数据:

测试数据的第一行为一个整数 n (1< n < 10000);

第二行为 n 个 int 类型的整数;

第三行为两个整数 L,R(0 < L < R <= n)。

Output

 

输出序列号在区间[L,R]内所有数的和,数据保证和在 int 类型范围内。

Sample Input

5
3 5 6 2 9
2 4

Sample Output

13

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

 

五、C语言实验——分割整数

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

从键盘输入一个长整数(不超过10位),从高位开始逐位分割并输出。

Input

正整数n,不含前导零。

Output

分割的整数序列,各整数之间用空格格开。
注意,最后一个数字后面没有空格!

Sample Input

678123

Sample Output

6 7 8 1 2 3

#include<stdio.h>
int main()
{
    int n,a[20],x;
    scanf("%d",&n);
    x = 0;
    while(n/10!=0)
    {
        a[x++]= n%10;
        n = n/10;
    }
    a[x++]=n;
    for(int i = x-1; i>=0; i--)
    {
        if(i==0)
            printf("%d\n",a[i]);
        else
            printf("%d ",a[i]);
    }
    return 0;
}

 

六、众数

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

众数是指在一组数据中,出现次数最多的数。例如:1, 1, 3 中出现次数最多的数为 1,则众数为 1。

给定一组数,你能求出众数吗?

Input

输入数据有多组(数据组数不超过 50),到 EOF 结束。

对于每组数据:

  • 第 1 行输入一个整数 n (1 <= n <= 10000),表示数的个数。
  • 第 2 行输入 n 个用空格隔开的整数 Ai (0 <= Ai <= 1000),依次表示每一个数。

Output

对于每组数据,在一行中输出一个整数,表示这组数据的众数。

数据保证有唯一的众数。

Sample Input

3
1 1 3
5
0 2 3 1 2

Sample Output

1
2

#include<stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int a[10001],b[10001]={0},x,flag,flag1,max,q;
        flag = 0;
        for(int i = 0; i<n; i++)
        {
            scanf("%d",&x);
            flag1=0;
            for(int j =0; j<=flag; j++)
            {
                if(a[j]==x)
                {
                    b[j]++;
                    flag1=1;
                    break;
                }
            }
            if(flag1==0)
                a[flag++]=x;
        }
        max = 0;
        for(int i =0; i<=flag; i++)
        {
            if(b[i]>max)
            {
                max = b[i];
                q = i;
            }
        }
        printf("%d\n",a[q]);
    }
    return 0;
}

 

七、小鑫爱运动

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

小鑫非常喜欢运动,有一次小鑫去参加110米栏的比赛,一共有10名比赛选手,小鑫是1号,由于跑的太专注,最后冲线的时候不知道自己是第几名,只知道每个人最后的成绩,聪明的你可不可以帮帮他?

Input

 多组输入。

先输入一个10,
然后每组输入10个整数,代表10个选手的110米栏成绩m,代表1号到N号的N个选手的成绩m,m范围是(0 < m < 100)。

Output

 输出只有一行,代表小鑫最后的名次是多少。

 因为小鑫长得丑,成绩相同时,他总是排在前面。

 

Sample Input

10
2 5 3 9 7 10 23 12 43 5
10
6 1 7 9 3 4 8 3 2 9

Sample Output

1
6

#include<stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int s,flag,x;
        scanf("%d",&s);
        flag = 1;
        for(int i = 1; i<n; i++)
        {
            scanf("%d",&x);
            if(x<s)
                flag++;
        }
        printf("%d\n",flag);
    }
    return 0;
}

 

八、C语言实验——数日子

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

光阴似箭,日月如梭,大学的时间真是宝贵,要抓紧时间AC^_^。你知道今天是这一年第几天吗,掐指一算还是要算好久,呵呵还是让计算机来做吧。这里的问题就是让你来写一个程序,输入某年某月某日,判断这一天是这一年的第几天?

Input

输入第一行是数据的组数n<100,下面n行是n组数据,每组数据由3个正整数组成,分别为年、月、日,我们保证每组数据都是有效的日期。

Output

输出所输入的日期是这一年的第几天。

Sample Input

2
2009 1 1
2008 1 3

Sample Output

1
3

#include<stdio.h>
int main()
{
    int n;
    int a[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d",&n);
    while(n--)
    {
        int year,month,day,s;
        scanf("%d%d%d",&year,&month,&day);
        if(month==1)
        {
            printf("%d\n",day);
        }
        else if(month==2)
        {
            printf("%d\n",day+31);
        }
        else
        {
            s = 0;
            for(int i=0; i<month-1; i++)
            {
                s = s + a[i];
            }
            s = s + day;
            if((year%4==0&&year%100!=0)||(year%400==0))
            {
                s = s+1;
            }
            printf("%d\n",s);
        }
    }
    return 0;
}

 

九、喵帕斯之平地摔

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

 

平地摔可是莲酱的特技!莲酱在平地都可以跌倒,更不用说陡峭的地方了。

 

这里简化一下地面为一维数轴,a[i] 代表第 i 个位置的高度为 a[i]。

对于 a[i - 1] < a[i] > a[i + 1] 的地方被称为绊脚石,会让莲酱跌倒,注意第一个位置和最后一个位置不会成为绊脚石。

 

现在莲酱想知道他从 1 位置走到 n 位置至少要跌到多少次。

Input

多组输入直到EOF。(组数小于100)

 

对于每组数据,首先输入一行包含一个正整数 n 。(1 <= n <= 100)

接下来一行包含 n 个正整数 a[i]。(1 <= a[i] <= 100)

Output

对于每组数据输出一行,包含一个整数为莲酱要跌倒的次数。

Sample Input

9
1 7 8 2 9 3 9 9 3

Sample Output

2

Hint

输入的示例中,第三个位置 8 和第五个位置 9 是绊脚石,总共两个绊脚石。

Source

【2017级《程序设计基础(B)I》期末上机考试】Fish

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

 

十、排序

Time Limit: 1000 ms Memory Limit: 32678 KiB

Submit Statistic

Problem Description

    给你N(N<=100)个数,请你按照从小到大的顺序输出。

Input

    输入数据第一行是一个正整数N,第二行有N个整数。

Output

    输出一行,从小到大输出这N个数,中间用空格隔开。

Sample Input

5
1 4 3 2 5

Sample Output

1 2 3 4 5

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

 

十一、排序问题

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。

Input

输入数据有一行,包含10个整数,用空格分开。

Output

输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。

Sample Input

1 2 3 5 4 6 8 9 10 7

Sample Output

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

#include<stdio.h>
int main()
{
    int a[11],b[11],flag;
    for(int i=0; i<10; i++)
    {
        scanf("%d",&a[i]);
        b[i]=a[i];
    }
    for(int i=0; i<9; i++)
    {
        for(int j =i+1; j<10; j++)
        {
            if(a[i]>a[j])
            {
                flag = a[i];
                a[i] = a[j];
                a[j] = flag;
            }
        }
    }
    for(int i=0; i<9; i++)
    {
        printf("%d ",a[i]);
    }
    printf("%d\n",a[9]);
    for(int i=0; i<10; i++)
    {
        for(int j = 0; j<10; j++)
        {
            if(a[i]==b[j])
            {
                if(i!=9)
                {
                    printf("%d ",j+1);
                }
                else
                {
                    printf("%d\n",j+1);
                }
                break;
            }
        }
    }
    return 0;
}

 

十二、数列有序!

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。

Input

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0表示输入数据的结束,本行不做处理。

Output

对于每个测试实例,输出插入新的元素后的数列。

Sample Input

3 3
1 2 4
0 0

Sample Output

1 2 3 4

#include<stdio.h>
int main()
{
    int n,m,a[101];
    while(scanf("%d%d",&n,&m)!=EOF&&n!=0&&m!=0)
    {
        for(int i=0; i<n; i++)
        {
            scanf("%d",&a[i]);
        }
        if(m<=a[0])
        {
            printf("%d ",m);
            for(int i=0; i<n-1; i++)
            {
                printf("%d ",a[i]);
            }
            printf("%d\n",a[n-1]);
        }
        else if(m>=a[n-1])
        {
            for(int i=0; i<n; i++)
            {
                printf("%d ",a[i]);
            }
            printf("%d\n",m);
        }
        else
        {
            for(int i=0; i<n-1; i++)
            {
                printf("%d ",a[i]);
                if(m>=a[i]&&m<a[i+1])
                    printf("%d ",m);
            }
            printf("%d\n",a[n-1]);
        }
    }
    return 0;
}

 

十三、中位数

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

中位数是指在一组数据中,按数值大小排序后处于中间位置的数。例如:1, 5, 3 排序后为 1, 3, 5,则其中位数为 3。特别地,当数的个数 N 为偶数时,中位数取位置居中的两个数 (N/2 和 N/2+1) 的平均值,例如:1, 2, 3, 4,中位数为 (2+3)/2 = 2.5。

给定一组数,你能求出中位数吗?

Input

输入数据有多组(数据组数不超过 100),到 EOF 结束。

对于每组数据:

  • 第 1 行输入一个整数 n (3 <= n <= 100),表示数的个数。
  • 第 2 行输入 n 个用空格隔开的整数 Ai (0 <= Ai <= 1000),依次表示每一个数,保证互不重复。

Output

对于每组数据,在一行中输出一个实数(保留 1 位小数),表示这组数据的中位数。

Sample Input

3
1 5 3
4
1 2 3 4

Sample Output

3.0
2.5

Hint

Source

【2016级《程序设计基础(B)I》期末上机考试-第二场】bLue

#include<stdio.h>
int main()
{
    int n;
    double s,a[101];
    while(scanf("%d",&n)!=EOF)
    {
        int flag;
        for(int i=0; i<n; i++)
        {
            scanf("%lf",&a[i]);
        }
        for(int i=0; i<n-1; i++)
        {
            for(int j=i+1; j<n; j++)
            {
                if(a[j]>a[i])
                {
                    flag = a[j];
                    a[j] = a[i];
                    a[i] = flag;
                }
            }
        }
        if(n%2==0)
        {
            s = (a[n/2]+a[n/2-1])/2;
        }
        else
        {
            s = a[n/2];
        }
        printf("%.1lf\n",s);
    }
    return 0;
}

 

十四、C语言实验——各位数字之和排序

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

给定n个正整数,根据各位数字之和从小到大进行排序。

Input

输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。n<=10

Output

输出每组排序的结果。

Sample Input

3 230 59 110
5 199 220 108 235 120
0

Sample Output

110 230 59
120 220 108 235 199

#include<stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n!=0)
    {
        int s,a[11]={0},b[11],c[11],flag;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&s);
            b[i]=s;
            while(s!=0)
            {
                a[i]=a[i]+s%10;
                s = s/10;
            }
            c[i]=a[i];
        }
        for(int i=0; i<n-1; i++)
        {
            for(int j=i+1; j<n; j++)
            {
                if(a[j]<a[i])
                {
                    flag = a[j];
                    a[j] = a[i];
                    a[i] = flag;
                }
            }
        }
        for(int i=0; i<n; i++)
        {
            for(int j=0;j<n;j++)
            {
                if(a[i]==c[j])
                {
                    if(i!=n-1)
                        printf("%d ",b[j]);
                    else
                        printf("%d\n",b[j]);
                    break;
                }
            }
        }
    }
    return 0;
}

 

十五、期末考试之排名次

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序。

Input

第一行一个整数N(N<=100),代表学生的人数。
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩。

Output

一共N行,每行一个数,从大到小,分别代表各个学生的总成绩。

Sample Input

3
70 80 90
59 59 59
100 100 100

Sample Output

300
240
177

#include<stdio.h>
int main()
{
    int n,s[101],flag;
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        s[i]= a + b + c;
    }
    for(int i=0; i<n-1; i++)
    {
        for(int j=i+1; j<n; j++)
        {
            if(s[j]>s[i])
            {
                flag = s[j];
                s[j] = s[i];
                s[i] = flag;
            }
        }
    }
    for(int i=0; i<n; i++)
    {
        printf("%d\n",s[i]);
    }
    return 0;
}

 

十六、次大和次小

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

对于一个数组,次大的数指数组中第二大的数,相似地,次小的数指数组中第二小的数。

给定一个含有 n 个数的数组(数组中的数互不相同),求其中次大的数和次小的数。

Input

首先输入一个整数 T (1 <= T <= 200),表示数据组数。

对于每组数据:

  • 第 1 行输入一个整数 n (2 <= n <= 1000),表示数组中元素的数量。
  • 第 2 行输入 n 个用空格隔开的整数 Ai (-10000 <= Ai <= 10000),表示数组中每一个元素的值。

Output

对于每组数据,输出一行,包含 2 个整数 a, b,分别表示次大和次小的数。

Sample Input

1
5
3 1 2 4 5

Sample Output

4 2

#include<stdio.h>
int main()
{
    int T,n,s[1001],flag;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(int i=0; i<n; i++)
        {
            scanf("%d",&s[i]);
        }
        for(int i=0; i<n-1; i++)
        {
            for(int j=i+1; j<n; j++)
            {
                if(s[j]>s[i])
                {
                    flag = s[j];
                    s[j] = s[i];
                    s[i] = flag;
                }
            }
        }
        printf("%d %d\n",s[1],s[n-2]);
    }
    return 0;
}

 

十七、冒泡排序中数据交换的次数

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。

Input

输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N <= 100

Output

输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。

Sample Input

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

Sample Output

0
4
1

#include<stdio.h>
int main()
{
    int T,n,s[101],flag,sum;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        sum = 0;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&s[i]);
        }
        for(int i=0; i<n-1; i++)
        {
            for(int j = 0; j<n-1-i; j++)
            {
                if(s[j]>s[j+1])
                {
                    flag = s[j];
                    s[j] = s[j+1];
                    s[j+1] = flag;
                    sum++;
                }
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}

 

十八、小金追呀追不上妹子

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

众所周知,C语言的学习是我们程序设计基础的重点和主要内容。
小金知道他喜欢的妹子最喜欢的水果是苹果,但是小金是种玉米的哪!所以他为了讨好妹子的欢心,他会从收获的n个玉米中挑选出m个最大的玉米去抠脚大汉那里换苹果,问题是,他这m个玉米的价值有多大?

Input

多组输入。
每行开始输入两个整数分别为n,m。代表含义如题目所述。
接下来一行有n个整数,代表每个玉米的价值。
1 < = m < n < = 1000 

Output

输出小金m个最大玉米的总价值。
输出占一行,保证数据合法。

Sample Input

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

Sample Output

34
12

#include<stdio.h>
int main()
{
    int n,m,s[1001],flag,sum;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        sum = 0;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&s[i]);
        }
        for(int i=0; i<n-1; i++)
        {
            for(int j=i+1; j<n; j++)
            {
                if(s[j]>s[i])
                {
                    flag = s[j];
                    s[j] = s[i];
                    s[i] = flag;
                }
            }
        }
        for(int i=0; i<m; i++)
        {
            sum = sum+s[i];
        }
        printf("%d\n",sum);
    }
    return 0;
}

 

十九、C语言实验——数组逆序

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m < n < 100)个位置。

Input

输入数据有2行,第一行的第一个数为n,后面是n个整数,第二行整数m。

Output

按先后顺序输出n个整数。

Sample Input

5 1 2 3 4 5
2

Sample Output

4 5 1 2 3

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

 

二十、矩阵输出

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

输入n个整数,输出由这些整数组成的n行矩阵。

Input

第一行输入一个正整数N(N<=20),表示后面要输入的整数个数。
下面依次输入N个整数。

Output

以输入的整数为基础,输出有规律的n行数据。

Sample Input

5
3 6 2 5 8

Sample Output

3 6 2 5 8
8 3 6 2 5
5 8 3 6 2
2 5 8 3 6
6 2 5 8 3

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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言程序设计基础OJ练习题(实验六一维数组) 的相关文章

  • 大数据单机学习环境搭建(5)Hive建表DDL详解

    专题 大数据单机学习环境搭建和使用 1 Hive建表简单示例 1 1 Hive建表语句 1 2 表详细信息 1 3 数据展示 2 Hive建表语法详解 3 拓展1 复杂数据分割 4 拓展2 事务表 大数据单机学习环境搭建 5 Hive建表D

随机推荐

  • Linux中使用ctrl+z停止任务后如何恢复任务

    ctrl z的作用是停止任务 要恢复停止的任务要使用fg命令 root localhost jobs 1 已停止 top root localhost fg 1 fg 任务序号 直接用fg命令 恢复的是最新停止的一条任务
  • 1流明等于多少lux_投影仪流明科普,别再被商家骗了

    一 简介 流明 英文 Lumen 简写 lm 是光通量的国际单位 光通量 luminous flux 代表了我们人眼对不同波长的光的变化铭感度 我们一般说的投影仪流明指的是 ANSI流明 这个是国际公认的标准单位 在不同位置对投影仪进行测量
  • vue3+vite+element-plus+husky+commitzen搭建项目

    1 1 编辑器统一编码规范 http editorconfig org root true 表示所有文件适用 charset utf 8 设置文件字符集为 utf 8 indent style space 缩进风格 tab space in
  • 【WIFI】WIFI基本知识汇总

    这里对wifi的802 11协议中比较常见的知识做一个基本的总结和整理 便于后续的学习 因为无线网络中涉及术语很多 并且许多协议都是用英文描述 所以有些地方翻译出来会有歧义 这种情况就直接英文来描述了 主要内容 目录 一 基本概述 1 有线
  • Concurrent Mark Sweep(cms)垃圾回收器

    好长时间没写过博客了 突发奇想 开始写下最近几年的积累吧 先从Concurrent Mark Sweep cms 开始 希望自己没有太懒吧 坚持写完吧 先介绍以下概念 GC ROOT 这里我引用下RednaxelaFX的原话 所谓 GC r
  • Linux串口相关的操作及绑定

    Linux串口相关的操作及绑定 操作串口出现权限不足情况处理 要查看某个串口的波特率等信息 cat打印串口数据 排查问题常用方法 1 查看串口是否可用 2 查看串口名称使用 3 查看串口驱动 4 查看串口设备 5 查一下板子上的串口有没有设
  • 【策略工厂模式】使用策略工厂模式解决if else过多的问题

    目录 一 为什么要用策略工厂解决问题 1 1 使用策略模式之前 1 2使用策略模式之后 二 怎么用策略工厂模式解决问题 2 1 创建枚举类 2 2 创建抽象类 2 3 创建工厂类 2 4 编写子类型 三 意义 一 为什么要用策略工厂解决问题
  • Tensorflow加载预训练模型和保存模型(ckpt文件)以及迁移学习finetuning

    转载自 https blog csdn net huachao1001 article details 78501928 使用tensorflow过程中 训练结束后我们需要用到模型文件 有时候 我们可能也需要用到别人训练好的模型 并在这个基
  • 快速理解图神经网络(GCN)

    网上对图卷积神经网络 Graph Convolutional Networks 的介绍大都说的云里雾里 让人看了不甚明白 无意中找到了篇很好的文章 对图神经网络中 f H i A
  • 前端下载二进制流文件

    前端下载文件有两种方法 第一种 后台直接返回下载流格式的文件地址 前端用a标签新开窗口或者window open 下载即可 另外一种 后台返回二进制流文件内容 前端通过blob进行转化后再下载 具体代码 async downloadFn t
  • pyautogui.locateOnScreen()扫描屏幕返回none问题

    我们有一张这样的图片 我们想用pyautgui模块的locateOnScreen 定位该图片在屏幕对应的位置 发现屏幕中明明存在改图片 但是扫描失败 找不到该图片 如下两张图 我们给locateOnScreen 括号里添加confidenc
  • Linux——主函数的三个参数,printf方法的隐藏缓冲区

    主函数的三个参数 在windows下 c语言的主函数默认有两个参数 很多人会惊奇 这是什么 好像从没有听说过 我们在写C代码的时候都是习惯性的新建空项目然后自己添加 cpp文件 但是可能有部分人习惯直接新建控制台程序 然后可能就会看到这么一
  • 对你的屁股好一点!

    作为软件开发人员 买一把上乘的电脑椅也许是你能做的最明智的投资之一 事实上 在过去几年看过各种各样的椅子之后 我得出了一个结论 如果你想买一把上乘的椅子 你要花的钱不会少于500美元 如果你在座椅上花的钱没那么多 除非你正在经历那场跨世纪互
  • 技术博客写作「个人经验分享」

    技术博客写作 个人经验分享 仔细想来 从19年我刚开始试着技术写作算起 已经过去了好几年时间 刚好趁着这次的 赠送奖牌活动 奖牌很好看 我很想要hhh 来分享一下我关于技术博客写作的一些个人经验 文章目录 技术博客写作 个人经验分享 Wha
  • 新装机电脑网速特别慢

    老主机最近有些问题 我一直没能解决 也用了5年了 索性出给闲鱼二道贩子 又自己新配置了一台主机 具体表现为 主机插网线后 跟之前主机比 浏览网页或者下载资源速度特别慢 打开百度浏览器都要转上一会 不管下载什么资源 下载速度最快只有100 2
  • Redis面试题整理

    1 什么是Redis以及Redis的优缺点 Redis是一个非关系型数据库 NO SQL 类似于Java中Map 其中key为字符串类型 Redis支持的Value类型有5种 字符串 String 列表 List 集合 set 散列表 Ha
  • 【Python技巧】python字符串编码全是Unicode,Unicode压缩到utf-8,encode和decode,bytes

    一 Python3字符串全是Unicode 这意味着 只要用python3 x 无论我们的程序以那种语言开发 都可以在全球各国电脑上正常显示 python3 x中 把字符串变成了unicode 文件默认编码为utf 8 unicode 分为
  • Acwing 893. 集合-Nim游戏

    Mex运算 设S表示一个非负整数集合 定义mex S 为求出不属于集合S的最小非负整数的运算 即 mex S min x x属于自然数 且x不属于S SG函数 在有向图游戏中 对于每个节点x 设从x出发共有k条有向边 分别到达节点y1 y2
  • Linux文件恢复

    0 前言 用rm命令多了 难免会出现误删文件的情况 本人就在Ubuntu14 04中做项目时遇到该问题 本来想使用rm命令删除以14开头的文件 结果写成如下形式 导致文件被误删 rm 14 14 和 误增了一个空格 1 工具 ext3和ex
  • C语言程序设计基础OJ练习题(实验六一维数组)

    一 C语言实验 最值 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 有一个长度为n的整数序列 其中最大值和最小值不会出现在序列的