哪位大佬能幫看看這道c語言,C語言求助,哪位大佬幫我看看這道題?一直搞不清楚

時間 2021-10-14 22:40:00

1樓:自我程式設計

按題意,既利用指標將b中每個元素按照升序插入到a陣列對應位置。

思路:a,b都是預設輸入升序的數(題目沒要求驗證,我的**也不驗證,請按升序輸入,如需驗證升序輸入,只需定義一個變數記錄輸入的數字,並在下次迴圈輸入時比大小。)

所以,定義2個指標分別指向a,b最後一個輸入的元素地址,巢狀迴圈,分別往前移動,同時比較兩陣列元素,每次找到對應位置就將a移位並插入b的位置。

ps:由於存在b小於a的所有元素這種特殊情況,迴圈外還有a陣列全部後移的情況。故位移寫成單獨函式,符合程式設計習慣。

下面是**:

#include

void move1(int *bp,int a,int len)//從bp開始往後移動1位

int *ep=&a[len-1];

if(bp>=a && bp<=ep)

while(ep>bp)//a當前元素之後的元素向後移1位

*ep=*(ep-1);

ep--;

int main()

while(m>47) printf("請輸入m值(>=47):"),scanf("%d",&m);

printf("請給a陣列輸入%d個整數(確保升序排列,輸入無驗證!):\n",m);

i=m;

printf("請給b陣列輸入3個整數(確保升序排列,輸入無驗證

while(pb>=b)//從b最大數開始

pa=&a[m-1];//初始指向a最大數

while(pa>=a)//從a最大數開始

flag=0;

if(*pa<=*pb)//找到第一個a小於等於b,就把b元素插入到a元素後面(a移位)

flag=1;

move1(pa+1,a,50);//a當前元素之後的元素向後移1位

*(pa+1)=*pb;

break;

pa--;

if(!flag)//如未發生位移,說明該b元素小於所有a元素,插入再a陣列開始位置,a所有元素後移1位

move1(a,a,50),a[0]=*pb;

pb--;

pa=a;

printf("合併後的a陣列為:\n");

while(pa<

return 0;

2樓:匿名使用者

簡單粗暴思路:直接將b陣列的數字放到a陣列m到m+2位置,然後對長度m+3的a陣列進行排序。

#include "stdafx.h"

#include

using namespace std;

void swap(int*p, int*q);

int main()

int a[50], b[3],m;

int *p, *q;

p = a;

q = b;

cout << "m:";

cin >>m;

cout <<"a:";

for (int i = 0; i < m; i++)cin >> *(p+i);

cout  << "b:";

for (int i = 0; i < 3; i++)cin >>*(q+i);

*(p+m+i)=*(q+i);

for (int i = 0; i < m + 3; i++)cout << *(p + i)<<" ";

cout << endl;

for (int i = 0; i < m + 3; i++)for (int j = 0; j < m + 3 - i; j++)

if (*(p + i) > *(p + i + j))swap(p + i, p + i + j);

for (int i = 0; i < m + 3; i++)cout << *(p + i)<<" ";

cout << endl;

system("pause");

return 0;

void swap(int*p, int*q)int temp;

temp = *p;

*p = *q;

*q = temp;

c語言求助,哪位大佬幫我看看這道題?一直搞不清楚 50

3樓:匿名使用者

#include

#include

#include

#define m 3

file *fp;

char filename[50] = ;

typedef struct message *linklist,*pnode;

void readdata(pnode p) {printf("\t姓 名 : ");

scanf("%s",p->name);

printf("\t**號碼 : ");

scanf("%s",p->telephone);

printf("\t郵箱

4樓:匿名使用者

你要問什麼?

通訊錄用結構體儲存資料,下面的操作用指標或者乾脆建構函式做都可以啊。

看起來好像沒難點

5樓:

然後sort排序

**隨後就到.......[大概一小時,請等待]**來了~~~

------------------------------------

#include

using namespace std;

struct txl

{string xm="無";//姓名

string xb="無";//性別

string nl="無";//年齡

6樓:可愛的小狗是我

這是一道c語言的增刪改查的連結串列操作操作的典型題目,同時考察對結構體的理解程度。最簡單的就是使用順序連結串列做。

哪個大佬能幫我看下c語言的這道題嗎

7樓:丿艾瑞灬莉婭

#include

int main()

else if( rate < 2800 )else}return 0;}

哪位大佬能幫我看一下這個c語言哪錯了

8樓:

把fp=fopen("stuinfo.dat", "rb");改為fp=fopen("studinfo.dat", "rb");或把fp=fopen("studinfo.

dat","wb");改為fp=fopen("stuinfo.dat","wb");——這是主要問題

在後加一句fclose(fp);——這提倡的完善寫法。

為檢測讀出到底是否正確,應該另設一變數較好。

各位c語言大佬幫忙看一下這個程式**有問題?

9樓:gta小雞

字串字面值常量不可以修改。而字元陣列可以修改。

養成將字串字面值常量宣告為const的好習慣,可以避免你犯這樣的錯誤,因為試圖修改會在編譯時就報錯。

const char *from="i love china";  // 字串字面值常量不可以修改,宣告為const

char from="i love china";  //字元陣列可以修改

10樓:匿名使用者

你的**在vc++6.0中可以執行;在vs2017中提示要加const,估計與c11標準有關

求大佬幫我看看這個c語言****出錯了?

11樓:匿名使用者

這裡的關鍵是判斷找沒找到的條件是什麼,需要增加1個變數來計數,**如下:

#include

int main()

if(count==0) // count為0即一個都沒找到printf("a陣列中沒有找到%d\n",x);}

12樓:匿名使用者

#include

int main()

c語言,哪位大佬能幫我解釋一下這題目是怎麼算出來的

13樓:聽不清啊

13)null是定義的常量,其值為0,選d14)0x02就是2,<<2是左移2位,相當於乘以2^2,所以輸出值8,選c

15)f2('k')的值為2(因為case'k':k++;的後面沒有break;所以繼續執行下一行的k++排印再break),f2('y')的值為1(執行default:k++;),故選b

16)f3(10)的值為-1(因為j不斷自減,當j==-1時就退出迴圈,然後返回-1)所以選a

