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;
}

 

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