亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    《C語(yǔ)言實(shí)驗(yàn)指導(dǎo)》實(shí)驗(yàn)六 一維數(shù)組

    實(shí)驗(yàn)六 一維數(shù)組

    【目的與要求】

    1.掌握一維數(shù)組的定義、賦值和輸入輸出的方法;

    2.掌握字符數(shù)組的使用;

    3.掌握與數(shù)組有關(guān)的算法(例如排序算法)。

    【上機(jī)內(nèi)容】

    【一般示例】

    【例1】在鍵盤(pán)上輸入N個(gè)整數(shù),試編制程序使該數(shù)組中的數(shù)按照從大到小的次序排列。

    分析:C中數(shù)組長(zhǎng)度必須是確定大小,即指定N的值。排序的方法有多種,我們?nèi)〕銎渲袃煞N作為參考。

    方法一:起泡排序

    從第一個(gè)數(shù)開(kāi)始依次對(duì)相鄰兩數(shù)進(jìn)行比較,如次序?qū)t不做任何操作;如次序不對(duì)則使這兩個(gè)數(shù)交換位置。第一遍的(N-1)次比較后,最大的數(shù)已放在最后,第二遍只需考慮(N-1)個(gè)數(shù),以此類推直到第(N-1)遍比較后就可以完成排序。

    源程序如下:

    #define N 10

    #include”stdio.h”

    main()

    {

    int a[N],i,j,temp;

    printf(“please input %d numbersn”,N);

    for(i=0;i<N;i++)

    scanf(“%d”,&a[i]);

    for(i=0;i<N-1;i++)

    for(j=0;j<N-1-i;j++)

    {

    if(a[j]>a[j+1])

    {

    temp=a[j];

    a[j]=a[j+1];

    a[j+1]=temp;

    }

    }

    printf(“the array after sort:n”);

    for(i=0;i<N;i++)

    printf(“%5d”,a[i]);

    }

    方法二:選擇排序

    首先找出值最小的數(shù),然后把這個(gè)數(shù)與第一個(gè)數(shù)交換,這樣值最小的數(shù)就放到了第一個(gè)位置;然后,在從剩下的數(shù)中找值最小的,把它和第二個(gè)數(shù)互換,使得第二小的數(shù)放在第二個(gè)位置上。以此類推,直到所有的值從小到大的順序排列為止。

    #include”stdio.h”

    #define N 10

    main()

    {

    int a[N],i,j,r,temp;

    printf(“please input %d numbersn”,N);

    for(i=0;i<N;i++)

    scanf(“%d”,&a[i]);

    for(i=0;i<N-1;i++)

    { r=i;

    for(j=i+1;j<N;j++)

    if(a[j]<a[r])

    r=j;

    if(r!=i)

    {

    temp=a[r];

    a[r]=a[i];

    a[i]=temp;

    }

    }

    printf(“the array after sort:n”);

    for(i=0;i<N;i++)

    printf(“%5d”,a[i]);

    printf(“n”);

    }

    【例2】青年歌手參加歌曲大獎(jiǎng)賽,有10個(gè)評(píng)委對(duì)她的進(jìn)行打分,試編程求這位選手的平均得分(去掉一個(gè)最高分和一個(gè)最低分)。

    分析:這道題的核心是排序。將評(píng)委所打的10個(gè)分?jǐn)?shù)利用數(shù)組按增序(或降序)排列,計(jì)算數(shù)組中除第一個(gè)和最后一個(gè)分?jǐn)?shù)以外的數(shù)的平均分,其中排序部分這里用選擇法實(shí)現(xiàn)。

    main()

    {int i,j,min;

    float temp,ave=0;

    float a[11];

    printf(“n輸入評(píng)委所打的分?jǐn)?shù):n”);

    for(i=1;i<=10;i++)

    scanf(“%f”,&a[i]);

    for(i=1;i<=9;i++)

    {min=i;

    for(j=i+1;j<=10;j++)

    if(a[min]>a[j])

    min=j;

    temp=a[i];

    a[i]=a[min];

    a[min]=temp;

    }

    for(i=2;i<=9;i++) /*注意i值的變化范圍*/

    ave=ave+a[i];

    printf(“選手所得最后分?jǐn)?shù):%6.1f”,ave/8);

    printf(“n”);

    }

    【例3】輸入一串字符,計(jì)算其中空格的個(gè)數(shù)。

    #include <stdio.h>

    main( )

    {char c[30];

    int i,sum=0;

    gets(c);

    for(i=0;i<strlen(c);i++)

    if(c[i]==’ ‘)

    sum=sum+1;

    printf(“空格數(shù)為:%d n”,sum);

    }

    【作業(yè)】

    1. 已有一個(gè)已排好序的數(shù)組,今輸入一個(gè)數(shù),要求按原來(lái)排序的規(guī)律將它插入數(shù)組中。

    2. 將一個(gè)數(shù)組中的值按逆序重新存放。例如,原來(lái)順序?yàn)?,6,5,4,1。要求改為1,4,5,6,8。

    3. 有15個(gè)數(shù)按由小到大順序存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù),要求用折半查找法找出該數(shù)是數(shù)組中第幾個(gè)元素的值。如果該數(shù)不在數(shù)組中,則打印出“無(wú)此數(shù)”。

    4. 編一程序,將兩個(gè)字符串連接起來(lái),不要用strcat函數(shù)。

     

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)