1190-1199: 习题6-2 排序

1190: 习题6-2 排序

题目描述

从键盘上输入10个整数,按照从小到大的顺序对这10个数排序。

采用选择法进行排序。

输入

输入以空格分隔的10个整数

输出

按从小到大排好序的10个数,每个数一行。

样例输入 Copy

1 8 6 3 4 2 9 0 7 5

样例输出 Copy

0
1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main()
{
    int i,j,b[10],t;
    for(i=0;i<10;i++)
        scanf("%d",&b[i]);
    for(i=0;i<10;i++)
        for(j=0;j<10;j++)
    {
        if(b[j]>b[j+1])
        {
            t=b[j];
            b[j]=b[j+1];
            b[j+1]=t;
        }
    }
    for(i=0;i<10;i++)
        printf("%d\n",b[i]);
}

1191: 习题6-3 求整型矩阵对角线元素之和

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 41  解决: 35  外部导入

 

提交状态讨论版

题目描述

求一个3×3的整型矩阵对角线元素之和。

输入

从键盘上输入3×3的整型矩阵,要求输入3行,每行3个整数,每个数之间以空格分隔

输出

对角线元素之和,行尾换行。

样例输入 Copy

1 2 3
4 5 6
9 8 7

样例输出 Copy

13

提示

3×3的整型矩阵用一个3行3列的二维整型数组来描述。

若二维整型数组定义为int a[3][3],则对角线元素即为a[i][i],i=0, 1, 2

 

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

1192: 习题6-4 有序插入

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 70  解决: 38  外部导入

 

提交状态讨论版

题目描述

有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。

假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。

然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。

输入

第一行输入以空格分隔的9个整数数,要求按从小到大的顺序输入。

第二行输入一个整数

输出

从小到大输出这10个数,每个数一行。

样例输入 Copy

1 11 21 31 41 51 61 71 81
45

样例输出 Copy

1
11
21
31
41
45
51
61
71
81
#include<stdio.h>
int main()
{
    int a[10],i=0,t,n;
    while(i<9)
        {
            scanf("%d",&a[i]);
            i++;
        }
    scanf("%d",&n);
    for(i=0;i<10;i++)
        if(a[i]>n)
    {
        t=a[i];
        a[i]=n;
        n=t;
    }
    a[9]=n;
    for(i=0;i<10;i++)
    printf("%d\n",a[i]);
    return 0;
}

 

1193: 习题6-5 数组元素逆置

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 37  解决: 35  外部导入

 

提交状态讨论版

题目描述

将一个长度为10的整型数组中的值按逆序重新存放。

如:原来的顺序为1,2,3,4,5,6,7,8,9,0,要求改为0,9,8,7,6,5,4,3,2,1

输入

从键盘上输入以空格分隔的10个整数。

输出

按相反的顺序输出这10个数,每个数占一行。

样例输入 Copy

1 2 3 4 5 6 7 8 9 0

样例输出 Copy

0
9
8
7
6
5
4
3
2
1

 

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

1194: 习题6-6 杨辉三角

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 311  解决: 214  外部导入

 

提交状态讨论版

题目描述

按要求输出如下格式的杨辉三角 
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 
最多输出10层。 

输入

输入只包含一个正整数n,表示将要输出的杨辉三角的层数。

输出

对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开。

样例输入 Copy

5

样例输出 Copy

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

 

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

 

1195: 习题6-9 折半查找

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 91  解决: 38  外部导入

 

提交状态讨论版

题目描述

有10个整数已按从小到大的顺序排好序,存储在一个数组中,再输入一个数,要求用折半查找法找出该数是数组中的第几个元素(输出该元素的下标即可)。如果该数不在数组中,则输出"Not exist!"

输入

输入数据共2行

第一行10个整数,按从小到大的顺序输入,中间以空格分隔。

第二行1个整数

输出

折半查找所得该数所在数组中的元素下标,单独占一行。

若该数不存在,则输出一行信息 "Not exist!"

样例输入 Copy

1 2 3 4 5 6 7 8 9 10
3

样例输出 Copy

2

 

#include<stdio.h>
int main()
{
    int a[10],s,i;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
        scanf("%d",&s);
        for(i=0;i<10;i++)
        {
            if(a[i]==s)
                {printf("%d",i);break;}
            else
                if(i==9)
                printf("Not exist!");
        }
 
}

 

