『壹』 turboc2.0 把輸入的十個整數按正負數分開後分別按從小到大的順序列印出來
#include<stdio.h> #include<stdlib.h> void main() { //i,j用於循環,temp用於排序時交換,input[10]用於存儲輸入的原始數據,a[10]正數數組,b[10]負數數組,c存儲輸入的正數數量,d存儲輸入的負數數量 int i,j,temp,input[10],a[10],b[10],*pa=a,*pb=b,c=0,d=0; printf("Please input 10 integers:\n"); for(i=0;i<10;i++) scanf("%d",&input[i]); for(i=0;i<10;i++){ if(input[i]>0){*pa++=input[i];c++;} else {*pb++=input[i];d++;} } //以下兩個循環將未賦值的數組元素賦值0 for(i=c;i<10;i++)a[i]=0; for(j=d;j<10;j++)b[j]=0; //以下兩個for循環將存儲的正負數數組元素按從小到大排序 for(i=0;i<9;i++) for(j=i+1;j<10;j++){ if(a[i]>a[j]){ temp=a[i];a[i]=a[j];a[j]=temp;} if(b[i]>b[j]){ temp=b[i];b[i]=b[j];b[j]=temp;} } printf("正數從小到大排序結果:\n"); for(i=0;i<10;i++)if(a[i]!=0)printf("%d\叢賀t",a[i]); printf("\n負數從小到大排序結果:\n"); for(i=0;i<10;i++)if(b[i]!=0)printf("%d\t",b[i]); printf("\n"); system("pause"); } 補充: 太晚了,沒時間認真寫了。代碼質量不好,但功能是實現了,VC6.0測試正常運行,沒滲橡派使用特殊函數,TC下如旅應該也能正常運行。 追問: 正負數分行怎麼辦? 回答: 正負數分行?什麼意思? 追問: 結果是 -1 -2 1 2 。。。。 回答: 呃!現在顯示結果就是那樣啊,分行顯示啊 補充: 你是說在一行顯示,先顯示負數,後顯示正數?
『貳』 python中如何統計出列表的正負數總數,如s=【1,5,-7】,如何求出的結果是正數有2個,負數
可以使用簡潔的列表推導式
x鄭肆=[1,5,-7]
printsum([int(xi>0)forxiin喊手轎x])#正數
printsum([int(xi<0)forxiinx])#負薯指數
『叄』 用python寫,從鍵盤輸入非0整數,以輸入0為輸入結束標志,求平均值,統計正數負數個數
1、打開IDLE編前大旁程環境。
『肆』 【python】數組中絕對值最小的數
題目:有一個升序的數組,數組中可能有正數、負數或者0,求數組中元素的絕對值最小的數。例如,數組[-10, -5, -2, 7, 15, 50],該數組中絕對值最小的數是-2。
分析:二分法。該題可分為以下三種情況:
(1)如果數組第一個元素為非負數,那麼minNum = arr[0]
(2)如果數組最後一個值為負數,那麼minNum = arr[-1]。
(3)如果數組中既有正數又有負數,首先找到正數與負數的分界點,如果分界點恰好為0,那麼0為最小值。否則通過比較分界點左右的正數與負數的絕對值來確定最小數。
如何查找正數與負數的分界點呢?採用二分法,主要思路:取數組中間位置的值a[mid],並將它與0值比較,比較結果分為如下三種情況:
(1)如果a[mid] == 0,那麼這個數就是絕對值最小的數。
(2)如果a[mid] > 0,a[mid - 1] < 0,那麼通過比較a[mid]與a[mid - 1]的絕對值就可以找到數組中絕對值最小的數;如果a[mid - 1] == 0, 那麼a[mid - 1]就是要找的數;否則接著在數組的左半部分查找。
(3)如果a[mid] < 0,a[mid + 1] > 0,那麼通過比較a[mid]與a[mid +1]的絕對值就可以找到數組中絕對值最小的數;如果a[mid + 1] == 0, 那麼a[mid + 1]就是要找的數;否則接著在數組的右半部分查找。
code:
def findMinNum(arr):
if arr is None or len(arr) <= 0:
return
# [1] 數組中沒有負數
if arr[0] >= 0:
return arr[0]
# [2] 數組中沒有正數
if arr[-1] <= 0:
return arr[-1]
# [3] 數組中既有正數又又負數
mid = None
absMin = None
begin = 0
end = len(arr) - 1
while begin < end:
mid = begin + (end - begin) >> 1
# 如果arr[mid] == 0,則是絕對值最小的數
if arr[mid] == 0:
return 0
# 如果大於0, 正負數的分界點在左側
elif arr[mid] > 0:
# 繼續在數組的左半部分查找
if arr[mid - 1] > 0:
end = mid - 1
elif arr[mid - 1] == 0:
return 0
# 找到正負數的分界點
else:
break # 如果小於0, 在數組右半部分查找
else:
# 在數組的右半部分繼續查找
if arr[mid + 1] < 0:
begin = mid + 1
elif arr[mid + 1] == 0:
return 0
else:
break
# 獲取正負數分界點處絕對值最小的值
if (arr[mid] > 0):
if arr[mid] < abs(arr[mid - 1]):
absMin = arr[mid]
else:
absMin = arr[mid - 1]
else:
if abs(arr[mid]) < abs(arr[mid + 1]):
absMin = arr[mid]
else:
absMin = arr[mid + 1]
return absMin
if __name__ == "__main__":
arr = [-10, -5, -2, 7, 15, 50]
print(findMinNum(arr))
『伍』 一個整數集合(任意n個數),包含正負數,對其進行排序使負數排在正數前面,要求不改變原來的相對順序
#include<stdio.h>
main()
{int n,i,j,t,a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=0;j<n-i;j++)
if(a[j]>0&&a[j+1]<0)
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
『陸』 匯編 正負數排列
; 題目名稱:隨機幾個正負數, 輸出要求是正數從大到小排列,負數從小到大排列
; 題目來源:http://..com/question/131775278.html
; 本程序在MASMPlus 1.2集成環境下通過編譯,經過調試,運行正確。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:在當前游標位置顯示一個字元
; 入口:dl=要顯示的字元
Output_Chr proc Near
push ax
mov ah,2
int 21h
pop ax
ret
Output_Chr Endp
; -------------------------------------
; 功能:把AX中的二進制有符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
; 入口:AX=二進制數
; 出口:在當前游標位置顯示轉換後的ASCII碼數字
Sign_Dec_ASCII Proc Near
push ds
push cs
pop ds
push cs
pop es
push dx
push bx
push di
test ah,80h
jz @@Tran_ASCII
neg ax
push ax
mov dl,'-'
mov ah,2
int 21h
pop ax
@@Tran_ASCII: mov bx,10
lea di,@@Temp_SaveS[5]
mov BYTE ptr [di],'$'
dec di
cld
@@Divide_S: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide_S
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
pop ds
ret
@@Temp_SaveS db 6 p(?)
Sign_Dec_ASCII EndP
; ----卜鉛---------------------------------
; 功能:冒泡排序法將數組元素升序或降序排序,顯示排序結果
; 入口參數:SI=數組地址(第一個元素存放元素個數),AL=排序方向
Bubbling_Sort proc Near
push si
mov BYTE ptr @@Compare[5],al ;修改排序方向
mov cl,[si] ;數據個數
xor ch,ch
dec cx ;外循環次數
inc si
cld
@@Scanning: push cx ;入棧保存外循環次數
push si ;入棧保存數組地址
@@Compare: mov di,si ;當前數組元素地址賦給目的變址寄存器,以備交換之用
lodsb ;將當前唯弊核數組元素讀入累加器
cmp al,[si] ;當前數組元素與相鄰的下一個數組元素相比較
jae @@NextOne ;若大於或等於,不作指掘數據交換,處理下一個數組元素
xchg al,[si] ;若小於,交換數組元素
stosb ;保存數值較小者
@@NextOne: loop @@Compare ;處理下一個數組元素
pop si ;數組地址出棧
pop cx ;外循環次數出棧
loop @@Scanning ;下一趟比較
mov cl,[si-1] ;數據個數
xor ch,ch
@@List_Scores: lodsb
cbw ;擴展為字
call Sign_Dec_ASCII ;把AX中的二進制有符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
mov dl,20h
call Output_Chr ;顯示一個空格
loop @@List_Scores
pop si
ret
Bubbling_Sort Endp
; -------------------------------------
Buffer db 23,-69,-89,35,-46,57,-68,79,-51,-81,98,-43,56,-67,123,-98,102,-87,-91,-100
Counter equ $-Buffer ;數據個數
Press_Key db 13,10,10,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es
xor dx,dx ;DH=正數數組元素計數器,DL=負數數組元素計數器
lea si,Buffer ;取數組變數地址
lea di,Tmp_Buffer[1] ;正數數組地址
mov bx,di
mov cx,Counter ;元素個數
add bx,cx
inc bx ;負數數組地址
cld
@@Statics: lodsb ;讀入一個元素
test al,80h ;正數?
jz $+9 ;是
inc dl ;負數計數
mov [bx],al ;保存負數
inc bx
jmp $+5
inc dh ;是,正數計數
stosb ;保存正數
loop @@Statics
lea si,Tmp_Buffer ;正數數組地址
mov [si],dh ;保存正數數組元素個數
mov [si][21],dl ;保存負數數組元素個數
mov al,73h ;排序方向代碼:降序
call Bubbling_Sort ;排序並顯示
mov ax,0e0dh
xor bx,bx
int 10h
mov al,10
int 10h
int 10h
add si,21 ;負數數組地址
mov al,76h ;排序方向代碼:升序
call Bubbling_Sort ;排序並顯示
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意鍵結束程序
mov ah,1
int 21h
mov ah,4ch ;結束程序
int 21h
Tmp_Buffer: ;數據緩沖區
Code ENDS
END Start ;編譯到此結束
『柒』 用python輸入一個浮點數,討論該數為正數和負數兩種情況下絕對值的演算法
在Python中,我們可以使用內置的abs()函數來求浮點數的絕對值。但如果您希望了解正數和負數兩種情況下的演算法,我們可以分別討論。
首先,讓我們創建一個簡單的輸入,要求用戶輸入一個浮點數,並將其存儲在一個變數中:
pythonCopy codenumber = float(input("請輸入一個浮點數:"))
接下來,我們可以根據輸入的浮點數是正數還是負數來計算其絕對值。
當輸入的浮點數為正數時,絕對值等於該數本身。算遲困談法如下:
當輸入的浮點數為負數時,絕對值等於該數的相反數。演算法如下:
將上述代碼整合在一起,完整的Python程序如下:
此程序將接收用戶輸入的浮點數,判斷其正尺納負,然後計算其絕對值,並將結果輸出到屏幕上。
『捌』 python之序列
Python 中的序列是一塊可存放多個值的連續內存空間,所有值按一定順序排列,每個值所在位置都有一個編號,稱其為索引,我們可以通過索引訪問其對應值。
其實字元串就是序列結構,除此之外常見的序列結構還包括列表、元組等。
序列索引支持非負數和負數, 索引為非負數弊改,從 0 開始 ,如下所示:
以字元串為例,如下所示:
輸出結果租老判:
從結果來看,我們使用非負數索引與負數索引得到的結果一致。
切片操作可以訪問一定范圍內的元素,語法如下所示:
以字元串為例,如下所示:
輸出結果:
Python 支持類型相同的序列使用 + 作相加操作,該操作不會去除重復的元素。以字元串為例,如下所示:
輸出結果:
Python 中,使用數字 n 乘以一個序列會生成新的序列,內容為原來序列被重復 n 次的結果。以字元串為例,如下所示:
輸出結果:
Python 使用 in 關鍵字檢查某元素是否為序列的成員,語法如下:
val in seq
以字元串為例,如下所示:
輸出結果:
True
2.6 內置函數
len()—— 計算序列的長度
max()——找出序列中的最大元素
min()——找出序列中的最小元素
list() ——將序列轉換含檔為列表
str() ——將序列轉換為字元串
sum()——計算元素的和
sorted()——對元素進行排序
enumerate()——將序列組合為一個索引序列,多用在 for 循環中
舉例,如下所示:
輸出結果:
『玖』 EXCEL表格中既有負數又有正數,如何才能正確排列數值
EXCEL表格中既有負數又有正數,使用排序功能即可簡單實現排序。納叢
方法步驟如下:
1、打開需要操作的EXCEL表格,選中需要排序的相關數據。
『拾』 Python求s=1-2!+3!-4!…-10!
以漏帶下是 Python 代碼,用於計算 s=1-2!+3!-4!…-10! 的值:
```
def factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result
s = 0
for i in range(1, 11):
sign = (-1) ** (i + 1)
s += sign * factorial(i)
print("s的值為:", s)
```
在上述程序中,我們定義了一個名為 `factorial` 的函數,用於計算給定數字的階乘。然後,我們使用循環遍歷返襪蘆 1 到 10 之間的所有數字,並在每次迭代中計算當前數字的階乘。好戚接下來,我們使用 `-1` 的冪次方來判斷當前項的正負號,並將其加到 `s` 變數中。
最後,我們輸出 `s` 變數的值作為結果。