當前位置:首頁 » 編程語言 » c語言教程第1期
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言教程第1期

發布時間: 2022-11-26 10:04:21

c語言課程設計報告要求

一 、 設計題目

萬年歷的設計

二 、設計要求

1、能夠顯示星期;

2、能夠顯示年月日;

3、能夠修改;

4、當系統時間變動時,能自動跳到相應的時間。

三 、 設計目的

1. 通過本項課程設計,可以培養獨立思考、 綜合運用所學有關相應知識的能力,能更好的鞏固《C語言程序設計》課程學習的內容,掌握 工程軟體設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!更加了解了c語言的好處和其可用性!同時增加了同學之間的團隊合作精神!更加也體會到以後在工作中團隊合作的重要性和必要性!

2. 通過C語言課程設計,使學生了解高級程序設計語言的結構,掌握基本的程序設計過程和技巧,掌握基本的分析問題和利用計算機求解問題的能力,具備初步的高級語言程序設計能力。為後續各門計算機課程的學習和畢業設計打下堅實基礎。

四 、設計思想及過程

【一】由於萬年歷具有以下特點:

1。平年365天(52周+1天),閏年366天(52周+2天)。平年2月28天,閏年2月29天。

由於公元1月1日設為星期六,故3月1日為星期三。 ——注意這個「三」

為使演算法達到最簡,故本演算法以「星期」為計算單位。且選3月1日為基月。

2。每400年整一閏,或每4年且不為百年的一閏。(原因:地球繞太陽一周的時間是365天5小時46秒,為了使一年的天數為整數,將一年的天數定為365天,餘下的時間積累起來,四年就是23小時15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱為閏年,其它年稱為平年。但四年加一天又多用了44分56秒,這個數積滿400年為三天。因此400年中只能有97個閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。)

所以百年%4=0閏或(年%4=0並且年<>0)閏。

3。每 4年(3個平年+1個閏年)共208周+5天 ——注意這個「5天」

每百年共100*(208周+5天)-1天=5217周+5天 ——注意這個「5天」(整百年暫設為平年)

每400年共4*(5217周+5天)+1天(整400年閏)=20871周+0天——注意這個「0天」和

「1天」(4個整百年只有一個閏年)

即400年一輪回!(原來萬年歷400年前是一家)

【二】根據萬年歷以上特點進行編寫:

首先對萬年歷年、月、日進行編寫,編寫程序先定義每月的天數為28天,如月份為1、3、5、7、8、10、12就定義天數為31天反之如果月份為4、6、9、11就輸出天數為30天,由上可見2月份為28天但是如果為閏年就有29天就要定義另一個函數#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0當為閏年時可得1加上該程序便可得到每月的天數。 具體程序見(五、萬年歷程序)

再對其中的星期進行編寫:由於公元1月1日設為星期六,故3月1日為星期三,可以用萬年3月1日星期演算法(特別是那個三)

由於其公式為:

某年3月1日星期幾=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

某年3月1日星期幾=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

或 某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

閏4百年3月1日星期演算法(百年%4=0)

其公式為:

某年3月1日星期幾=(年+年/4+月星期表+日+2天)%7

例:0000年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

1600年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2000年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2001年3月1日星期幾=(1+1/4+0+1+2)%7=4%7=星期四

2004年3月1日星期幾=(4+4/4+0+1+2)%7=8%7=星期一

2008年3月1日星期幾=(8+8/4+0+1+2)%7=13%7=星期六

2042年3月1日星期幾=(42+42/4+0+1+2)%7=55%7=星期六

平4百年3月1日星期演算法(百年%4<>0)

其公式為:

某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

例:1700年3月1日星期幾=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)

1800年3月1日星期幾=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)

1900年3月1日星期幾=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)

1901年3月1日星期幾=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

1918年3月1日星期幾=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

1958年3月1日星期幾=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

1988年3月1日星期幾=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

1999年3月1日星期幾=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

2100年3月1日星期幾=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)

2101年3月1日星期幾=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

2102年3月1日星期幾=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

2103年3月1日星期幾=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

2104年3月1日星期幾=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是閏年)

9999年3月1日星期幾=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一

註:按400年一輪回!(400年前是一家)的說法

1600年,2000年是一樣的;

1700年,2100年是一樣的;

1800年,2200年是一樣的;

1900年,2300年是一樣的。

其中萬年某日星期演算法

其公式為:

某日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

通同星期偏差表

閏年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天數 31 29 31 30 31 30 31 31 30 31 30 31

星期 3 6 0 3 5 1 3 6 2 4 0 2

平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天數 31 28 31 30 31 30 31 31 30 31 30 31

星期 4 0 0 3 5 1 3 6 2 4 0 2

為對以上的萬年歷星期的演算法是正確的對其進行了以下的計算:

⒈對於二十世紀任意日期可以用公式某日星期幾=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根據上面對其進行的計算:

1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

1月表=4(平年) 故 4+4=1 即1900年元旦是星期一

1949年國慶 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

10月表=4(平年) 故 4+2=6 即1949年國慶是星期六

1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

12月表=2(平年) 故 2+3=5 即1999年12月31日是星期五

⒉對於二十一世紀新前年蟲演算法(20%4*5=0)可以用公式:某日星期幾=(百年%4*5天+年+年/4+閏年月星期表+日+2天)%7 =(20%4*5天+年+年/4+閏年月星期表+日+2天)%7以下就是根據上面對其進行的計算:

2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

1月表=3(閏年) 故 3+3->6 即2027年元旦是星期六

2018年春節 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

2月表=0(平年) 故 0+5=5 即2018年春節是星期五

2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

12月表=2(平年) 故 2+2=4 即2099年12月31日是星期四

對於上面的分析以及公式的推論和計算證明可以對萬年歷中的星期進行了編寫具體編寫程序見(五 、萬年歷程序)中。

五 、萬年歷源程序

#include"stdio.h"

#include"dos.h"

#include"conio.h"

#include"stdlib.h"

#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0 /*判斷閏年*/

int numofMonth(int y,int m){

int day,t=28;

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

day=31; /*定義以上月份為31天*/

else if(m==4||m==6||m==9||m==11)

day=30; /*定義以上月份為30天*/

else{t+=Year(y);

day=t;} /*閏年二月29天,平年28天*/

return day;}

int numofYear(int y){

int t=365; /*平年365天*/

t+=Year(y);/*閏年366天*/

return t;}

int numofbeforeDays(int y,int m,int d){

int sum=d,i;

for(i=1;i<m;i++)

sum+=numofMonth(y,i);

return sum;}

int numofafterDays(int y,int m,int d){

int sum=0,i;

for(i=m;i<=12;i++)

sum+=numofMonth(y,i);

sum-=d;

return sum;}

int isDay(int y,int m,int d){

int year=1900,month=1,week=1,i; /*定義萬年歷是從1900年開始*/

long sum=0;

for(i=year;i<y;i++)

sum+=numofYear(i);

for(i=1;i<m;i++)

sum+=numofMonth(y,i);

/* ++sum;*/

i=sum%7;

week=(week+i)%7;

return week;}

void empty(int n){

int i;

for(i=0;i<n;i++)

printf("%*c",6,' ');}

void OutPutCalender(int y,int m,int d)/*計算x年x月x是星期幾*/{

int week,i,num,t;

week=isDay(y,m,1);

printf("%6d/%02d/%02d\n",y,m,d);

printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");

empty(week);

num=numofMonth(y,m);

for(i=1;i<=num;i++){

printf("%6d",i);

t=(week+i)%7;

if(t==0)

printf("\n");} /*游標移到下一行*/

printf("\n");}

long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定義兩個不同日期*/{

int i;

long sum=0;

for(i=y1+1;i<y2;i++)

sum+=numofYear(i);

if(y1==y2){ sum-=d1;

for(i=m1;i<m2;i++)

sum+=numofMonth(y1,i);

sum+=d2;}

else{sum+=numofafterDays(y1,m1,d1);

sum+=numofbeforeDays(y2,m2,d2);}

return sum;}

int Select_mean(){

int sm;

printf("1. OutPut Calender\n"); /*輸出當前月份的日歷*/

printf("2. Help\n"); /*幫助*/

printf("0. Quit\n"); /*退出*/

printf("Please enter choose(0--2):"); /*從0-2中選擇*/

do

scanf("%d",&sm); /*輸入sm*/

while(sm<0||sm>3);

return sm;}

void Help()/*輸出幫助欄的內容*/{

printf(" 1. OutPut Calender\n");

printf(" 2. System Help\n");

printf(" 0. Quit\n");

printf("Page Up: Up year\n"); /*上一年*/

printf("Page Down: next year\n"); /*下一年*/

printf(" --> : next month\n"); /*上一月*/

printf(" <-- : Up month\n");/*下一月*/}

