C语言经典100例(Python版本)036-040
'''
【程序36】
题目:求100之内的素数
1.程序分析:
2.程序源代码:
'''
from math import sqrt
if __name__ == '__main__':
N = 100
a = range(0,N)
for i in range(2,int(sqrt(N))):
for j in range(i + 1,N):
if (a != 0) and (a[j] != 0):
if a[j] % a == 0:
a[j] = 0
print
for i in range(2,N):
if a != 0:
print "%5d" % a
if (i - 2) % 10 == 0:
print
'''
【程序37】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
下次类推,即用第二个元素与后8个进行比较,并进行交换。
2.程序源代码:
'''
if __name__ == "__main__":
N = 10
# input data
print 'please input ten num:\n'
l = []
for i in range(N):
l.append(int(raw_input('input a number:\n')))
print
for i in range(N):
print l
print
# sort ten num
for i in range(N - 1):
min = i
for j in range(i + 1,N):
if l[min] > l[j]:min = j
l,l[min] = l[min],l
print 'after sorted'
for i in range(N):
print l
'''
【程序38】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
2.程序源代码:
'''
if __name__ == '__main__':
a = []
sum = 0.0
for i in range(3):
a.append([])
for j in range(3):
a.append(float(raw_input("input num:\n")))
for i in range(3):
sum += a
print sum
'''
【程序39】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
此元素之后的数,依次后移一个位置。
2.程序源代码:
'''
if __name__ == '__main__':
# 方法一
a = [1,4,6,9,13,16,19,28,40,100,0]
print 'original list is:'
for i in range(len(a)):
print a
number = int(raw_input("insert a new number:\n"))
end = a[9]
if number > end:
a[10] = number
else:
for i in range(10):
if a > number:
temp1 = a
a = number
for j in range(i + 1,11):
temp2 = a[j]
a[j] = temp1
temp1 = temp2
break
for i in range(11):
print a
# 方法二
# insrt another number
number = int(raw_input('input a number:\n'))
if number > a[len(a) - 1]:
a.append(number)
else:
for i in range(len(a)):
if a > number:
a.insert(i,number)
print a
'''
【程序40】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
2.程序源代码:
'''
if __name__ == '__main__':
a = [9,6,5,4,1]
N = len(a)
print a
for i in range(len(a) / 2):
a,a[N - i - 1] = a[N - i - 1],a
print a