c語言數組插隊問題,插隊問題C語言

本文目錄一覽:

c語言程序:插隊問題:有一個10個人的隊伍,他們的身高分別為:1.73,1.75,1.7

#includestdio.h

int main()

{

float x=1.82,a[10]={1.73,1.75,1.78,1.84,1.88,1.89,1.90};

int i,j,n=7;

for(i=n-1;i=0a[i]x;i–)

a[i+1]=a[i];

a[i+1]=x;

n++;

for(i=0;in;i++)

printf(“%.2f “,a[i]);

printf(“\n”);

return 0;

}

c語言程序:插隊問題?

#include stdio.h

int main()

{

  float a[11] = {

      1.73,1.75,1.78,1.81,1.84,1.87,1.88,1.88,1.89,1.90

  };

  float b = 1.82;

  int i;

  for(i = 9; i = 0; –i) {

      if(a[i] b) a[i+1] = a[i];

      else break;

  }

  a[i+1] = b;

  for(i=0;i11;++i) printf(“%.2f “, a[i]);

}

急求插隊問題的C語言描述

這題真麻煩,終於寫完了。

我得思路是這樣的,這道題其實就是維護2個隊列。

我把每個組的人當成一個人,而這些人排隊就可以看成組與組之間的排隊,這是第一個隊列,也就是gqueue

然後每個組也都是一個隊列,裡面順序排著每個組的人。

描述完成了,然後就是進隊出隊的問題了。

進隊時首先查看自己所在的組有沒有在gqueue中,team_in數組保存了每個組在gqueue中的位置,當然一開始都是-1,表示沒有入隊。如果自己的組在gqueue中,那麼就直接加入自己所在組的隊列中。如果沒有自己的組,就讓他所代表的組入gqueue。

出隊時出gqueue中第一個組的第一個人,判斷一下這個組是不是沒有人了,要是沒有人了就把這個組dequeue。

大概思路就是這樣,還有要注意的就是我用h_table存儲哈西表,代表著每個人所在的組的編號,這樣把人名shash以下就可以知道他所處的組。

#include stdio.h

#include string.h

struct person

{

        char name[ 5 ];

        int team;

};

struct pqueue //組內隊列

{

        person p[ 1001 ];

        int head, tail;

};

struct gqueue //組隊列

{

        pqueue pq[ 1001 ];

        int head, tail;

};

int n, h_table[ 100000 ], team_in[ 1001 ];

gqueue q;

void p_enqueue ( person a, pqueue q )

{

        q.p[ q.tail ] = a;

        q.tail++;

        if ( q.tail == 1001 )

                q.tail = 0;

}

void g_enqueue ( person a, gqueue q )

{

        if ( team_in[ a.team ] != -1 )

                p_enqueue( a, q.pq[ team_in[ a.team ] ] );

        else

        {

                q.pq[ q.tail ].head = 0;

                q.pq[ q.tail ].tail = 0;

                team_in[ a.team ] = q.tail;

                p_enqueue( a, q.pq[ q.tail ] );

                q.tail++;

                if ( q.tail == 1001 )

                        q.tail = 0;

        }

}

void p_dequeue( pqueue q )

{

        printf(“%s\n”, q.p[ q.head ].name );

        q.head++;

        if ( q.head == 1001 )

                q.head = 0;

}

person g_dequeue( gqueue q )

{

        int t = q.pq[ q.head ].p[ q.pq[ q.head ].head ].team;

        p_dequeue( q.pq[ q.head ] );

        if ( q.pq[ q.head ].tail == q.pq[ q.head ].head )

        {

                team_in[ t ] = -1;

                q.head++;

                if ( q.head == 1001 )

                        q.head = 0;

        }

}

int shash( char *key )

{

        unsigned long h = 0;

        while( *key )

        {

                h = ( h  4 ) + *key++;

                unsigned long g = h  0Xf0000000L;

                if ( g ) h ^= g  24;

                h = ~g;

        }

        return h % 100000;

}