main(){

int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定義運行後的日期是2006年*/

int inkeySCAN,inkey; /*輸入鍵盤操作信息*/

union REGS inregs,outregs;

inregs.h.ah=0x2a;

intdos(&inregs,&outregs);

/* year=outregs.xcx; */

month=outregs.h.dh;

day=outregs.h.dl;

year1=year;

printf("%d/%02d/%02d\n",year,month,day);

while(1)/*當選擇為1時,執行以下語句*/{

switch(Select_mean()){

case 1:

OutPutCalender(year,month,day);

while(1){

inkey=bioskey(0);

inkeySCAN=(inkey&0xFF00)>>8;

if(inkeySCAN==77){

if(month==12){month=1;year1++;

OutPutCalender(year1,month,day);/*輸出日歷*/}

else{month++;

OutPutCalender(year1,month,day);

}}

if(inkeySCAN==75){

if(month==1){month=12;year1--;

OutPutCalender(year1,month,day);}

else{month--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==73){

if(year1==1900) year1=year;

else{year1--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==81){

year1++;OutPutCalender(year1,month,day);}

if(inkeySCAN==28)break;}

break; /*終止循環*/

case 2:

Help();

break;

case 0:

exit(0);

default:

printf("Enter ERROR!\n");

break;} }

}

六 運行過程

1.雙擊TC

1. 當對上面的程序進行了調試後運行會出現下面所示:

第一行所顯示的就是系統時間!滿足了第一條要求「顯示年、月、日」。

而當改變系統時間後!再運行該程序上面的日期也隨系統時間改變,所以滿足第四條「當系統時間變動時,能自動跳到相應的時間。」

2. 在游標處按下「1」後回車,將會顯示:

以上的顯示也證明了條件的第2條可以「顯示星期!」

3. 在游標處按下「2」後回車,將會顯示:

按著幫助所講進行了運行可知:按「 Page Up 」鍵其下面接著會顯示上一年該月的萬年歷,按「 Page Down 」鍵其下面會接著顯示下一年該月的萬年歷;按「 ← 」鍵下面將會接著顯示當年上一個月的萬年歷,按「 → 」鍵將會接著在下面顯示去下一個月的萬年歷。

4.

由上所顯示鍵入「0」後將會退去該程序。

由以上運行的結果可知該c語言所設計的萬年歷滿足設計要求!

七、在C語言編程中常見錯誤

C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查並不象其它高級語言那麼嚴格,這就給我們留下「靈活的餘地」,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對我們這些初學C語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看著有錯的程序,不知該如何改起,我通過這次編程,也積累了一些C編程時常犯的錯誤:

1. 書寫標識符時,忽略了大小寫字母的區別。
編譯程序把a和A認為是兩個不同的變數名,而顯示出錯信息。C語言認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。

2.忽略了變數的類型,進行了不合法的運算。
%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。

3.將字元常量與字元串常量混淆。
混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。C規定以「\」作字元串結束標志,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a'和『\',而把它賦給一個字元變數是不行的。

4.忽略了「=」與「==」的區別。
在C語言中,「=」是賦值運算符,「==」是關系運算符。如:
if (a==3) a=b;
前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。

5.忘記加分號。
分號是C語句中不可缺少的一部分,語句末尾必須有分號。
a=1 b=2
編譯時,編譯程序在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。
{ z=x+y;
t=z/100;
printf("%f",t);
}
對於復合語句來說,最後一個語句中最後的分號不能忽略不寫(這是和PASCAL不同的)。

6.多加分號。
對於一個復合語句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
復合語句的花括弧後不應再加分號,否則將會畫蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,則I加1。但由於if (a%3==0)後多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。
再如:
for (I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。

7.輸入變數時忘記加地址運算符「&」。
int a,b;
scanf("%d%d",a,b);
這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。「&a」指a在內存中的地址。

8.輸入數據的方式與要求不符。scanf("%d%d",&a,&b);輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:
3,4
輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。
scanf("%d,%d",&a,&b);C規定:如果在「格式控制」字元串中除了格式說明以外還有其它字元,則在輸入數據時應輸入與這些字元相同的字元。下面輸入是合法的:
3,4
此時不用逗號而用空格或其它字元是不對的。
3 4 3:4
又如:
scanf("a=%d,b=%d",&a,&b);
輸入應如以下形式:
a=3,b=4

9.輸入字元的格式與要求不一致。
在用「%c」格式輸入字元時,「空格字元」和「轉義字元」都作為有效字元輸入。
scanf("%c%c%c",&c1,&c2,&c3);
如輸入a b c
字元「a」送給c1,字元「 」送給c2,字元「b」送給c3,因為%c只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔。

10.輸入輸出的數據類型與所用格式說明符不一致。
例如,a已定義為整型,b定義為實型
a=3;b=4.5;
printf("%f%d\n",a,b);

語法錯
邏輯錯 運行錯
0.忘記定義變數:
main()
{x=3;y=6;
printf(「%d\n」,x+y);

11.C語言的變數一定要先定義才能使用;

12.輸入輸出的數據的類型與所用格式說明符不一致
int a=3;float b=4.5;printf(「%f%d\n」,a,b);
它們並不是按照賦值的規則進行轉換(如把4.5轉換為4),而是將數據在存儲單元中的形式按格式符的要求組織輸出(如b佔4個位元組,只把最後兩個位元組的數據按%d,作為整數輸出)

13.未注意int型數據的數值范圍
int型數據的數值范圍(-32768~32768)
int num=89101;
printf(「%d」,num);
會將超過低16位的數截去從而得到23563
注意:定義了long型,而在輸出時仍用」%d」說明符,仍會出現以上錯誤
14.輸入變數時忘記使用地址符
scanf(「%d%d」,a,b);
15.輸入時數據的組織與要求不符
對scanf函數中格式字元串中除了格式說明符外,對其他字元必須按原樣輸入
16.誤把」=「作為」等於」比較符
「=「為附值運算符
「==「為比較運算符
17.語句後面漏分號
{
t=a;
a=b;
b=t
}
它是pascal的語法
18.不該加分號的地方加了分號
if(a>b);
printf(「a is larger than b\n」);
for(i=0;i<10;i++);
{
scanf(「%d」,&x);
printf(「%d\n」,x*x);
}
19.對應該有花括弧的復合語句,忘記加花括弧
sum=0;
i=1;
while(i<=100)
sum=sum+1;
i++;
20.括弧不配對
while((c=getchar()!=『#』)

putchar(c);
11.在用標識時,忘記了大寫字母和小寫字母的區別
{
int a,b,c;
a=2;
b=3;
C=A+B;
printf(「%d+%d=%D」,A,B,C);
}
12.引用數組元素時誤用發圓括弧
{
int i,a(10);
for(i=0;i<10;i++)
scanf(「%d」,&a(i));
}
13.在定義數組時,將定義的」元素個數」誤認為是」可使用的最大下標值
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=1;i<=10;i++)
printf(「%d」,a[i]);
}
14.對二維或多維數組的定義和引用的方法不對
{
int a[5,4];

printf(「%d」,a[1+2,2+2]);

}
15.誤以為數組名代表數組中全部元素
{int a[4]={1,2,3,4};
printf(「%d%d%d%d」,a);
}
16.混淆字元數組與字元指針的區別
main()
{
char str[40];
str=「Computer and c」;
printf(「%s\n」,str);
}
17.在引用指針變數之前沒有對它賦予確定的值
{
char *p;
scanf(「%s」,p);
}
{
char *p,c[20];
p=c;
scanf(「%s」,p);
}
18.switch語句的各分支中漏寫 break語句
混淆字元和字元串的表示形式

char sex;
sex=「M」;

19.使用自加(++)和自減(--)運算符時出的錯誤
{
int *p,a[5]={1,3,5,7,9};
p=a;
printf(「%d」,*p++);
}
注意於*(++p)的區別;
20.所調用的函數在調用語句之後才定義,而又在調用前未加說明
main()
{float x,y,z;
x=3.5;y=-7.6;
z=max(x,y);
printf(「%f」,z);
}
編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。

八、心得體會

1. 目前流行的計算機日歷程序,比較典型的是Windows各版本中的日歷程序以及基礎於該程序所開發的各種應用程序中的日歷程序。然而,這些程序都千篇一律的局限在一個很短的時間范圍內。(Windows各個版本一般都局限在1980年至2099年這一范圍內),但是,在很多情況下,特別是在眾多的科學研究領域中,一個時間跨度較大的日歷程序是很有參考價值的。C程序設計語言充分發揮了其自身無與倫比的優越性,用極短的程序文本填補了這一領域的空白,同時用鐵的事實強有力的告訴世人:C程序設計語言作為計算機語言家族的新生事物,其發展前景是極為廣闊的。

2. 經過上一個學期對《C程序設計》的學習,我們學習了理論知識,了解了C語言程序設計的思想,這些知識都為我們的下一步學習打下了堅實的基礎。通過課程設計,一方面是為了檢查我們一個學期來我們學習的成果,另一方面也是為了讓我們進一步的掌握和運用它,同時也讓我們認清自己的不足之處和薄弱環節,加以彌補和加強。

3. 通過對c語言萬年歷的設計進一步的鞏固了用c語言編寫程序,並且有利於更好的掌握c語言!

4. 在萬年歷的編寫過程中也體會到了做事情一頂要細心、認真。更加知道了要掌握好基礎知識。還有體會到了成功的感覺!在萬年歷的設計過程中更加體會到了團隊合作的重要性,「一個諸葛亮比不上三個臭皮匠。」知道了只有團隊合作才會更好的完成設計!也體會到以後在工作中團隊合作的必要性和重要性!

5. 通過本項課程設計也培養了我獨立思考、 綜合運用所學有關相應知識的能力,掌握 工程軟體設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!

6. 由於C語言是近年在國內外得到迅速推廣應用的一種語言。C語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,既具有高級語言的優點,又具有低級語言的許多特點。通過這次的c語言程序設計更加了解了c語言的好處和其可用性!

7. 在這次課程設計中也知道了自己的動手能力不強有待進一部的提高!在設計過程中不能夠把書本上的知識與實踐相結合,這也就增加了設計不好該程序的想法!在設計過程中的一次次設計錯誤增加了我放棄的想法!不過經過大家的努力終於完成了課程設計!完成該程序後想起自己以前的每一次對自己失去信心,就覺得並不是在知識掌握上打敗了,而是自己對自己缺乏信心!只要自己對自己不失去信心相信就可以完成那些以前認為完成不了的事情!也讓我懂得了要想成功首先就必須有很強的自信心!懂得了自己以後要在做任何事情時都要自信!當自己都不相信自己能夠成功時還可能會獲得成功嗎?

8. 在C語言程序設計的過程中也知道了自己在以前的學習中有很大的不足導致在設計過程中出現了很多的問題,有些地方看不懂也不知道怎麼去設計,但是在設計過程中也學習了很多,掌握了自己以前沒有學好的知識,雖然一時可以掌握完以前沒有學好的知識,不過也給自己敲響了警鍾,在學習中不可以伏於表面,要想學好每一門課程都要踏踏實實,做什麼都不是給別人看的!都是要更好的掌握該門知識,提高自己的自身的修養,提高自己的能力!為以後的工作打下良好的知識基礎和技能基礎!

九、參考文獻

⒈譚浩強編著.C程序設計第二版〔M〕.北京:清華大學出版社,1999

⒉陳朔鷹,陳英編著.C語言趣味程序百例精解〔M〕.北京:北京理工大學出版社,1994

⒊電腦知識與技術學術交流版〔J〕2005.2 (備註:來自網路資源)

⒋Herbert Schildit著. 戴健鵬譯. C語言大全 (第二版)〔M〕.北京:電子工業出版社,1994

⒌譚浩強,張基溫,唐永炎編著. C語言程序設計教程.〔M〕北京: 高等教育出版社,1992

⒍秦友淑,曹化工編著. C語言程序設計教程. 〔M〕武漢:華中理工大學出版社,1996

⒎曹衍龍,林瑞仲,徐慧 編著.C語言實例解析精粹 〔M〕北京:人民郵電出版社,2005.3

⒏黃明等編著.21世紀進階輔導C語言程序設計. 〔M〕大連理工大學出版

㈡ 找點能看的c語言視頻教程

http://bbs.csai.cn/xch/from.asp?id=17&wh=aigozi
http://bbs.csai.cn/xch/from.asp?id=42&wh=aigozi
http://bbs.csai.cn/xch/from.asp?id=59&wh=aigozi
http://bbs.csai.cn/xch/from.asp?id=12&wh=aigozi

三級網路技術視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟三級網路技術考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=17&wh=aigozi
網路安全設備與技術視頻教程 介紹網路安全設備種類及工作原理、優缺點和典型應用。 http://bbs.csai.cn/xch/from.asp?id=42&wh=aigozi
項管、數工、網工、監理考友的福音:希賽圖書整體提供 為幫助廣大考友、網友順利通過考試,希賽共組編了近40本輔導用的數字圖書和紙版圖書,積淀了希賽多年的軟考輔導經驗。 http://bbs.csai.cn/xch/from.asp?id=59&wh=aigozi
資料庫系統工程師視頻教程 對近幾年的資料庫工程師考試中所有知識點進行了歸類分析和總結,並針對這些重點、難點進行了詳細的講解。 http://bbs.csai.cn/xch/from.asp?id=12&wh=aigozi
二級C語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟二級C考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=20&wh=aigozi
提交IT資料,就可獲得數千元人民幣! 希賽下載中心採取與用戶分享的方式,凡是提交資料的,只要有人下載,希賽就給提交者人民幣現金。下載的人越多,提交者就分得越多。一個資料可以獲得上萬的收入,還等什麼呢! http://bbs.csai.cn/xch/from.asp?id=55&wh=aigozi
全國計算機等級考試視頻教程 學習完教程後,就可以通過計算機等級考試。學賽網在線測試平台還可以進行在線測試。 http://bbs.csai.cn/xch/from.asp?id=8&wh=aigozi
希賽教育&瑞星網路安全工程師 本課程是由瑞星公司從事信息安全工作多年的專家、資深工程師及希賽教育高級講師,將其經驗加以總結、提煉,從網路安全的基礎知識到網路安全整體規劃進行了詳細剖析,在課程中介紹了大量的網路安全案例,幫助學員在掌握網路安全基礎知識的同時,快速掌握網路安全維護的實際應用技能;同時,本課程還特別介紹了網路安全相關計算機病毒防範和處理,使學員能深入了解計算機病毒知識,並掌握病毒防範和查殺技能。 http://bbs.csai.cn/xch/from.asp?id=2&wh=aigozi
Linux伺服器配置及命令講解視頻教程 Linux伺服器配置及命令講解與演示,包括伺服器配置,管理,網路操作,常用命令的講解和實際演示。 http://bbs.csai.cn/xch/from.asp?id=43&wh=aigozi
路由器和交換機配置命令講解與演示視頻教程 路由器和交換機配置命令講解與演示,包括交換機配置和命令的講解與演示,路由器的配置和命令的講解與實際演示。 http://bbs.csai.cn/xch/from.asp?id=44&wh=aigozi
如何一次通過全國計算機等級考試 希賽教育2008年計算機等級考試網上輔導,考試不及格者,退還所有學費。 http://bbs.csai.cn/xch/from.asp?id=4&wh=aigozi
網站規劃建設與管理維護視頻教程 介紹網站建設的全過程,包括准備物理網路,構建Intranet, Internet接入,網站規劃設計與建設,網站管理與維護,網站應用開發等。 http://bbs.csai.cn/xch/from.asp?id=45&wh=aigozi
自考資料庫系統原理視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=29&wh=aigozi
信息系統項目管理師視頻教程 本教程就考試中經常出現的一些問題進行了歸納和總結,壓縮了所有考試重點和難點知識。所總結的考試重點知識包括了(綜合知識、案例分析、論文)實際考試時除專業英語以外的95%以上的考試知識點,而這些知識點幾乎在每次考試中都會出現。 http://bbs.csai.cn/xch/from.asp?id=9&wh=aigozi
軟考視頻教程 根據最新的考試大綱,對考試中所有知識點進行了歸類分析和總結,挖掘出了其中的考試重點和難點,指出了考試的命題方向以及每個知識點在實際考試中所佔的分數比例。 http://bbs.csai.cn/xch/from.asp?id=7&wh=aigozi
知識管理視頻教程 使學員能全面了解知識管理的理論和體系,掌握知識管理規劃與實施的方法和技術。 http://bbs.csai.cn/xch/from.asp?id=40&wh=aigozi
自考離散數學視頻教程 涉及的主要內容有集合論、圖論、數理邏輯、代數系統、組合數學以及有限狀態自動機理論。 http://bbs.csai.cn/xch/from.asp?id=25&wh=aigozi
Microsoft .NET框架程序設計視頻教程 通過對.NET核心技術的講解,幫助學員了解.NET框架如何為眾多高級語言和應用程序模型提供各種服務。 http://bbs.csai.cn/xch/from.asp?id=46&wh=aigozi
自考面向對象程序設計(C++版)視頻教程 講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=35&wh=aigozi
資料庫系統工程師考試試題分類精解 根據最新的資料庫系統工程師考試大綱,對2004年11月至2007年11月的考試試題進行了分析和總結,對考試大綱規定的內容有重點地進行了細化和深化。 http://bbs.csai.cn/xch/from.asp?id=57&wh=aigozi
計算機專業英語視頻教程 由具有豐富教學經驗的教授講解,講解分11個部分,從不同方面精選了53篇英語短文,進行全方位的講解。 http://bbs.csai.cn/xch/from.asp?id=24&wh=aigozi
關於加入學賽網高職高專會員的邀請函 希賽顧問團下設有高職高專計算機教學指導委員會,以促進高職高專計算機教學改革,使之培養的人才更加符合企業的實際需求,實現企業和人才之間的無縫集成。免費在學賽網高職高專頻道發布會員單位詳細簡介、推薦2名優秀教師;會員單位的師生參加培訓和購買視頻,可享受超低優惠;為會員單位教師出版學術著作和教材提供資助... http://bbs.csai.cn/xch/from.asp?id=51&wh=aigozi
JAVA程序設計視頻教程 以Sun公司的J2SE 1.4.2為標准,詳細介紹了了面向對象編程的基本思想和方法;Java 2語言。 http://bbs.csai.cn/xch/from.asp?id=47&wh=aigozi
程序員視頻教程 對考生在備考過程中最易產生疑問的知識點以及考試中常考知識點進行了較深入的探討和總結,並配以例題進行詳細的解說,是備考的得力助手。 http://bbs.csai.cn/xch/from.asp?id=16&wh=aigozi
自考計算機原理與體系結構視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=30&wh=aigozi
二級JAVA語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟二級Java考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=23&wh=aigozi
二級C++語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟二級C++考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=21&wh=aigozi
系統分析師視頻教程 本視頻教程就考試中經常出現的一些問題進行了歸納和總結,壓縮了所有考試重點和難點知識。所總結的考試重點知識包括了(基礎知識、案例分析、論文)實際考試時除專業英語以外的90%以上的考試知識點,而這些知識點幾乎在每次考試中都會出現。 http://bbs.csai.cn/xch/from.asp?id=10&wh=aigozi
如何獲得瑞星網路安全工程師 通過瑞星網路安全認證考試的學員(學習課程2個月後,在學賽網遠程測試平台進行測試),可以獲得由瑞星公司頒發的《網路安全工程師》認證。 http://bbs.csai.cn/xch/from.asp?id=36&wh=aigozi
自考計算機組裝與維護視頻教程 主要介紹微型計算機組成原理及其組裝與維護技術。 http://bbs.csai.cn/xch/from.asp?id=28&wh=aigozi
網路工程師視頻教程 由工作在軟考第一線的專家根據歷年來的考試輔導、閱卷、教材編寫的經驗,總結考生復習中的弱點、難點、疑點編寫而成。 http://bbs.csai.cn/xch/from.asp?id=11&wh=aigozi
企業無線網路解決方案集 該專題涵蓋:無線知識,解決方案和成功案例、用戶調查、產品對比、無線網路學術論文、相關下載、廠商名錄等內容。為用戶了解無線網路提供了便利,為企業選擇無線網路方案以及相關產品提供了參考,得到了網友的好評。 http://bbs.csai.cn/xch/from.asp?id=60&wh=aigozi
IT項目管理視頻教程 根據PMBOK2004知識體系,結合我國IT項目建設和管理的實際情況,對信息系統項目管理所涉及的知識領域進行了詳細的講解。 http://bbs.csai.cn/xch/from.asp?id=37&wh=aigozi
自考C語言程序設計視頻教程 幫助學習者能更好的理解、掌握相關知識點,內容涵蓋了計算機專業《C語言程序設計》課程的所有知識點。 http://bbs.csai.cn/xch/from.asp?id=32&wh=aigozi
軟體設計師視頻教程 由全國著名的軟體工程專家張友生與資深軟考輔導專家王勇主編和講解,其最大的特色是採取以「考點為中心,有取有舍」的講課。 http://bbs.csai.cn/xch/from.asp?id=13&wh=aigozi
二級Access資料庫視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟二級Access考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=22&wh=aigozi
如何快捷通過計算機自考? 希賽教育2008年計算機專業全國高等教育自考輔導,考試不及格者,退還所有學費! http://bbs.csai.cn/xch/from.asp?id=5&wh=aigozi
二級Visual FoxPro語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟二級Visual FoxPro考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=18&wh=aigozi
軟體配置管理視頻教程 學習完本教程,學員將能使用CVS和VSS工具進行軟體版本控制。 http://bbs.csai.cn/xch/from.asp?id=48&wh=aigozi
UML建模實踐視頻教程 其涉及的主要內容有UML相關概念的講解、UML的類元、UML的關系介紹、以及UML的九種圖的講解。 http://bbs.csai.cn/xch/from.asp?id=49&wh=aigozi
跟蹤最新的IT技術-《IT人員新技術寶典叢書》 希賽為了讓讀者能跟蹤計算機領域各方面的新技術、新知識,確定單位自己的發展方向,特組編了《IT人員新技術寶典叢書》 http://bbs.csai.cn/xch/from.asp?id=58&wh=aigozi
自考區域網組網技術視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=27&wh=aigozi
網路管理員培訓教程 由工作在軟考第一線的專家根據歷年來的考試輔導、閱卷、教材編寫的經驗,總結考生復習中的弱點、難點、疑點編寫而成。 http://bbs.csai.cn/xch/from.asp?id=15&wh=aigozi
免費獲取希賽幣下載希賽視頻方法 通過此方法,可以獲取希賽幣來下載希賽視頻 http://bbs.csai.cn/xch/from.asp?id=56&wh=aigozi
未出校園,年收入10萬,好工作趕緊搶! 只要您有能力,就點擊進入。每個省/直轄市只招一個,每個地區/地級市只招1個,每所大學只招1個。要快啊! http://bbs.csai.cn/xch/from.asp?id=54&wh=aigozi
計算機專業全國高等教育自學考試視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=6&wh=aigozi
數據倉庫與數據挖掘視頻教程 講述了數據倉庫(DW)和數據挖掘(DM)的基本方法,基本原理,重點說明這些方法的主要思想和技術。 http://bbs.csai.cn/xch/from.asp?id=39&wh=aigozi
自考網路操作系統安全管理視頻教程 主要介紹了在主流UNIX、Linux和Windows 2000等網路操作系統環境中實現安全管理和系統。 http://bbs.csai.cn/xch/from.asp?id=34&wh=aigozi
信息系統監理師視頻教程 由具有豐富的信息系統建設與監理經驗的高級工程師講解,講解的過程中採用理論+實踐經驗+例題解答的方法講授。 http://bbs.csai.cn/xch/from.asp?id=14&wh=aigozi
希賽教育加盟策略及體系 希賽IT教育研發中心(以下簡稱為「希賽教育」)是希賽公司屬下的一個專門從事IT教育、教育產品開發、教育書籍編寫的部門,在IT教育方面具有極高的權威性。希賽教育在軟考、IT技術和管理、對日開發、企業培訓、計算機等級考試、計算機自學考試等方面取得了可喜的成績,希賽教育的遠程教育模式得到了國家教育部門的認可和推廣... http://bbs.csai.cn/xch/from.asp?id=53&wh=aigozi
二級Visual Basic語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕松、愉快地掌握知識點並領悟二級Visual Basic考試的真諦。 http://bbs.csai.cn/xch/from.asp?id=19&wh=aigozi
IT項目管理(高級篇)視頻教程 以軟體類、管理咨詢類或企業信息化等項目實例分析IT項目涉及的主要項目管理內容。 http://bbs.csai.cn/xch/from.asp?id=38&wh=aigozi
軟體開發過程改進視頻教程 通過本課程的學習可以使學員把握CMM的精髓,從而在具體的項目中實施CMM。 http://bbs.csai.cn/xch/from.asp?id=41&wh=aigozi
免費贈送計算機等級考試書籍 參加等考輔導、下載資料、購買視頻、參加在線測試可獲贈計算機等級考試書籍一本 http://bbs.csai.cn/xch/from.asp?id=61&wh=aigozi
希賽顧問團啟動全國大學生科技創業基金 學賽大學生科技創業基金是希賽顧問團資助型的「天使基金」,也是培育高新科技企業的「種子基金」,為擁有科技成果的高校學生提供成果轉化為產品和服務的平台,進一步落實科教興國的戰略,構建希賽顧問團扶持大學生科技創業的工作體系與服務平台。 http://bbs.csai.cn/xch/from.asp?id=50&wh=aigozi
關於加入學賽網培訓超市會員的邀請函 培訓超市是學賽網上一個專業的IT培訓信息發布和搜尋頻道,旨在為全國各地的IT類教育、培訓招生機構和各種類型的學習者提供一個高效、誠信的信息服務平台。為了能讓各培訓機構有更多推廣和宣傳的機會,學賽網根據IT培訓信息的特點,量身定做了不同的特色宣傳專欄,從機構的信譽管理、名師推薦、優秀作品展到學賽網特別推薦的品牌專區,內容豐富、全面,招生機構可以充分展示雄厚的師資力量,讓更多有需求學員放心選擇,而且這一切都是免費的... http://bbs.csai.cn/xch/from.asp?id=52&wh=aigozi
品希賽圖書,中電腦大獎,獲三重好禮 2007年12月7日至2008年2月7日期間,凡在希賽「數字出版」頻道中購買在線閱讀者,均有機會中筆記本大獎;按需印刷圖書累計滿400元或一次性購滿200元者,可贈送圖書一冊,任選。 http://bbs.csai.cn/xch/from.asp?id=3&wh=aigozi
自考互聯網的應用視頻教程 講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=33&wh=aigozi
如何快捷地獲得計算機高級工程師職稱? 希賽教育有5年的軟考輔導經驗,學員通過率在80%以上。命題專家在線答疑,權威的模擬試題,命中率極高。選擇希賽教育,輕輕鬆鬆拿高級職稱。 http://bbs.csai.cn/xch/from.asp?id=1&wh=aigozi
自考計算機網路基礎視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=31&wh=aigozi
自考數據結構與演算法視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 http://bbs.csai.cn/xch/from.asp?id=26&wh=aigozi

㈢ 跪求c語言程序教程,先上100,搞定追加。

千鋒Mars老師Java語言教程-2013年版,史上最牛java培訓視頻網路網盤免費資源在線學習

鏈接: https://pan..com/s/1115MNWjku3s1Wi2JHGecsw

提取碼: vwi9 千鋒Mars老師Java語言教程-2013年版,史上最牛java培訓視頻 千鋒-java語言教程-43_類集框架(三).mp4 千鋒-java語言教程-42_類集框架(二).mp4 千鋒-java語言教程-41_類集框架(一).mp4 千鋒-java語言教程-40_Java當中的數組.mp4 千鋒-java語言教程-39_深入同步語法.mp4 千鋒-java語言教程-38_Java當中的線程(三).mp4 千鋒-java語言教程-37_Java當中的線程(二).mp4 千鋒-java語言教程-36_Java當中的線程(一).mp4 千鋒-java語言教程-35_內部類和匿名內部類.mp4 千鋒-java語言教程-34_Java當中的IO(三).mp4 千鋒-java語言教程-33_Java當中的IO(二).mp4 千鋒-java語言教程-32_Java當中的IO(一).mp4 千鋒-java語言教程-31_Java當中的異常(二).mp4 千鋒-java語言教程-30_Java當中的異常(一).mp4

㈣ 大一C語言學習 要網上視頻教學的 希望提供鏈接

給你個自學網的啊把。。個人感覺挺好的啊。
http://www.enet.com.cn/eschool/zhuanti/shipin/cxsj.shtml

㈤ 如何學習c語言程序設計

C語言的基礎語法包括數據類型、運算符、表達式、數組、邏輯運算、函數、指針等。學習這些先買一本入門書籍,個人還是推薦經典的《C語言》,既然挺多大學選擇這本書作為教材,總歸有其合理之處吧。這本書對知識點的介紹都比較淺顯,但涵蓋面比較廣。邊學語法便敲案例,看著代碼在計算機上運行起來是不是也有點小激動。這樣便有了繼續學習下去的動力。

C語言深入的話推薦《c primer plus》,你會發現有些地方晦澀難懂,不要被疑問絆住腳步,浪費太多時間在細枝末節的地方。C語言只是你進入新世界的第一步而已,而編程的世界遠比你想像的更廣闊,更有意思。《c primer plus》更適合作為一本字典使用,放在電腦旁,方便隨時查閱。

㈥ c語言程序設計能力教程答案

1 【C語言】《C語言程序設計教程(第二版)》習題答案

說 明
1. 本文所指的《C語言程序設計教程(第二版)》是李鳳霞主編、北京理
工大學出版社出版的,綠皮。

2 第1章 程序設計基礎知識
一、單項選擇題(第23頁)
1-4.CBBC 5-8.DACA

二、填空題(第24頁)
1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環 9.演算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分

三、應用題(第24頁)
2.源程序:
main()
{int i,j,k; /* i:公雞數,j:母雞數,k:小雞數的1/3 */ <br>printf("cock hen chick\n"); <br>for(i=1;i<=20;i++) <br>for(j=1;j<=33;j++) <br>for(k=1;k<=33;k++) <br>if (i+j+k*3==100&&i*5+j*3+k==100) <br>printf(" %d %d %d\n",i,j,k*3);}
執行結果:
cock hen chick
4 18 78
8 11 81
12 4 84
3.現計算斐波那契數列的前20項。
遞推法 源程序:
main()
{long a,b;int i; <br>a=b=1; <br>for(i=1;i<=10;i++) /*要計算前30項,把10改為15。*/ <br>{printf("%8ld%8ld",a,b); <br>a=a+b;b=b+a;}}
遞歸法 源程序:
main()
{int i; <br>for(i=0;i<=19;i++) <br>printf("%8d",fib(i));}
fib(int i)
{return(i<=1?1:fib(i-1)+fib(i-2));}
執行結果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
4.源程序:
#include "math.h";
main()
{double x,x0,deltax; <br>x=1.5; <br>do {x0=pow(x+1,1./3); <br>deltax=fabs(x0-x); <br>x=x0; <br>}while(deltax>1e-12);
printf("%.10f\n",x);}
執行結果:
1.3247179572
5.源程序略。(分子、分母均構成斐波那契數列)
結果是32.66026079864
6.源程序:
main()
{int a,b,c,m; <br>printf("Please input a,b and c:"); <br>scanf("%d %d %d",&a,&b,&c); <br>if(a<b){m=a;a=b;b=m;}
if(a<c){m=a;a=c;c=m;}
if(b<c){m=b;b=c;c=m;}
printf("%d %d %d\n",a,b,c);}
執行結果:
Please input a,b and c:123 456 789
789 456 123
7.源程序:
main()
{int a; <br>scanf("%d",&a); <br>printf(a%21==0?"Yes":"No");}
執行結果:
42
Yes

3 第2章 C語言概述
一、單項選擇題(第34頁)
1-4.BDCB 5-8.AABC

二、填空題(第35頁)
1.主 2.C編譯系統 3.函數 函數 4.輸入輸出 5.頭 6. .OBJ 7.庫函數 8.文本

三、應用題(第36頁)
5.sizeof是關鍵字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是標識符。
8.源程序:
main()
{int a,b,c; <br>scanf("%d %d",&a,&b); <br>c=a;a=b;b=c; <br>printf("%d %d",a,b);}
執行結果:
12 34
34 12

4 第3章 數據類型與運算規則
一、單項選擇題(第75頁)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空題(第77頁)
1.補碼 2.±(10^-308~10^308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89

三、應用題(第78頁)
1.10 9
2.執行結果:
11
0
0
12
1

5 第4章 順序結構程序設計
一、單項選擇題(第90頁)
1-5.DCDAD 6-10.BACBB

二、填空題(第91頁)
1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200
j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種演算法不破壞b的值,也不用定義中間變數。)

三、編程題(第92頁)
1.仿照教材第27頁例2-1。
2.源程序:
main()
{int h,m; <br>scanf("%d:%d",&h,&m); <br>printf("%d\n",h*60+m);}
執行結果:
9:23
563
3.源程序:
main()
{int a[]={-10,0,15,34},i;
for(i=0;i<=3;i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}
執行結果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
4.源程序:
main()
{double pi=3.14159265358979,r=5; <br>printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}
執行結果:
r=5 A=31.4159265359 S=49.3480220054
5.源程序:
#include "math.h";
main()
{double a,b,c; <br>scanf("%lf%lf%lf",&a,&b,&c); <br>if (a+b>c&&a+c>b&&b+c>a) <br>{double s=(a+b+c)/2; <br>printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}
else printf("Data error!");}
執行結果:
4 5 6
SS=9.9215674165
6.源程序:
main()
{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56; <br>printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}
7.源程序:
main()
{int a,b,c,m; <br>scanf("%d %d %d",&a,&b,&c); <br>m=a;a=b;b=c;c=m; <br>printf("%d %d %d\n",a,b,c);}
執行結果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c; <br>scanf("%d %d %d",&a,&b,&c); <br>printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.); <br>執行結果: <br>6 7 9 <br>average of 6,7 and 9 is 7.33 <br>9.不能。修改後的源程序如下: <br>main() <br>{int a,b,c,x,y; <br>scanf("%d %d %d",&a,&b,&c); <br>x=a*b;y=x*c; <br>printf("a=%d,b=%d,c=%d\n",a,b,c); <br>printf("x=%d,y=%d\n",x,y);}

6 第5章 選擇結構程序設計
一、單項選擇題(第113頁)
1-4.DCBB 5-8.DABD

二、填空題(第115頁)
1.非0 0 2.k==0
3.if (abs(x)>4) printf("%d",x);else printf("error!");
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);
5.k=1 (原題最後一行漏了個d,如果認為原題正確,則輸出k=%。)
6. 8! Right!11 7.$$$a=0 8.a=2,b=1

三、編程題(第116頁)
1.有錯。正確的程序如下:
main()
{int a,b,c; <br>scanf("%d,%d,%d",&a,&b,&c); <br>printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序:
main()
{unsigned long a; <br>scanf("%ld",&a); <br>for(;a;printf("%d",a%10),a/=10);}
執行結果:
12345
54321
3.(1)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if (x>-5&&x<0)y=x; <br>if (x>=0&&x<5)y=x-1; <br>if (x>=5&&x<10)y=x+1; <br>printf("%d\n",y);}
(2)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1; <br>else y=x-1; else y=x; <br>printf("%d\n",y);}
(3)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if(x<10) if(x>=5)y=x+1; <br>else if(x>=0)y=x-1; <br>else if(x>-5)y=x; <br>printf("%d\n",y);}
(4)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>switch(x/5) <br>{case -1:if(x!=-5)y=x;break; <br>case 0:y=x-1;break; <br>case 1:y=x+1;}
printf("%d\n",y);}
4.本題為了避免考慮每月的天數及閏年等問題,故採用面向對象的程序設計。
現給出Delphi源程序和C++ Builder源程序。
Delphi源程序:
procere TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)]);
end;
procere TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text:=datetostr(now);
button1click(form1)
end;
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天";
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit2->Text=DateToStr(Now());
Button1Click(Form1);
}
執行結果:(運行於Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

5.源程序:
main()
{unsigned a,b,c; <br>printf("請輸入三個整數:"); <br>scanf("%d %d %d",&a,&b,&c); <br>if(a&&b&&c&&a==b&&a==c)printf("構成等邊三角形\n"); <br>else if(a+b>c&&a+c>b&&b+c>a) <br>if(a==b||a==c||b==c)printf("構成等腰三角形\n"); <br>else printf("構成一般三角形\n"); <br>else printf("不能構成三角形\n");}
執行結果:
請輸入三個整數:5 6 5
構成等腰三角形
6.源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if(x<20)y=1; <br>else switch(x/60) <br>{case 0:y=x/10;break; <br>default:y=6;}
printf("x=%d,y=%d\n",x,y);}
7.源程序:
main()
{unsigned m;float n; <br>scanf("%d",&m); <br>if(m<100)n=0; <br>else if(m>600)n=0.06; <br>else n=(m/100+0.5)/100; <br>printf("%d %.2f %.2f\n",m,m*(1-n),m*n);}
執行結果:
450
450 429.75 20.25
8. 2171天(起始日期和終止日期均算在內)
本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入「生日」和「今日」欄內,單擊「實足年齡」按鈕,將所得到的天數再加上1天即可。
9.源程序:
#include "math.h";
main()
{unsigned long i; <br>scanf("%ld",&i); <br>printf("%ld %d\n",i%10,(int)log10(i)+1);}
執行結果:
99887
7 5
10.源程序:
main()
{unsigned long i;unsigned j[10],m=0; <br>scanf("%ld",&i); <br>for(;i;){j[m++]=(i+2)%10;i/=10;}
for(;m;m--)i=i*10+j[m-1];
printf("%ld\n",i);}
執行結果:
6987
8109
(註:要加密的數值不能是0或以0開頭。如果要以0開頭需用字元串而不能是整數。)

