1. 程式人生 > >對於c語言程式與設計的理解

對於c語言程式與設計的理解

對於電腦科學與技術這個學科來說,c和c++還有java都是其重要的語言基礎,在大一剛開始兩個多月對於c的學習,其中神奇之處深深的吸引了我,獨特的編譯方式引起了我的好奇心,也激起我想要征服這個學科的信念。我寫下這篇部落格來記錄我認為c語言學習要點和易錯點。  首先最先需要接觸和學習的就是c語言的程式處理的資料有常量和變數兩種型別

常量的型別包括"整形常量"“字元型常量”“字串型別常量”等等。不同的型別常量也有不同的表達形式。例如單精度型別用float表示,雙精度用double表示。

        c語言中也包括了許多算數運算子如:一元運算子,二元運算子,三元運算子。整數除法和浮點數除法。自增運算子,自減運算子。還介紹了巨集常量和巨集替換。還有與其相似的const常量,都是定義一個常量來代表一個數。還有關於自動型別轉換與強制型別轉換符。

         在單個字元的輸入輸出中。字元常量是用單引號括起來的一個字元。字元的輸入輸出是需要引入ACSII的內容,需要藉助getchar()和putchar()來從終端鍵盤輸入和輸出。資料的格式化,常用於scanf和printf中用於表示資料型別的。常用的有%d表示十進位制整數,%c表示輸入一個字元,%f表示單精度型別,%lf表示雙精度型別。

        選擇控制結構中包括單分支,雙分支,多分支控制的條件語句。還有switch語句。

        迴圈控制結構中包括三種類型。for語句(當型迴圈結構),while語句(當型迴圈結構),do while語句(直到型迴圈結構)。for語句中包括初始化表示式。迴圈控制表示式,迴圈增值表示式。一直迴圈到不符合迴圈控制表示式,停止迴圈。while語句與do while語句區別是前者是先判斷再迴圈,後者是先迴圈再判斷。

我用我們第一個接觸的程式“Hello,world!”來介紹程式最基本的內容包括:

#include<iostream>

using namespace std;

int main()

{

      cout<<Hello,world!;

      return 0;

}

其中#include<iostream>尖括號裡面表示的是標頭檔案是一個程式最基礎的部分。

using nameapace std;表示所有的標準函式都在標準名稱空間std中進行了定義,以免發生了重名的問題。

int main()裡就是函式名

cout之後便是我們要輸出的內容。

不要忘記最後的return 0;用於停止程式。

在剛開始接觸c語言,我們這些小萌新們經常會犯一些不起眼的錯誤。接著來我來給大家介紹一下我自己覺得應該注意的地方和易錯點。

1  變數必須先定義後使用。

2  賦值運算子是將=右邊的表示式的值賦值給左邊表示式。

3  在定義變數的時候不能對多個變數進行連續賦初值。

4  求餘運算限定參與運算的兩個運算元必須為整數,不能對兩個實型資料進行求餘運算。

5   在printf和scanf中格式控制字串忘記加雙引號。

6   在scanf中忘記加取地址符。

7   if之後不能加分號。

8   if語句後的複合語句忘記花括號。

9   等號是==,=是賦值符。

10 在switch語句中 每一個case 分支後面缺少break語句。

11 while和for語句之後要加花括號。

12 while語句後不能加分號。

13 do while中while後忘記加分號。

14 要用分號分隔for語句中三個條件。

接下來給大家幾個易錯例題。

1  

郵件的重量和使用者是否選擇加急計算郵費。計算規則:重量在1000克以內(包括1000克), 基本費8元。超過1000克的部分,每500克加收超重費4元,不足500克部分按500克計算;如果使用者選擇加急,多收5元。

輸入

輸入一行,包含整數和一個字元,以一個空格分開,分別表示重量(單位為克)和是否加急。如果字元是y,說明選擇加急;如果字元是n,說明不加急。

輸出

輸出一行,包含一個整數,表示郵費

答案

#include<iostream>

#include<cmath>

#include<iomanip>

using namespace std;

int main()

{

int a,c;

char x;

c=8;

cin>>a>>x;

if(a<=1000)

{

if(x=='y')

cout<<13;

else

cout<<8;

}

if(a>1000)

{

a-=1000;

c=a/500*4+c;

if(x=='y')

c+=5;

if(a%500!=0)

{

c=c+4;

cout<<c<<endl;

}

if(a%500==0)

cout<<c;

}

}

其中包括了if else迴圈結構 還有自增運算子。也考差了做題人的思維緊密性。和對程式結構的瞭解。

2

金中食堂做的蛋糕總是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想請你再幫個忙,用電腦畫出用“*”號組成的裱花形狀,這將是個空心的菱形。

輸入

一個整數,n>0。

輸出

由n*2-1層“*”號組成的空心菱形

答案

#include<iostream>

using namespace std;

int main()

{

int n;

cin>>n;

for(int i=1;i<=2*n-1;i++)

{

for(int j=1;j<=2*n-1;j++)

if(i+j==n+1||i+j==3*n-1||i==j-n+1||j==i-n+1)

{

cout<<"*";

}

else

cout<<" ";

cout<<endl;

}

return 0;

}

這道題也是算是挺有難度的。需要也考慮每一條邊對應的關係式。也用上了迴圈巢狀結構。先考慮每個邊對i和j的表示式。也要考慮到n取不同值會不會出問題。

這些是我對這兩個月學習來總結的問題和注意點。如有不足,請老師同學們指出。