此博客給的是譚浩強先生《C程序設計第四版》課程中遇到的問題(不含課後答案)
第二章 算法----程序的靈魂
算法+數據結構=程序
例題2.1:求
C實現
#include<stdio.h>
int main()
{
int i=2, p=1;
while (i<=5)
{
p = p*i;
i++;
}
printf("answer=%d\n", p);
return 0;
}
python版本
ans = 1
for i in range(1,6):
ans*=i
print('answer = ',ans)
例題2.2 有50個學生,要求輸出成績在80分以上到學生的學號和成績
由於學生人數較多,故只取五個學生作爲參考
python代碼:
import numpy as np
import xlrd #讀取Excel文件
workbook = xlrd.open_workbook('C:/users/lenovo/desktop/student_score.xlsx')
sheet = workbook.sheet_by_name('Sheet1')
data_name = sheet.col_values(0)
data_st_ID = sheet.col_values(1)
data_st_score = sheet.col_values(2)
n = data_st_ID #學號
g = data_st_score #分數
itera = len(data_name) #人數
for i in range(1,itera):
if g[i] >= 80:
print('學號是:%d,分數是:%.2f'%(n[i],g[i]))
例題2.3 判斷2000-2500年中的每一年是否是閏年,並將結果輸出
leap_year = []
for year in range(2000,2501):
if year%4 == 0:
if year%100 != 0:
leap_year.append(year)
elif year%400 == 0:
leap_year.append(year)
elif year%400 == 0:
leap_year.append(year)
上面的程序可以通過布爾算符表示如下:
leap_year = []
for year in range(2000,2501):
if (year%4 == 0 and year%100 != 0) or (year%400 == 0):
leap_year.append(year)
C++/C程序
#include<stdio.h>
int main()
{
int year;
year = 2000;
while (year <= 2500)
{
if (year % 4 == 0)
if (year % 100 != 0)
printf("%d是閏年", year);
else
if (year % 400 == 0)
printf("%d是閏年", year);
year += 1;
}
return 0;
}
通過布爾算符改爲:
#include<stdio.h>
int main()
{
int year;
year = 2000;
while (year <= 2500)
{
if ((year % 4 == 0 && year % 100 != 0) || (year%400==0))
printf("%d是閏年", year);
year += 1;
}
return 0;
}
例題2.4 求.
python代碼
sum = 1
sign = 1
for i in range(2,101):
sign *= (-1)
sum+=sign/i
print(sum)
C++/C代碼
#include<stdio.h>
int main()
{
int sign=1;
double sum_ans = 1, i = 2.0;
while (i <= 100)
{
sign = (-1)*sign;
sum_ans = sum_ans + sign / i;
i=i+1;
}
printf("%f\n", sum_ans);
return 0;
}
C++和C相比python比較坑的是,一定要聲明sum_ans和i爲double,否則結果是1,有時候忘記這個,那麼就等着哭泣吧。