7 第6章 循環結構程序設計
一、單項選擇題(第142頁)
1-4.BCCB 5-8.CBCA

二、填空題(第143頁)
1.原題可能有誤。如無誤,是死循環 2.原題有誤。如果把b=1後面的逗號改為分號,則結果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x<amin

三、編程題(第145頁)
1. 源程序:
main()
{int i=1,sum=i; <br>while(i<101){sum+=i=-i-2;sum+=i=-i+2;}
printf("%d\n",sum);}
執行結果:
51
2.源程序:
main()
{double p=0,n=0,f;int i; <br>for(i=1;i<=10;i++) <br>{scanf("%lf",&f); <br>if (f>0)p+=f; else n+=f;}
printf("%lf %lf %lf\n",p,n,p+n);}
3.源程序:
main()
{unsigned a; <br>scanf("%ld",&a); <br>for (;a;printf("%d,",a%10),a/=10); <br>printf("\b \n");}
執行結果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i; <br>scanf("%ld%ld",&a,&b); <br>c=a%1000; <br>for(i=1;i<b;i++)c=c*a%1000; <br>if(c<100)printf("0"); <br>if(c<10)printf("0"); <br>printf("%ld\n",c);}
執行結果:
129 57
009
5.略
6.原題提供的計算e的公式有誤(前面漏了一項1)。正確的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …
(1)源程序:
main()
{double e=1,f=1;int n; <br>for(n=1;n<=20;n++){f/=n;e+=f;}
printf("e=%.14lf\n",e);}
執行結果:
e=2.71828182845905
(2)源程序:
main()
{double e=1,f=1;int n; <br>for(n=1;f>1e-4;n++){f/=n;e+=f;}
printf("e=%.4f\n",e);}
執行結果:
e=2.7183
7.源程序:
main()
{unsigned long a=0,b=1,c=0;int i,d; <br>scanf("%d",&d); <br>for (i=1;i<=(d+2)/3;i++) <br>printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}
本題還可以用遞歸演算法(效率很低),源程序如下:
unsigned long fun(int i)
{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);}
main()
{int i,d; scanf("%d",&d); <br>for(i=1;i<=d;i++) <br>printf("%10ld",fun(i));}
執行結果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i; <br>for(i=1010;i<=9876;i+=2) <br>if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i);}
執行結果:
1024 1026 1028 1032 1034 1036 …… …… 9874 9876
9.源程序:
main()
{int i,j,k; <br>printf("apple watermelon pear\n"); <br>for(i=1;i<=100;i++) <br>for(j=1;j<=10;j++) <br>if((k=100-i-j)*2==400-i*4-j*40) <br>printf("%4d%7d%9d\n",i,j,k);}
執行結果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
10.源程序:
#include "stdio.h";
#define N 4 /* N為階數,可以改為其他正整數 */
main()
{int m=N*2,i,j; <br>for(i=1;i<m;printf("\n"),i++) <br>for(j=1;j<m; <br>putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));}
如果把N值改為5,則執行結果如下:
*
***
*****
*******
*********
*******
*****
***
*

