‘壹’ 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` 变量的值作为结果。