iT邦幫忙

0

C++語言 要怎麼把印出來的num[i] 2,3,5,6,8變成一個數字235678

  • 分享至 

  • xImage

以下是我打的程式碼
印出來是2,3,6,8,9
要怎麼把它變成23689一個數字
問題是這樣

請输入不按大小順序的五個個位教,請用排序的方法(例如:氣
泡排序、選擇排序)
排出最大的数與最小的数相減,最後輸出計
算過程及結果。
輸入:1-9-5-8-64
輸出:98651-15689=829624

#include

using namespace std;

int main()
{
int num[10];
int n;
int i,j,tmp,tmp1;

cin>>n;
for(i=0;i<n;i++){
    cin>>num[i];
}

for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){


    if(num[i]>num[j]){
        tmp=num[i];
        num[i]=num[j];
        num[j]=tmp;
    }
}
}
for(i=0;i<n;++i){
        cout<<num[i]<<"";
}
cout<<endl;
int a=num[i];
cout<<a<<endl;
for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
        if(num[i]<num[j]){
            tmp1=num[i];
            num[i]=num[j];
            num[j]=tmp1;

        }
    }
}
for(i=0;i<n;++i){
    cout<<num[i]<<"";
}
cout<<endl;
int b=num[i];
cout<<b<<endl;
return 0;

}

怎應有要幫忙做功課的感覺?
23689=2*10000+3*1000+6*100+8*10+9*1
小魚 iT邦大師 1 級 ‧ 2022-03-09 08:04:42 檢舉
98651是怎麼來的?
98651-15689=829624 是我數學不好嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0

利用跑迴圈的方式
計算每個數字的值

值 = 數字 * 10的(陣列長度-1-該數字在至陣列第幾位)次方

並全部相加即可(最後一位是數字*10的0次方=1)

2
海綿寶寶
iT邦大神 1 級 ‧ 2022-03-09 10:05:41

其實程式已經完成大部份了
而且排序也只要做一次即可
由陣列轉成數字時用陣列索引值轉成10的次方數即可

試做結果如下
https://ithelp.ithome.com.tw/upload/images/20220309/20001787bo51b1EMg0.png

0
krarm
iT邦好手 1 級 ‧ 2022-03-09 10:57:58

第一個作業就寫成這樣
你要不要趕快去退選
不要聽到新聞說現在資訊夯
就一窩蜂地跑來修程式
你學那一點基礎也不能幹嘛
而且還是不穩固的基礎

0
小幫手
iT邦新手 5 級 ‧ 2022-12-21 11:02:12

#include <stdio.h>

int main(int argc, char *argv[]) {

int num2[5];
int num3[5];
int a1,a2,a3,a4,a5;
int b1,b2,b3,b4,b5;
int b,c,c1,d,d1;
int i,j,k;
int i_0,j_0,i_1,j_1;

a1 = 0;
a2 = 0;
a3 = 0;
a4 = 0;
a5 = 0;

b = 0;
c = 0;
c1 = 0;

printf("\n請輸入您的數字 0 至 9:\n");

for(i=0; i<=4; i++){
	
printf("\n第%d次輸入數字:",i);

if(i==0){
scanf("%d",&a1);
}
if(i==1){
scanf("%d",&a2);
}
if(i==2){
scanf("%d",&a3);
}
if(i==3){
scanf("%d",&a4);
}
if(i==4){
scanf("%d",&a5);
}
} 

b1 = a1;
b2 = a2;
b3 = a3;
b4 = a4;
b5 = a5;

num2[0] = a1;
num2[1] = a2;
num2[2] = a3;
num2[3] = a4;
num2[4] = a5;

num3[0] = b1;
num3[1] = b2;
num3[2] = b3;
num3[3] = b4;
num3[4] = b5;

for(j=0; j<=4; j++){

for(i_0=0; i_0<=j; i_0++){
	for(j_0=(i_0+1); j_0<=j; j_0++){
		
		if(num2[i_0] < num2[j_0]){
			c = num2[i_0];
			num2[i_0] = num2[j_0];
			num2[j_0] = c;
		}
	}
}
}
for(k=0; k<=4; k++){

for(i_1=0; i_1<=k; i_1++){
	for(j_1=(i_1+1); j_1<=k; j_1++){
		
		if(num3[i_1] > num3[j_1]){
			c1 = num3[i_1];
			num3[i_1] = num3[j_1];
			num3[j_1] = c1;
		}
	}
}
}

d1 = (((num3[0])*10000)+((num3[1])*1000)+((num3[2])*100)+((num3[3])*10)+((num3[4])));
d = (((num2[0])*10000)+((num2[1])*1000)+((num2[2])*100)+((num2[3])*10)+((num2[4])));
	
printf("\n您第一次輸入的數字為:%d",a1);
printf("\n您第二次輸入的數字為:%d",a2);
printf("\n您第三次輸入的數字為:%d",a3);
printf("\n您第四次輸入的數字為:%d",a4);
printf("\n您第五次輸入的數字為:%d",a5);
	
b = d - d1;

printf("\n\n整理的數值最大值 %d 減去 最小值 %d:%d\n\n",d,d1,b);

system("PAUSE");
return 0;

}

程式碼可參考一下,感恩。

我要發表回答

立即登入回答