㈦ 求A First Book of ANSI標准C語言教程 的中文版和英文版的PDF 郵箱:[email protected] 要看的清楚的謝謝

【原書名】AFirstBookofANSIC,FourthEdition【原出版社】Thomson【作者】(美)GaryJ.Bronson[同作者作品]【譯者】單先余[同譯者作品]陳芳張蓉等【叢書名】國外計算機科學教材系列【出版社】電子工業出版社【書號】7121026597【出版日期】2006年9月【開本】16開【頁碼】586【版次】4-1【定價】49.0我在網上搜了一下,沒有電子版的。建議你學校圖書館借,這樣的書圖書館一般有,英文中文都有。

㈧ c語言視頻教程

c語言視頻教程 可以到IT學習聯盟下載。
…………………………

看你問的問題,應該是對c++很感興趣,其實你可以自學c++。關於如何學習c++,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學c++,並找到c++的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到c++這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習c++,然後給我介紹了一下c++現在的火熱情況,告訴我學c++多麼的有前景,給我了一份傳單,c++培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下c++,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學c++了。於是我去找c++培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章是一個c++高手介紹沒有基礎的朋友怎麼自學入門學c++,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索c++的視頻,雖然零星找到一些c++的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟推出的一份視頻《零基礎c++就業班》(喜歡《零基礎c++就業班》的可以復制 sina.lt/ceFM 粘貼瀏覽器地址欄按回車鍵即打開)。裡面的教程還不錯,很完整。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,只要重復多看幾遍,就能看懂。C語言我差不多學了一個禮拜,接下來我就學了c++和數據結構演算法,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了c++的全部基礎。
接下來開始學習c++高級課程,老師幽默風趣而又輕松的課堂教課,使我發現原來學習c++並不是一件很難的事情。之前我把c++基礎學得還不錯,到了到了c++高級部分,我覺不又不是很難,可能老師太牛了,他能把復雜的問題講的比較通俗易懂,有些難點的地方我還是連續看了五六次,把他弄懂。每天下午6點下班後,吃了飯,馬上跑回家。看視頻,買了幾本筆記本。當時,為了編程還花幾百元了台二手的台式電腦,配置一般,但編程是足夠的。一邊看視頻,一邊記筆記,把重點都記下來,還一邊跟著老師敲代碼,為了能盡早學會c++。每天都堅持學5-6個小時。經常學到晚上一點多才睡覺。星期六,日不用上班,每天7點多起床,學到晚上11,12點。那段時間特別辛苦,特別累。在學習c++的三個多月里,除了吃飯睡覺工作,剩餘的時間都在學習,因為我知道自己的計算機基礎不是很好,也沒有學過什麼計算機,相對於那些科班的人來說我要比他們付出更多的努力。我只能咬緊牙關,堅持下去,我不能放棄,我要完成我的夢想,我要讓我的家人過上好日子。終於三個多月後我把c++教程里的內容和項目都學完了,在學項目的過程中我發現項目特別重要,他能把你學過的知識全部聯系起來,能更好的理解你所學的知識。還有學習過程中,動手很重要,要經常跟著老師動手敲,動手吧,跟著做,一行一行的跟著敲,再試著加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比干聽大的多。 如果遇到暫時對於一些思路不能理解的,動手寫,先寫代碼,慢慢你就會懂了。
於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是c++開發程序員,但我也比較滿足,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。