14樓:璐人釔

null就是0嘛

0x02左移兩位,左移一位相當於乘以2,所以0x02乘以4,就是8嘛『k』分支沒有break;會繼續執行到『x』分支,所以是2嘛,『y』進入的是defualt,所以是1嘛

當j變成0的時候,迴圈就結束了,退出迴圈的時候還會執行一下j--,就是-1嘛

程式設計高手來看看這道題,各位c語言大神來看看這道程式設計題!!

每次必須同時移動相鄰的兩個棋子,顏色不限,可以左移也可以右移。移動時,必須跳過若干個棋子.那同時移動2個白圈,移動2次不就成了?不知題目是這意思不?program tu var a array 1.60 of char i,n,x,y integer procedure change j,k int...

哪位高手幫忙看看這個c語言程式點執行就停止執行了

kiss小欣欣 樓主錯誤好多哦,其中執行報錯的那個是因為maxgongyue裡for迴圈的i的取值問題,i是不能取0的 因為分母不能為0 要從i 2開始迴圈。include main int maxgongyue int a,int b return c int mingongbei int a,i...

哪位大神幫我看看這個C語言的題那個「棧」是什麼意思啊

1 d c b a 2 3 4 5 棧,就像一個桶子,將5放進去,就到了最底下,依次4321堆在上一個的上面,然後退棧就從最上面依次拿出,順序就為12345,後面的類推。你往桶裡放東西是先沉入底部,拿出來時肯定你是從頂部依次拿出,棧 原理類似這樣 先進後出 望採納! 棧是一種資料結構,存取資料時後進...