1196: 习题6-10 字符统计

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 47  解决: 30  外部导入

 

提交状态讨论版

题目描述

有一篇文章,共3行文字,每行不到80个字符。要求分别统计每行中字母、数字、空格以及其他字符的个数。

输入

从键盘上输入3行字符,每行不到80个字符。

输出

输出信息占3行

每行输出4个整数,分别表示该行字符中字母、数字、空格以及其他字符的个数,数字之间以空格分隔。

样例输入 Copy

I am a student!
I'm 18 years old.
One Two Three 1 2 3!@#

样例输出 Copy

11 0 3 1
10 2 3 2
11 3 5 3
#include<stdio.h>
int main()
{
    char a[3][80];
    int i,j;
    int keng=0,shu=0,other=0,zi=0;
    gets(a[0]);
    gets(a[1]);
    gets(a[2]);
    for(j=0;j<3;j++)
    {
    for(i=0;a[j][i]!='\0';i++)
        {if(a[j][i]==' ')
            keng++;
        else
            {
                if(a[j][i]>='0'&&a[j][i]<='9')
                   shu++;
               else if((a[j][i]>='a'&&a[j][i]<='z')||(a[j][i]>='A'&&a[j][i]<='Z'))
                      zi++;
                      else
                        other++;
                      }
 
 
    }
    printf("%d %d %d %d\n",zi,shu,keng,other);
    zi=0;shu=0;keng=0;other=0;
    }
}

 

1197: 习题6-12 解密

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 343  解决: 215  外部导入

 

提交状态讨论版

题目描述

有一行电文,已按如下规律译成密码:

A-->Z        a-->z

B-->Y        b-->y

C-->X        c-->x

......          ......

即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。

输入

输入一行密文

输出

解密后的原文,单独占一行。

样例输入 Copy

ZYX123zyx

样例输出 Copy

ABC123abc

 

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    int i,l;
    char a[100];
    gets(a);
    l=strlen(a);
    for(i=0;i<l;i++)
    {
        if(((int)a[i])>=65&&((int)a[i]<=90))
        a[i]=(char)(155-(int)a[i]);
        else
            if(((int)a[i])>=97&&((int)a[i]<=122))
            a[i]=(char)(219-(int)a[i]);
    }
    puts(a);
}

 

1198: 习题6-13 字符串比较

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 47  解决: 30  外部导入

 

提交状态讨论版

题目描述

比较两个字符串s1和s2的大小,如果s1>s2,则输出一个正数;若s1=s2,则输出0;若s1<s2,则输出一个负数。

要求:不用strcpy函数;两个字符串用gets函数读入。

例如:"A"与"C"相比,由于"A"<"C",应输出负数,同时由于"A"与"C"的ASCII码差值为2,因此应输出"-2"。

同理:"And"和"Aid"比较,根据第2个字符比较的结果,"n"比"i"大5,因此应该输出"5"

输入

输入2行字符串

输出

一个整数,表示这两个字符串 比较的差值,单独占一行。

样例输入 Copy

And
Aid

样例输出 Copy

5
#include<stdio.h>
#include<string.h>
int main()
{
    int i,num;
    char s1[20],s2[20];
    gets(s1);
    gets(s2);
    if(strlen(s1)==strlen(s2))
    {
        for(i=0;;i++)
            if(s1[i]!=s2[i])
            break;
    }
    num=(int)s1[i]-(int)s2[i];
    printf("%d",num);
}

 

1199: 例题6-1 逆序输出数组元素

 

时间限制: 1 Sec  内存限制: 12 MB

 

 

提交: 46  解决: 34  外部导入

 

提交状态讨论版

题目描述

从键盘上输入10个整数,存储在一个长度为10的整型数组中,要求将输入的10个数逆序输出。

如输入为:0,1,2,3,4,5,6,7,8,9 输出为9,8,7,6,5,4,3,2,1,0

 

输入

10个整数,以空格分隔

输出

将输入的10个整数逆序输出,每个数占一行。

样例输入 Copy

0 1 2 3 4 5 6 7 8 9

样例输出 Copy

9
8
7
6
5
4
3
2
1
0
#include<stdio.h>
int main()
{
    int a[10],i;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=9;i>=0;i--)
        printf("%d\n",a[i]);
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章