……………………………………

㈨ 求C語言教程

我給你電子文檔筆記吧~~
復制來的....

第一章 概述

1. C語言的特點

①語言簡潔、緊湊,使用方便、靈活。共有32個關鍵字,9種控制語句。

②運算符豐富,公有34種運算符。

③數據結構豐富,數據類型有:整型、實型、字元型、數組、指針、結構體、共用體等。

④具有結構化的控制語句(如if…else、while、do…while、switch、for)

⑤語法限制不太嚴格,程序設計自由度大。

⑥允許直接訪問物理地址,能進行位(bit)操作,可以直接對硬體操作。

⑦生成目標代碼質量高,程序執行效率高。

⑧可移植性好。

2. C語言的用途

C雖不擅長科學計算和管理領域,但對操作系統和系統實用程序以及對硬體進行操作方面,C有明顯的優勢。現在很多大型應用軟體也用C編寫。

Top of Page

第二章 數據類型、運算符與表達式

1. C的數據類型

C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。

2. 常量與變數

常量其值不可改變,符號常量名通常用大寫。變數其值可以改變,變數名只能由字母、數字和下劃線組成,且第一個字元必須為字母或下劃線。否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。

3. 整型數據

整型常量的表示方法:十進制不用說了,八進制以0開頭,如0123,十六進制以0x開頭,如0x1e。

