c語言經典編程282
Ⅰ 《c語言實例精粹第二版》《C語言經典編程282例》《C語言程序開發範例寶典》推薦哪一本
都不推薦。推薦K&R《c語言程序設計》
Ⅱ 做完c語言經典編程282例 計算機什麼水平
只能說是學習了基本的語言和開發方法, 有大量 C 的高級用法(比如函數指針) 以及軟體設計(大規模的程序設計思路), 還有系統相關的(比如POSIX庫,多進程,多線程,信號), 還有演算法, 數據結構等等需要學習呢. 的確是萬里長征走完一步, 與您共勉
Ⅲ 《C語言實例精粹第二版》《C語言經典編程282例》推薦哪一本
兩年了還看這個。。。。換吧。。。
《C和指針》,《C專家編程》,看看國外的書吧。。。不是國內的書可以比擬的
Ⅳ C語言經典編程282例,求這本書的PDF或是其他文檔的文件,在線等,高分獎勵!!!
21天學通C語言(PDF) 已發送,請查收,不過貌似不是電子工業出版社出版的,比較遺憾的是這個PDF版不太清楚,你就湊合一下吧~~
Ⅳ C語言經典編程282例的圖書詳細信息
印次:1-1
印刷日期:2011-12-30
Ⅵ 求C語言經典編程282例,求這本書的PDF或是其他文檔的文件,我郵箱[email protected]
【程序1】
題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去
掉不滿足條件的排列。
2.程序源代碼:
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k)
printf("%d,%d,%d\n",i,j,k);
}
}
【程序2】
題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高
於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提
成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於
40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於
100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
2.程序源代碼:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
【程序3】
題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
1.程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後
的結果滿足如下條件,即是結果。請看具體分析:
2.程序源代碼:
#i nclude "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /*x為加上100後開方後的結果*/
y=sqrt(i+268); /*y為再加上168後開方後的結果*/
if(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/
printf("\n%ld\n",i);
}
}
【程序4】
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊
情況,閏年且輸入月份大於3時需考慮多加一天。
2.程序源代碼:
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先計算某月以前月份的總天數*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default: printf("data error");break;
}
sum=sum+day; /*再加上某天的天數*/
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是閏年且月份大於2,總天數應該加一天*/
sum++;
printf("It is the %dth day.",sum);}
【程序5】
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,
然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
2.程序源代碼:
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交換x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交換x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交換z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
}
【程序6】
題目:用*號輸出字母C的圖案。
1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。
2.程序源代碼:
#i nclude "stdio.h"
main()
{
printf("Hello C-world!\n");
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
}
【程序7】
題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!
1.程序分析:字元共有256個。不同字元,圖形不一樣。
2.程序源代碼:
#i nclude "stdio.h"
main()
{
char a=176,b=219;
printf("%c%c%c%c%c\n",b,a,a,a,b);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",a,a,b,a,a);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",b,a,a,a,b);}
【程序8】
題目:輸出9*9口訣。
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
2.程序源代碼:
#i nclude "stdio.h"
main()
{
int i,j,result;
printf("\n");
for (i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,佔3位*/
}
printf("\n");/*每一行後換行*/
}
}
【程序9】
題目:要求輸出國際象棋棋盤。
1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
2.程序源代碼:
#i nclude "stdio.h"
main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf("%c%c",219,219);
else
printf(" ");
printf("\n");
}
}
【程序10】
題目:列印樓梯,同時在樓梯上方列印兩個笑臉。
1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。
2.程序源代碼:
#i nclude "stdio.h"
main()
{
int i,j;
printf("\1\1\n");/*輸出兩個笑臉*/
for(i=1;i<11;i++)
{
for(j=1;j<=i;j++)
printf("%c%c",219,219);
printf("\n");
}
}
【程序11】
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月
後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
1.程序分析:兔子的規律為數列1,1,2,3,5,8,13,21....
2.程序源代碼:
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{ printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n");/*控制輸出,每行四個*/
f1=f1+f2; /*前兩個月加起來賦值給第三個月*/
f2=f1+f2; /*前兩個月加起來賦值給第三個月*/
}
}
【程序12】
題目:判斷101-200之間有多少個素數,並輸出所有素數。
1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
則表明此數不是素數,反之是素數。
2.程序源代碼:
#i nclude "math.h"
main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{ k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;}
if(leap) {printf("%-4d",m);h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe total is %d",h);
}
【程序13】
題目:列印出所有的「水仙花數」,所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數
本身。例如:153是一個「水仙花數」,因為153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
2.程序源代碼:
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出個位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
【程序14】
題目:將一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。
(2)如果n<>k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,
重復執行第一步。
(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
2.程序源代碼:
/* zheng int is divided yinshu*/
main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{ printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);}
【程序15】
題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,
60分以下的用C表示。
1.程序分析:(a>b)?a:b這是條件運算符的基本例子。
2.程序源代碼:
main()
{
int score;
char grade;
printf("please input a score\n");
scanf("%d",&score);
grade=score>=90? 'A': (score>=60? 'B':'C');
printf("%d belongs to %c",score,grade);
}
【程序16】
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
1.程序分析:利用輾除法。
2.程序源代碼:
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1 { temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用輾除法,直到b為0為止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
【程序17】
題目:輸入一行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。
1.程序分析:利用while語句,條件為輸入的字元不為'\n'.
2.程序源代碼:
#i nclude "stdio.h"
main()
{char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d
others=%d\n",letters,
space,digit,others);
}
【程序18】
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時
共有5個數相加),幾個數相加有鍵盤控制。
1.程序分析:關鍵是計算出每一項的值。
2.程序源代碼:
main()
{
int a,n,count=1;
long int sn=0,tn=0;
printf("please input a and n\n");
scanf("%d,%d",&a,&n);
printf("a=%d,n=%d\n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+...=%ld\n",sn);
}
【程序19】
題目:一個數如果恰好等於它的因子之和,這個數就稱為「完數」。例如6=1+2+3.編程
找出1000以內的所有完數。
1. 程序分析:請參照程序<--程序14.
2.程序源代碼:
main()
{
static int k[10];
int i,j,n,s;
for(j=2;j<1000;j++)
{
n=-1;
s=j;
for(i=1;i {
if((j%i)==0)
{n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{
printf("%d is a wanshu",j);
for(i=0;i printf("%d,",k);
printf("%d\n",k[n]);
}
}
}
【程序20】
題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在
第10次落地時,共經過多少米?第10次反彈多高?
1.程序分析:見下面注釋
2.程序源代碼:
main()
{
float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地時共經過的米數*/
hn=hn/2; /*第n次反跳高度*/
}
printf("the total of road is %f\n",sn);
printf("the tenth is %f meter\n",hn);
}
其他的等整理出來再發! :) :)
【程序21】
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:採取逆向思維的方法,從後往前推斷。
2.程序源代碼:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
==============================================================
【程序22】
題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定
比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出
三隊賽手的名單。
1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
則表明此數不是素數,反之是素數。
2.程序源代碼:
main()
{
char i,j,k;/*i是a的對手,j是b的對手,k是c的對手*/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
if(i!=j)
for(k='x';k<='z';k++)
{ if(i!=k&&j!=k)
{ if(i!='x'&&k!='x'&&k!='z')
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
==============================================================
【程序23】
題目:列印出如下圖案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利用雙重
for循環,第一層控制行,第二層控制列。
2.程序源代碼:
main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
==============================================================
【程序24】
題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
1.程序分析:請抓住分子與分母的變化規律。
2.程序源代碼:
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;/*這部分是程序的關鍵,請讀者猜猜t的作用*/
}
printf("sum is %9.6f\n",s);
}
==============================================================
【程序25】
題目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加變成了累乘。
2.程序源代碼:
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!+3!...+20!=%e\n",s);
}
==============================================================
【程序26】
題目:利用遞歸方法求5!。
1.程序分析:遞歸公式:fn=fn_1*4!
2.程序源代碼:
#i nclude "stdio.h"
main()
{
int i;
int fact();
for(i=0;i<5;i++)
printf("\40:%d!=%d\n",i,fact(i));
}
int fact(j)
int j;
{
int sum;
if(j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
==============================================================
【程序27】
題目:利用遞歸函數調用方式,將所輸入的5個字元,以相反順序列印出來。
1.程序分析:
2.程序源代碼:
#i nclude "stdio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
char next;
if(n<=1)
{
next=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
==============================================================
【程序28】
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第
3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後
問第一個人,他說是10歲。請問第五個人多大?
1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道
第四人的歲數,依次類推,推到第一人(10歲),再往回推。
2.程序源代碼:
age(n)
int n;
{
int c;
if(n==1) c=10;
else c=age(n-1)+2;
return(c);
}
main()
{ printf("%d",age(5));
}
==============================================================
【程序29】
題目:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序列印出各位數字。
1. 程序分析:學會分解出每一位數,如下解釋:(這里是一種簡單的演算法,師專數002班趙鑫提供)
2.程序源代碼:
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出萬位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出個位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld
%ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld
%ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld
%ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld
%ld\n",e,d);
else if (e!=0) printf(" there are
1,%ld\n",e);
}
==============================================================
【程序30】
題目:一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。
1.程序分析:同29例
2.程序源代碼:
main( )
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian)/*個位等於萬位並且十位等於千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
}
【程序31】
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續
判斷第二個字母。
1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。
2.程序源代碼:
#i nclude <stdio.h>
void main()
{
char letter;
printf("please input the first letter of
someday\n");
while ((letter=getch())!='Y')/*當所按字母為Y時才結束*/
{ switch (letter)
{case 'S':printf("please input second letter\n");
if((letter=getch())=='a')
printf("saturday\n");
else if ((letter=getch())=='u')
printf("sunday\n");
else printf("data error\n");
break;
case 'F':printf("friday\n");break;
case 'M':printf("monday\n");break;
case 'T':printf("please input second letter\n");
if((letter=getch())=='u')
printf("tuesday\n");
else if ((letter=getch())=='h')
printf("thursday\n");
else printf("data error\n");
break;
case 'W':printf("wednesday\n");break;
default: printf("data error\n");
}
}
}
==============================================================
【程序32】
題目:Press any key to change color, do you want to
try it. Please hurry up!
1.程序分析:
2.程序源代碼:
#i nclude <conio.h>
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*設置文本的背景顏色*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();/*輸入字元看不見*/
}
}
==============================================================
【程序33】
題目:學習gotoxy()與clrscr()函數
1.程序分析:
2.程序源代碼:
#i nclude <conio.h>
void main(void)
{
clrscr();/*清屏函數*/
textbackground(2);
gotoxy(1, 5);/*定位函數*/
cprintf("Output at row 5 column 1\n");
textbackground(3);
gotoxy(20, 10);
cprintf("Output at row 10 column 20\n");
}
==============================================================
【程序34】
題目:練習函數調用
1. 程序分析:
2.程序源代碼:
#i nclude <stdio.h>
void hello_world(void)
{
printf("Hello, world!\n");
}
void three_hellos(void)
{
int counter;
for (counter = 1; counter <= 3; counter++)
hello_world();/*調用此函數*/
}
void main(void)
{
three_hellos();/*調用此函數*/
}
Ⅶ C語言經典編程282例的前言
學會站在巨人的肩膀上!
軟體開發的終極目標是完成滿足用戶需求的軟體。一個軟體往往包含復雜的功能,作為一名程序員,需要在有限的時間內實現它們,這對於新手而言並不容易。為什麼富有開發經驗的程序員編程效率非常高呢?答案就是他們做過類似的程序,適當修改以前的代碼,就可以滿足現在的要求。因此,如何快速積累編程經驗就成了新手的當務之急。顯然,單單依靠項目來積累編程經驗是非常慢的。
本書圖文並茂、難易並舉,匯集了282個日常開發中應用廣泛的實例,內容涵蓋了C語言編程的方方面面。每個實例分為實例說明、實現過程和技術要點3部分進行講解。通過對本書的學習,不僅能快速掌握相關知識點,還可以逐步提升編程能力。
本書內容
本書以C語言的基礎知識結構為框架,給出了每部分知識中可能遇到的疑難問題或開發技巧。本書共分17章,主要包括初識C語言、簡單的C程序、演算法入門、常用數據類型、運算符與表達式、數據輸入與輸出函數、選擇和分支結構程序設計、循環結構、數組、函數編程基礎、指針、常用數據結構、位運算操作符、存儲管理、預處理和函數類型、文件讀寫、圖形圖像處理。
為了更清晰地闡述問題和給出問題的解決方案,本書設置了以下欄目。
* 實例說明:詳細描述本實例的用途,並給出實例的運行結果圖。
* 實現過程:逐步講解如何解決本實例的問題,並給出關鍵代碼、注意事項等。
* 技術要點:對本實例使用的關鍵技術進行總結,方便日後使用。
本書特色
* 貼近應用。本書精選的實例都真正來自開發一線。以實例形式進行講解,使其更容易被讀者接受。
* 橫向鏈接。本書知識框架與《C語言開發入門及項目實戰》一書相對應,可以在學習完《C語言開發入門及項目實戰》一書的基礎上使用本書,以提高自己的技能。
* 解析透徹。本書對每個問題的相關知識進行細致地講解,並進行知識拓展,使讀者不僅知其然而且知其所以然。
* 授人以漁。本書在講解技術的同時,還注重對讀者能力的培養,使讀者掌握分析問題與解決問題的能力。
本書配套資源
本書提供了內容豐富的配套資源,包括源程序、素材,以及模塊庫、案例庫、題庫、素材庫等多項輔助內容,讀者朋友可以通過如下方式獲取。
第1種方式:
(1)登錄清華大學出版社的網站,在網頁右上角的搜索文本框中輸入本書書名(注意區分大小寫和留出空格),或者輸入本書關鍵字,或者輸入本書ISBN號(注意去掉ISBN號間隔線「-」),單擊「搜索」按鈕。
(2)找到本書後單擊超鏈接,在該書的網頁下側單擊「網路資源」超鏈接,即可下載。
第2種方式:
訪問本書的新浪微博C語言圖書,找到配套資源的鏈接地址進行下載。
讀者人群
本書非常適合以下人員閱讀:
? C語言編程行業的開發人員
? 有一定語言基礎,想進一步提高技能的人員
? 大中專院校的老師和學生
? 即將走向工作崗位的大學畢業生
? 相關培訓機構的老師和學員
? C語言編程愛好者
Ⅷ C語言經典編程282例的目錄
第1章 初識C語言 1
實例001 第一個C語言程序 2
實例002 一個完整的C語言程序 2
實例003 輸出名言 3
實例004 用TC 2.0打開文件 4
實例005 計算正方形的周長 5
第2章 簡單的C程序 6
實例006 輸出一個正方形 7
實例007 輸出一個三角形 8
實例008 一個簡單的求和程序 9
實例009 求10! 10
實例010 3個數由小到大排序 11
實例011 猴子吃桃 13
實例012 陽陽買蘋果 14
第3章 演算法入門 15
實例013 任意次方後的最後三位 16
實例014 計算某日是該年的第幾天 16
實例015 婚禮上的謊言 18
實例016 百元買百雞 19
實例017 打漁曬網問題 20
實例018 判斷三角形的類型 22
實例019 直接插入排序 23
實例020 希爾排序 25
實例021 冒泡排序 26
實例022 快速排序 27
實例023 選擇排序 28
實例024 歸並排序 29
實例025 二分查找 31
實例026 分塊查找 32
實例027 哈希查找 34
實例028 斐波那契數列 37
實例029 哥德巴赫猜想 38
實例030 尼科徹斯定理 39
第4章 常用數據類型 41
實例031 數值型常量的使用 42
實例032 字元型變數的使用 42
實例033 求100~200之間的素數 43
實例034 利用#輸出三角形 44
實例035 十進制轉換為二進制 45
實例036 n進制轉換為十進制 46
實例037 小球下落問題 48
實例038 巧分蘋果 49
實例039 老師分糖果 50
實例040 IP地址形式輸出 51
實例041 特殊的完全平方數 52
實例042 一數三平方 54
實例043 求等差數列 55
實例044 親密數 56
實例045 自守數 57
第5章 運算符與表達式 60
實例046 求二元一次不定方程 61
實例047 可逆素數 63
實例048 判斷閏年 64
實例049 黑紙與白紙 65
實例050 阿姆斯特朗數 67
實例051 最大公約數和最小公倍數 67
實例052 求一元二次方程的根 69
實例053 自然對數的底e的計算 70
實例054 滿足abcd=(ab+cd)2的數 70
實例055 整數加減法練習 71
實例056 判斷整倍數 73
實例057 階梯問題 73
實例058 乘積大於和的數 74
實例059 求各位數之和為5的數 75
第6章 數據輸入與輸出函數 77
實例060 使用字元函數輸入/輸出字元 78
實例061 輸出相對的最小整數 79
實例062 將小寫字母轉換為大寫字母 80
實例063 水池注水問題 80
實例064 用*號輸出圖案 81
實例065 輸出一個字元的前驅字元 82
實例066 求學生總成績和平均成績 83
實例067 迴文素數 84
第7章 選擇和分支結構程序設計 86
實例068 判斷偶數 87
實例069 判斷字母是否為大寫 88
實例070 檢查字元類型 89
實例071 求最低分和最高分 90
實例072 模擬自動售貨機 91
實例073 計算工資 93
實例074 平方和值判斷 94
實例075 加油站加油 95
實例076 簡單計算器 97
第8章 循環結構 98
實例077 使用while語句求n! 99
實例078 使用while為用戶提供
菜單顯示 100
實例079 一元錢的兌換方案 102
實例080 特殊等式 103
實例081 列印乘法口訣表 104
實例082 平方和運算的問題 105
實例083 求從鍵盤中輸入字元的個數 106
實例084 列印楊輝三角 108
實例085 求總數問題 109
實例086 綵球問題 110
實例087 新同學年齡 112
實例088 燈塔數量 113
實例089 計算12+22+…+102 114
實例090 循環顯示隨機數 115
實例091 賣西瓜 116
實例092 銀行存款問題 117
實例093 統計不及格的人數 118
實例094 猜數字游戲 119
第9章 數組 123
實例095 求各元素之和 124
實例096 使用二維數組保存數據 125
實例097 計算字元串中有多少個單詞 126
實例098 不使用strcpy()函數實現
字元串復制功能 127
實例099 逆序存放數據 129
實例100 相鄰元素之和 130
實例101 選票統計 131
實例102 使用數組統計學生成績 132
實例103 查找數組中的最值 134
實例104 判斷一個數是否存在數組中 135
實例105 求二維數組對角線之和 136
實例106 模擬比賽打分 137
實例107 矩陣的轉置 139
實例108 設計魔方陣 141
實例109 字元升序排列 142
實例110 在指定位置插入字元 144
實例111 刪除字元串中的連續字元 146
實例112 統計各種字元個數 147
實例113 字元串替換 148
實例114 迴文字元串 150
實例115 字元串加密和解密 151
實例116 對調最大數與最小數位置 153
第10章 函數編程基礎 155
實例117 輸出兩個數中的最大值 156
實例118 判斷素數 157
實例119 遞歸解決年齡問題 158
實例120 遞歸解決分魚問題 159
實例121 小數分離 160
實例122 求任意數的n次冪 161
實例123 固定格式輸出當前時間 163
實例124 設計函數計算學生平均身高 164
實例125 求數組元素中的最小值 165
實例126 列印1~5的階乘 166
實例127 求最大公約數和最小公倍數 167
實例128 求直角三角形的斜邊 168
實例129 相對的最小整數 169
實例130 當前時間轉換 170
實例131 顯示程序運行時間 171
實例132 顯示當前日期及時間 172
實例133 設置DOS系統日期 173
實例134 設置DOS系統時間 174
實例135 讀取並設置BIOS的時鍾 175
實例136 任意大寫字母轉小寫 176
實例137 字元串復制到指定空間 176
實例138 查找位置信息 177
實例139 復制當前目錄 179
實例140 產生唯一文件 180
實例141 不同亮度顯示 181
實例142 字母檢測 182
實例143 建立目錄 183
實例144 刪除目錄 184
實例145 對數組進行升序和降序排序 185
實例146 設置組合鍵 187
實例147 獲取當前日期與時間 188
實例148 獲取當地日期與時間 189
實例149 獲取格林尼治平時 190
實例150 設置系統日期 191
實例151 獲取BIOS常規內存容量 193
實例152 讀/寫BIOS計時器 194
實例153 獲取CMOS密碼 195
實例154 獲取Ctrl+Break消息 197
實例155 滑鼠中斷 198
實例156 設置文本顯示模式 200
實例157 顯卡類型測試 204
實例158 獲取系統配置信息 206
實例159 訪問系統temp中的文件 209
實例160 控制揚聲器聲音 210
實例161 獲取Caps Lock鍵狀態 211
實例162 獲取環境變數 212
實例163 貪吃蛇游戲 213
實例164 五子棋游戲 219
實例165 彈力球游戲 227
第11章 指針 235
實例166 使用指針實現整數排序 236
實例167 指向結構體變數的指針 237
實例168 使用指針輸出數組元素 238
實例169 使用指針查找數列中的
最大值和最小值 240
實例170 使用指針的指針輸出字元串 241
實例171 使用指向指針的指針對
字元串排序 242
實例172 使用返回指針的函數查找
最大值 244
實例173 使用指針連接兩個字元串 245
實例174 用指針實現逆序存放數
組元素值 247
實例175 用指針數組構造字元串數組 248
實例176 用指針函數輸出學生成績 249
實例177 尋找相同元素的指針 251
實例178 查找成績不及格的學生 252
實例179 使用指針實現冒泡排序 254
實例180 輸入月份號並輸出英文月份名 255
實例181 使用指針插入元素 256
實例182 使用指針交換兩個數組
中的最大值 257
實例183 輸出二維數組有關值 259
實例184 輸出二維數組任一行
任一列值 260
實例185 將若干字元串按照字母
順序輸出 262
實例186 用指向函數的指針比較大小 263
實例187 尋找指定元素的指針 265
實例188 字元串的匹配 266
第12章 常用數據結構 269
實例189 比較計數 270
實例190 找出最高分 271
實例191 信息查詢 272
實例192 候選人選票程序 274
實例193 計算開機時間 276
實例194 取出整型數據的高位元組數據 277
實例195 使用共用體存放學生和
老師信息 278
實例196 使用共用體處理任意類型數據 279
實例197 輸出今天星期幾 281
實例198 創建單向鏈表 282
實例199 創建雙向鏈表 284
實例200 創建循環鏈表 287
實例201 使用頭插入法建立單鏈表 289
實例202 雙鏈表逆序輸出 291
實例203 約瑟夫環 293
實例204 創建順序表並插入元素 294
實例205 合並兩個鏈表 296
實例206 單鏈表節點逆置 298
實例207 應用棧實現進制轉換 300
實例208 用棧實現行編輯程序 303
實例209 用棧設置密碼 306
實例210 括弧匹配檢測 310
實例211 用棧及遞歸計算多項式 313
實例212 鏈隊列 315
實例213 循環緩沖區問題 318
實例214 簡單的文本編輯器 321
第13章 位運算操作符 326
實例215 使二進制數特定位翻轉 327
實例216 將輸入的數左移兩位並輸出 327
實例217 編寫循環移位函數 328
實例218 取出給定16位二進制數
的奇數位 330
實例219 取一個整數的後四位 331
實例220 求一個數的補碼 332
實例221 普通的位運算 333
實例222 整數與0異或 334
第14章 存儲管理 335
實例223 使用malloc()函數分配內存 336
實例224 調用calloc()函數動態分
配內存 337
實例225 為具有3個數組元素的
數組分配內存 338
實例226 為二維數組動態分配內存 338
實例227 商品信息的動態存放 340
第15章 預處理和函數類型 341
實例228 用不帶參數的宏定義求
平行四邊形面積 342
實例229 使用宏定義實現數組值
的互換 343
實例230 編寫頭文件包含圓面積的
計算公式 344
實例231 利用宏定義求偶數和 345
實例232 利用文件包含設計輸出模式 346
實例233 使用條件編譯隱藏密碼 347
第16章 文件讀寫 349
實例234 關閉所有打開的文件 350
實例235 同時顯示兩個文件的內容 352
實例236 創建文件 353
實例237 格式化讀寫文件 355
實例238 創建臨時文件 357
實例239 成塊讀寫操作 358
實例240 隨機讀寫文件 360
實例241 以行為單位讀寫文件 362
實例242 查找文件 364
實例243 重命名文件 364
實例244 刪除文件 366
實例245 刪除文件中的記錄 367
實例246 文件內容復制 369
實例247 錯誤處理 370
實例248 合並兩個文件信息 373
實例249 統計文件內容 375
實例250 讀取磁碟文件 376
實例251 將數據寫入磁碟文件 378
實例252 顯示目錄內同類型文件 379
實例253 文件分割 382
實例254 文件加密 384
實例255 自毀程序 386
實例256 明碼序列號保護 388
實例257 非明碼序列號保護 389
實例258 愷撒加密 391
實例259 RSA加密 394
實例260 獲取當前磁碟空間信息 396
實例261 DES加密 398
實例262 獲取系統配置信息 403
實例263 獲取寄存器信息 405
第17章 圖形圖像處理 407
實例264 繪制直線 408
實例265 繪制矩形 409
實例266 繪製表格 411
實例267 繪制立體窗口 412
實例268 繪制橢圓 414
實例269 繪制圓弧線 415
實例270 繪制扇區 417
實例271 繪制空心圓 418
實例272 繪制箭頭 419
實例273 繪制正弦曲線 420
實例274 繪制綵帶 421
實例275 繪制黃色網格填充的橢圓 423
實例276 繪制紅色間隔點填充的
多邊形 424
實例277 繪制五角星 425
實例278 顏色變換 427
實例279 彩色扇形 428
實例280 輸出不同字體 429
實例281 相同圖案的輸出 431
實例282 設置文本及背景顏色 433