其實這個篇章放在這裡有點小晚了,一直覺得好像單獨放成一篇有點哪裡不對,本來想說因為不是必要的一個語法,但對於寫程式來說又有一定的重要性。
所以想了想還是要介紹一下,不過就當成番外篇來放吧!
要說到什麼重要什麼不重要,我們來提一下程式設計中重要的原則有什麼:
e.g. 比如說我們今天要寫一個程式,先輸入一個數字,然後我們要列印出所有小於它的質數,並重複兩次。
(1) 如果是這樣子放兩次程式碼是很冗長的。
#include <stdio.h>
int is_prime(int);
int main()
{
int input_num = 0;
//第一次輸入
scanf("%d", &input_num);
//判斷輸入的整數是否大於1,否則重新輸入
while(input_num<2){
scanf("%d", &input_num);
}
//開始處理
for(int i=2; i<=input_num; i++){
//回傳1就是質數,要列印出來
if(is_prime(i)==1){
printf("%d ", i);
}
}
printf("\n==========\n");
//第二次輸入
scanf("%d", &input_num);
//判斷輸入的整數是否大於1,否則重新輸入
while(input_num<2){
scanf("%d", &input_num);
}
//開始處理
for(int i=2; i<=input_num; i++){
//回傳1就是質數,要列印出來
if(is_prime(i)==1){
printf("%d ", i);
}
}
return 0;
}
int is_prime(int num){
//判斷狀態
int k=0;
for(int i=2; i<num; i++){
//可被整除的話,則不是質數
if(num%i==0){
k=1;
break;
}
}
//k=0時,是質數
if(k==0){
return 1;
}
//k=1時,不是質數
else{
return 0;
}
}
(2) 但我們可以透過迴圈來替代重複次數,減少多餘的重複程式碼
#include <stdio.h>
int is_prime(int);
int main()
{
int input_num = 0;
for(int t=0; t<2; t++){
scanf("%d", &input_num);
//判斷輸入的整數是否大於1,否則重新輸入
while(input_num<2){
scanf("%d", &input_num);
}
//開始處理
for(int i=2; i<=input_num; i++){
//回傳1就是質數,要列印出來
if(is_prime(i)==1){
printf("%d ", i);
}
}
printf("\n==========\n");
}
return 0;
}
int is_prime(int num){
//判斷狀態
int k=0;
for(int i=2; i<num; i++){
//可被整除的話,則不是質數
if(num%i==0){
k=1;
break;
}
}
//k=0時,是質數
if(k==0){
return 1;
}
//k=1時,不是質數
else{
return 0;
}
}
#include <stdio.h>
int is_prime(int);
int main()
{
int input_num = 0;
scanf("%d", &input_num);
//判斷輸入的整數是否大於1,否則重新輸入
while(input_num<2){
scanf("%d", &input_num);
}
//依序使用迴圈跑小於或等於輸入整數之數,並判斷是否質數、要不要列印
for(int i=2; i<=input_num; i++){
//回傳1就是質數,要列印出來
if(is_prime(i)==1){
printf("%d ", i);
}
}
return 0;
}
int is_prime(int num){
//判斷狀態
int k=0;
for(int i=2; i<num; i++){
//可被整除的話,則不是質數
if(num%i==0){
k=1;
break;
}
}
//k=0時,是質數回傳1
if(k==0){
return 1;
}
//k=1時,不是質數回傳0
else{
return 0;
}
}
像是以下就是判斷質數的函式
int is_prime(int num){
//判斷狀態
int k=0;
for(int i=2; i<num; i++){
//可被整除的話,則不是質數
if(num%i==0){
k=1;
break;
}
}
//k=0時,是質數回傳1
if(k==0){
return 1;
}
//k=1時,不是質數回傳0
else{
return 0;
}
}
正確性
相信正確性是一個非常基礎的事情吧,如果連基本需求都有錯誤、做不到,這個程式可以說不需要存在了,甚至有時候一點誤差就會產生嚴重的後果,所以我們在寫程式時必須時時測試,並即時更正找到的bug。
執行效率
在進行程式設計時,我們需要注意程式的效率,可以注意演算法中提到的時間複雜度,越是能簡化次數,程式執行的效率越佳。
int is_prime(int num){
//判斷狀態
int k=0;
for(int i=2; i<=sqrt(num); i++){
//可被整除的話,則不是質數
if(num%i==0){
k=1;
break;
}
}
//k=0時,是質數回傳1
if(k==0){
return 1;
}
//k=1時,不是質數回傳0
else{
return 0;
}
}
語法 | 說明 |
---|---|
//單行註解 | 在註解的最左側加入「//」,就可以讓程式忽略它,不產生語法錯誤。 |
/多行註解/ | 使用包住「/* */」註解,就可以寫多行的註解了。 |
#include <stdio.h>
int main()
{
int input_num = 0;
/* 第一部分
輸入處理 */
scanf("%d", &input_num);
//判斷輸入的整數是否大於1,否則重新輸入
while(input_num<2){
scanf("%d", &input_num);
}
/* 第二部分
列印星星的部分 */
//行數
for(int i=1; i<=input_num; i++){
//單行星星數
for(int j=0; j<i; j++){
printf("*", i);
}
printf("\n");
}
return 0;
}