整型變數分為:基本型(int)、短整型(short int)、長整型(long int)和無符號型。不同機器上各類數據所佔內存位元組數不同,一般int型為2個位元組,long型為4個位元組。

4. 實型數據

實型常量表示形式:十進制形式由數字和小數點組成(必須有小數點),如:0.12、.123、123

0.0等。指數形式如123e3代表123×10的三次方。

實型變數分為單精度(float)和雙精度(double)兩類。在一般系統中float型佔4位元組,7位有效數字,double型佔8位元組,15~16位有效數字。

5. 字元型數據

字元變數用單引號括起來,如'a','b'等。還有一些是特殊的字元常量,如'\n','\t'等。分別代表換行和橫向跳格。

字元變數以char 來定義,一個變數只能存放一個字元常量。

字元串常量是由雙引號括起來的字元序列。這里一定要注意'a'和"a"的不同,前者為字元常量,後者為字元串常量,c規定:每個字元串的結尾加一個結束標志'',實際上"a"包含兩個字元:'a'和''。

6. 數值型數據間的混合運算

整型、字元型、實型數據間可以混合運算,運算時不同類型數據要轉換成同一類型再運算,轉換規則:

char,short -> int -> unsigned -> long -> double <- float

7. 運算符和表達式

c運算符包括:

