程式練習題 2

2021-10-10 03:20:28 字數 1596 閱讀 9204

考慮如下的序列生成演算法:從整數 n 開始,如果 n 是偶數,把它除以 2;如果 n 是奇數,把它乘 3 加1。用新得到的值重複上述步驟,直到 n = 1 時停止。例如,n = 22 時該演算法生成的序列是:22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1。人們猜想(沒有得到證明)對於任意整數 n,該演算法總能終止於 n = 1。這個猜想對於至少 1 000 000內的整數都是正確的。對於給定的 n,該序列的元素(包括 1)個數被稱為 n 的迴圈節長度。在上述例子中,22 的迴圈節長度為 16。輸入兩個數 i 和 j,你的任務是計算 i 到 j(包含 i 和 j)之間的整數中,迴圈節長度的最大值。

【輸入】輸入每行包含兩個整數 i 和 j。所有整數大於 0,小於 1000000。

【輸出】對於每對整數 i 和 j,按原來的順序輸出 i 和 j,然後輸出二者之間的整數中的最大迴圈節長度。這三個整數應該用單個空格隔開,且在同一行輸出。對於讀入的每一組資料,在輸出中應位於單獨的一行。

【輸入範例】

1 10

100 200

201 210

900 1000

【輸出範例】

1 10 20

100 200 125

201 210 89

900 1000 174

#include "stdio.h"

long int m = 0, c, a[4], b[4], l[4] = ;

void main()

void p()

void c()

for (; o <= b[m] - a[m]; o++)

else

}if (n > max)

n = 1;

} m++;

}

有n個瓶子,編號 1 ~ n,放在架子上。比如有5個編號瓶子:2 1 3 5 4。要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為:1 2 3 4 5。對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。

【輸入】 輸入格式為兩行:第一行: 乙個正整數n(n<10000), 表示瓶子的數目。第二行:n個正整數,用空格分開,表示瓶子目前的排列情況。

【輸出】輸出資料為一行乙個正整數,表示至少交換多少次,才能完成排序。

【輸入輸出範例】

例如,輸入:

53 1 2 5 4

程式應該輸出:

3再例如,輸入:

55 4 3 2 1

程式應該輸出:

2

#include "stdio.h"

void main()

/*else

}if(min<0)

min=min+a[k];

/*printf("%d ",min);bug*/

for(c=0;cif(min%a[c]!=0)

if(n==(n+1)*(n+1))

l++;

min=v;

} /*printf("%d ",n);bug*/

n=0;

} if(l!=0)

printf("%d",l);

}

程式練習題2 5

要求 疊加等邊三角形的繪製。使用turtle庫中的turtle.fd 函式和 turtle.seth 函式繪製乙個疊加等邊三角形。先看下我的 import turtle turtle.fd 250 turtle.seth 120 turtle.fd 250 turtle.seth 120 turtl...

練習題目2

1 將陣列a中的內容和陣列b中的內容進行交換 陣列一樣大 思路 新建乙個陣列作為中間陣列進行交換.如下 2 計算1 1 1 2 1 3 1 4 1 5 1 99 1 100的值.思路 通過每一輪迴圈給分子乘以 1來控制加數的正負號,計算出和.如下 3 編寫程式數一下1到199的所有整數 現過多少次數...

命令練習題2

1 為主機新增兩塊30gb的scsi硬碟 2 劃分3個主分割槽,各5gb,剩餘空間作為擴充套件分割槽 root localhost fdisk dev sdb 3 在擴充套件分割槽中建立2個邏輯分割槽,容量分別為2gb 10gb 4 將第乙個邏輯分割槽的型別改為swap 5 將第乙個主分割槽格式化為...