void init( )

{

        int i, j, t;

        person per;;

        for ( i = 0; i  n; i++ )

        {

                team_in[ i ] = -1;

                scanf(“%d”, t);

                for ( j = 0; j  t; j++ )

                {

                        scanf(“%s”, per.name);

                        per.team = i;

                        h_table[ shash( per.name ) ] = i;

                }

        }

        q.head = q.tail = 0;

}

void work( )

{

        char command[ 10 ];

        person per;

        while ( scanf(“%s”, command) != EOF )

        {

                if ( strcmp( command, “STOP” ) == 0 )

                        break;

                if ( strcmp( command, “DEQUEUE” ) == 0 )

                        g_dequeue( q );

                if ( strcmp( command, “ENQUEUE” ) == 0 )

                {

                        scanf(“%s”, per.name);

                        per.team = h_table[ shash( per.name ) ];

                        g_enqueue( per, q );

                }

        }

}

int main( )

{

        freopen(“input.txt”, “r”, stdin);

        freopen(“output.txt”, “w”, stdout);

        int time = 1;

        while ( scanf(“%d”, n) != EOF  n )

        {

                printf(“Scenario #%d\n”, time++);

                init( );

                work( );

        }

        return 0;

}

C語言排隊插隊問題以數字代表人數。例如輸入12534,5插隊了就輸出數字1;654321,就是65432插隊了,輸出5

5插隊了幹嘛輸出1,還有654321就是65432插隊輸出5,你想幹嘛呀,說都說不清

C語言,用數組實現隊列的入隊,出隊函數編程

這樣的話應該符合你的要求:

#includestdio.h

void add(int queue[],int x);

int Top(int queue[]);

void del(int queue[]);

int end=0;

int main()

{

 int n;

 scanf(“%d”,n);//將要入隊列n個元素

 int queue[1000];

 for(int i=1;i=n;i++)//輸入n個元素

 {

  add(queue,i);//將i加入隊列

 }

 //驗證加入隊列的元素,將隊列中的元素按照輸入的順序輸出:

 for( i=1;i=n;i++)

 {

  printf(“%d “,Top(queue));//Top函數返回隊頭元素

  del(queue);//刪除隊頭元素

 }

 //驗證輸出已經出隊列後的隊列(數組)元素:

 printf(“\n”);

 for(i=1;i=n;i++)

  printf(“%d “,queue[i]);

 printf(“\n”);

 return 0;

}

void add(int queue[],int x)

{

    queue[++end]=x;

}

int Top(int queue[])

{

    return queue[1];//注意,這裡的函數始終return queue[1];這裡是和將普通數組中的元素輸出最大的不同之處。!!!!!!

}

void del(int queue[])

{

    for(int i=2;i=end;i++)

 {

  queue[i-1]=queue[i];

 }

 queue=0;//將刪除後的地方置0

 end–;

}

C語言模擬排隊編程,急求完整答案

這個題有夠無聊的,

不過這明顯是個基礎教學用PPT,是幫助理解的案例,不是用來考人的,

那這些模擬數字應該都是直接寫入的吧:

//state1

int q[10];

//state2

q[0] = 9;

q[1] = 5;

q[2] = 2;

q[3] = 7;

//state3

q[4] = 6;

q[5] = 4;

//state4

for(int i = 0;i 4;i++){q[i] = q[i+2];}

q[4] = 0;q[5] = 0;

//state5

for(int i = 4;i = 3;i–){q[i] = q[i-1];}

q[4] = 3;

//state6

int k;

for(int i = 0;i = 4;i++){if(q[i] == 3){k = i;break;}}

//state7

for(int i = k;i 4;i++){q[i] = q[i+1];}

q[4] = 0;

//state8

for(int i = 0;i 4;i++){coutq[i];}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301065.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 14:19
下一篇 2024-12-29 14:19

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29

發表回復

登錄後才能評論