算數運算符( + - * / % )

關系運算符( > < == >= <= != )

邏輯運算符( ! && || )

位運算符( << >> ~ | ^ & )

賦值運算符( = )

條件運算符( ? : )

逗號運算符( , )
指針運算符( * & )

求位元組數( sizeof )

強制類型轉換(類型)

分量運算符( . -> )

下標運算符( [ ] )

其它運算符( 如函數調用運算符( ) )

自增自減運算符( ++ -- )注意:++i和i++的不同之處,++i使用i之前先使i加1,i++使用i之後,使i加1。

逗號表達式的求解過程:先求解表達式1,再求解表達式2,整個表達式的值是表達式2的值。

Top of Page

第三章 最簡單的c程序設計

1.c的9種控制語句:

if() ~ else~

for()~

while()~

do~while()

continue

break

switch

goto

return

程序的三種基本結構:順序結構,選擇結構,循環結構

2.數據輸出

c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函數完成。但要包含頭文件stdio.h。

putchar( ) 向終端輸出一個字元

printf( )的格式字元:

① d格式符 用來輸出十進制整數

%d 按整型數據的實際長度輸出

%md 使輸出長度為m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度

%ld 輸出長整型數據

② o格式符 以八進制形式輸出整數

③ x格式符 以十六進制形式輸出整數

④ u格式符 用來輸出unsigned型數據,以十進制形式輸出

⑤ c格式符 用來輸出一個字元

⑥ s格式符 輸出一個字元串

%s 輸出實際長度字元串

%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出

%-ms輸出的串佔m列,如果串長度小於m,右補空格,

%m.ns 輸出佔m列,但只取字元串中左端n個字元並靠右對齊

%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值

⑦ f格式符 以小數形式輸出實數

%f 整數部分全部輸出,小數部分輸出6位

%m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格

%-m.nf 同上,右補空格

⑧ e格式符 以指數形式輸出實數

%e 系統指定6位小數,5位指數(e+002 )

⑨ g格式符 輸出實數,根據數值大小,自動選f格式或e格式

3.數據輸入

getchar( ) 從終端輸入一個字元

scanf( 格式控制,地址列表) 標准C scanf中不使用%u,對於unsigned型數據,以%d或%o或%x輸入。%後的*,用來跳過它相應的數據。輸入數據時不能規定精度如scanf( "%7.2f", &a );是不合法的。

Top of Page

第四章 邏輯運算和判斷選取控制

1. 關系運算符:

c提供6種關系運算符(> < <= >= == != )前四種優先順序高於後兩種。

2. If語句

C提供了三種形式的if語句

If(表達式) 語句

If(表達式) 語句1 else 語句2

If(表達式1) 語句1

Else if(表達式2) 語句2



else 語句n

3. 條件運算符
(a>b)?a:b 條件為真,表達式取值a,否則取值b

4. Switch語句

Switch(表達式)

{

case 常量表達式1:語句1; break;

case 常量表達式2:語句2; break;



case 常量表達式n:語句n; break;

default :語句n+1;

}

Top of Page

第五章 循環控制

1. 幾種循環語句

goto語句(現已很少使用)

while語句 先判斷表達式後執行語句

do-while語句 先執行語句後判斷表達式

for語句

2. Break語句和continue語句

Break語句用於跳出循環,continue用於結束本次循環。

Top of Page

第六章 數組

1. 一維數組

c規定只有靜態存儲(static)和外部存儲(extern)數組才能初始化。給數組初始化時可以不指定數組長度。

2. 二維數組

3. 字元數組

部分字元串處理函數

puts(字元數組) 將一個字元串輸出到終端。

gets(字元數組) 從終端輸入一個字元串到字元數組,並且得到一個函數值,為該字元數組的首地址

strcat(字元數組1,字元數組2) 連接兩個字元數組中的字元串,數組1必須足夠大。

Strcpy(字元數組1,字元串2) 將字元串2拷貝到字元數組1中。

Strcmp(字元串1,字元串2) 比較字元串,相等返回0,字元串1>字元串2,返回正數,小於返回負數。
http://www.vstudycn.com
Strlen(字元數組) 求字元串長度。

Strlwr( 字元串) 將字元串中的大寫字母轉換成小寫

Strupr( 字元串) 將字元串中的小寫字母轉換成大寫

以上是一些比較常用的字元串處理函數。

Top of Page

第七章 函數

1. 關於形參和實參的說明

① 在函數被調用之前,形參不佔內存

② 實參可以是常量、變數或表達式

③ 必須指定形參的類型

④ 實參與形參類型應一致

⑤ 實參對形參的數據傳遞是"值傳遞",即單向傳遞

2. 函數返回值

如果想讓函數返回一個值,在函數中就要用return語句來獲得,在定義函數時也要對函數值指定類型,如果不指定,默認返回整型。

3. 函數調用

1)注意在函數調用時實參和形參的個數、類型應一一對應。對實參表求值的順序是不確定的,有的系統按自左至右,有的系統則按自右至左的順序。這一點要注意。

2)函數調用的方式:函數語句,函數表達式,函數參數

3)如果主調函數和被調函數在同一文件中,並且主調函數在前,那麼一般要在主調函數中對被調函數進行說明。除非:(1)被調函數的返回值類型為整型或字元型(2)被調函數出現在主調函數之前。

4)對函數的說明和定義是不同的,定義是指對函數功能的確立,包括指定函數名,函數值類型,形參及其類型、函數體等。說明則只是對已定義的函數返回值類型進行說明,只包括函數名、函數類型以及一個空的括弧,不包括形參和函數體。

5)c語言允許函數的遞歸調用(在調用一個函數的過程中又出現直接或間接的調用該函數本身)。
4. 數組作為函數參數

1)數組元素作為函數參數 和一般變數相同

2)數組名作參數應該在主調和被調函數分別定義數組,形參數組的大小可以不定義。注意:數組名作參數,不是單向傳遞。

3)多維數組作參數,在被調函數中對形參數組定義時可以省略第一維的大小說明,但不能省略第二維或更高維的說明。

5. 局部變數和全局變數

從變數作用域角度分,變數可分為局部變數和全局變數。

1)內部變數(局部變數)

在一個函數內定義,只在函數范圍內有效的變數。

2)外部變數(全局變數)

在函數外定義,可以為本文件其它函數所共用,有效范圍從定義變數的位置開始

到本文件結束。建議盡量少使用全局變數,因為它在程序全部執行過程中都佔用

資源,而且使函數的通用性降低了。如果在定義外部變數之前的函數要想使用該

外部變數,則應在該函數中用extern作外部變數說明。

6. 動態存儲變數與靜態存儲變數

從變數值存在的時間(生存期)角度來分,可分為靜態存儲變數和動態存儲變數。靜態存儲指在程序運行期間給變數分配固定的存儲空間,動態存儲指程序運行期間根據需要動態的給變數分配存儲空間。

