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,後面的類推。你往桶裡放東西是先沉入底部,拿出來時肯定你是從頂部依次拿出,棧 原理類似這樣 先進後出 望採納! 棧是一種資料結構,存取資料時後進...