C程序設計

此博客給的是譚浩強先生《C程序設計第四版》課程中遇到的問題(不含課後答案)

第二章 算法----程序的靈魂

算法+數據結構=程序
例題2.1:求1×2×3×4×51\times2\times3\times4\times5

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年中的每一年是否是閏年,並將結果輸出
  • 1)python代碼
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 求112+1314+...11001-\frac{1}{2}+\frac{1}{3}-\frac{1}{4}+...-\frac{1}{100}.

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,有時候忘記這個,那麼就等着哭泣吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章