C語言中,變數的存儲方法分為兩大類:靜態存儲類和動態存儲類,具體包括:自動的(auto),靜態的(static),寄存器的(register),外部的(extern)。

1) 局部變數的存儲方式

函數中的局部變數如不作專門說明,都之auto的,即動態存儲的,auto可以省略。局部變數也可以定義為static的,這時它在函數內值是不變的。靜態局部變數如不賦初值,編譯時系統自動賦值為0,動態局部變數如不賦初值,則它的值是個不確定的值。C規定,只有在定義全局變數和局部靜態變數時才能對數組賦初值。為提高執行效率,c允許將局部變數值放在寄存器中,這種變數叫register變數,要用register說明。但只有局部動態變數和形式參數可以作為register變數,其它不行。

2) 全局變數的存儲方式

全局變數在函數外部定義,編譯時分配在靜態存儲區,可以在程序中各個函數所引用。多個文件的情況如何引用全局變數呢?假如在一個文件定義全局變數,在別的文件引用,就要在此文件中用extern對全局變數說明,但如果全局變數定義時用static的話,此全局變數就只能在本文件中引用了,而不能被其它文件引用。

3) 存儲類別小結

從作用域角度分,有局部變數和全局變數

局部變數:自動變數,即動態局部變數(離開函數,值就消失)

靜態局部變數(離開函數,值仍保留)

寄存器變數(離開函數,值就消失)

(形參可定義為自動變數和寄存器變數)

全局變數:靜態全局變數(只限本文件引用)

全局變數(允許其它文件引用)

從存在的時間分,有靜態存儲和動態存儲

動態存儲:自動變數(本函數內有效)

寄存器變數(本函數內有效)

形參

靜態存儲:靜態局部變數(函數內有效)

靜態全局變數(本文件內有效)

全局變數(其它文件可引用)

從變數值存放的位置分

靜態存儲區:靜態局部變數

靜態全局變數

全局變數

動態存儲區:自動變數和形參

寄存器內:寄存器變數

7. 內部函數和外部函數

內部函數:只能被本文件中的其它函數調用,定義時前加static,內部函數又稱靜態函數。

外部函數:可以被其它文件調用,定義時前加extern,如果省略,則隱含為外部函數,在需要調用此函數的文件中,一般要用extern說明。

Top of Page

第八章 預編譯處理

c編譯系統在對程序進行通常的編譯之前,先進行預處理。c提供的預處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯

1. 宏定義

不帶參數的宏定義

用一個指定的標識符來代表一個字元串,形式:#define 標識符 字元串

幾點說明:

1) 宏名一般用大寫

2) 宏定義不作語法檢查,只有在編譯被宏展開後的源程序時才會報錯

3) 宏定義不是c語句,不在行末加分號

4) 宏名有效范圍為定義到本源文件結束

5) 可以用#undef命令終止宏定義的作用域

6) 在宏定義時,可以引用已定義的宏名

帶參數的宏定義

定義形式:#define 宏名(參數表) 字元串

這和函數有些類似,但他們是不同的:

1) 函數調用時,先求實參表達式值,再代入形參,而宏只是簡單替換,並不求值

2) 函數調用是在程序運行時分配內存的,而宏展開時並不分配內存,也沒有返回值的概念

3) 對函數中的實參和形參都要定義類型,而且要求一致,宏名無類型,其參數也沒有類型。

4) 函數只有一個返回值,而宏可以得到幾個結果

5) 宏替換不佔運行時間,只佔編譯時間,而函數調用占運行時間

2. 文件包含處理

#include "文件1" 就是將文件1的全部內容復制插入到#include位置,作為一個源文件進行編譯。

在#include命令中,文件名可以用" "也可以用< >,假如現在file1.c中包含file2.h文件," "表示系統先在file1.c所在目錄中找file2.h,如果找不到,再按系統指定的標准方式檢索目錄,< >表示系統直接按指定的標准方式檢索目錄。所以用" "保險一點。

3. 條件編譯

條件編譯指不對整個程序都編譯,而是編譯滿足條件的那部分。條件編譯有以下幾種形式:

1)#ifdef 標識符

程序段1

#else

程序段2

#endif

它的作用:當標識符在前面已經被定義過(一般用#define),則對程序段1編譯,否則對程序段2編譯。

2)#ifndef 標識符

程序段1

#else

程序段2

#endif

它的作用和#ifdef相反,當標識符沒被定義過,對程序段1編譯,否則對程序段2編譯。

3)#if 表達式

程序段1

#else

程序段2

#endif

它的作用:當表達式值為真(非0)時,對程序段1編譯,否則對程序段2編譯。

Top of Page

第九章 指針

指針說白了就是地址。指針變數就是用來存放指針(地址)的變數。

1. 變數的指針和指向變數的指針變數

讀起來很拗口,說白了就是變數的地址和用來存放變數地址的地址變數。因為一個變數在編譯的時候系統要為它分配一個地址,假如再用一個變數來存放這個地址,那麼這個變數就叫做指向變數的指針變數,也就是用來存放變數地址的這么一個變數。所謂"指向"就是指存放××的地址,如指向變數的指針變數,"指向"就是指用來存放變數的地址,再如指向數組的指針變數,"指向"就是指存放數組的地址。只要理解了這個,指針也就不難了。另外,還有指向字元串的指針變數,指向函數的指針變數,指向指針的指針變數等。
1) 指針變數的定義

形式:類型標識符 *標識符 如:int *pointer;

要注意兩點:*表示pointer是個指針變數,在用這個變數的時候不能寫成*pointer, *pointer是pointer指向的變數。一個指針變數只能指向同一個類型的變數。如上面

pointer只能指向int型變數。

2)指針變數的引用

兩個有關的運算符:

& 取地址運算符 &a 就代表變數a的地址

* 指針運算符 *a 就代表變數a的值

2. 數組的指針和指向數組的指針變數

數組的指針指數組的起始地址,數組元素的指針指數組元素的地址。

1)指向數組元素的指針變數的定義與賦值

定義和指向變數的指針變數定義相同,c規定數組名代表數組的首地址,即第一個數組元素地址。

2)通過指針引用數組元素

我們通常引用數組元素的形式是a[i],如果用指針可以這樣引用,*(a+i),或定義一個指針變數p,將數組a的首地址賦給p,p=a;然後用*(p+i)引用。

注意:指針變數p指向數組a首地址,則p++指向數組a的下一元素地址,即a[1]的地址。

3)數組名作函數參數

形參數組和實參數組之間並不是值傳遞,而是共用同一段地址,所以在函數調用過程中如果形參的值發生變化,則實參的值也跟著變化。

4)指向多維數組的指針和指針變數

以二維數組為居多。假設定義了一個二維數組a[3][4],那麼

a代表整個二維數組的首地址,也代表第0行的首地址,同時也是第0行第0列的元素的首地址。a +0和a[0]代表第0行首地址,a+1和a[1]代表第一行的首地址。

假設a是一個數組的首地址,那麼如果a是一維的,a+I代表第I個元素的地址,如果a是二維的,則a+I代表第I行的首地址。

那麼第一行第二列的元素地址如何表示呢?a[1]+2或&a[1][2]或*(a+1)+2。

我們只要記住:在二維數組中a代表整個數組的首地址,a[I]代表第I行的首地址,a[I]與*(a+I)等價就行了。只要運用熟練了就沒什麼復雜的了。

5)指向由m個整數組成的一維數組的指針變數

如:int (*p)[4],p是一個指向包含4個元素的一維數組,如果p先指向a[0],則p+1指向a[1],即p的增值是以一維數組的長度為單位的,這里是4,舉個例子:

假設a[3][4]=,p先指向a[0]也就是數組a的首地址,那麼p+1就是a[1]的首地址即元素9的地址,因為在定義p時int (*p)[4],定義一維數組長度為4,所以p+1就等於加了一個一維數組的長度4。

3. 字元串的指針和指向字元串的指針變數

1)字元串的表示形式

c中字元串有兩種表示形式:一種是數組,一種是字元指針

char string[]="I love c!";

char *str="I love c!";

其實指針形式也是在內存中開辟了一個數組,只不過數組的首地址存放在字元指針變數str中,千萬不要認為str是一個字元串變數。

2)字元串指針作函數參數

實際上字元串指針就是數組的首地址。

3)字元指針變數與字元數組的區別

① 字元數組由若干元素組成,每個元素存放一個字元,而字元指針變數只存放字元串的首地址,不是整個字元串

② 對數組初始化要用static,對指針變數不用。

③ 對字元數組賦值,只能對各個元素賦值,不能象下面這樣:

char str[14];

str="I love c!";

對指針變數可以,

char *str;

str="I love c!";

注意:此時賦給str的不是字元,而是字元串首地址。

④ 數組在定義和編譯時分配內存單元,而指針變數定義後最好將其初始化,否則指針變數的值會指向一個不確定的數.

嘎嘎。。。就這么多啦~~

㈩ 求小甲魚c語言視頻教程,最好百度雲

鏈接: http://pan..com/s/1hqyGw88 密碼: rgg1