清華大佬耗費(fèi)三個(gè)月吐血整理的幾百G的資源,免費(fèi)分享!....>>>
C語(yǔ)言的學(xué)習(xí)基礎(chǔ),100個(gè)經(jīng)典的算法 C語(yǔ)言的學(xué)習(xí)要從基礎(chǔ)開(kāi)始,這里是100個(gè)經(jīng)典的算法-1C語(yǔ)言的學(xué)習(xí)要從基礎(chǔ)開(kāi)始,這里是100個(gè)經(jīng)典的算法 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔 子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù) 為多少? __________________________________________________________________ 程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21.... ___________________________________________________________________ 程序源代碼: 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");/*控制輸出,每行四個(gè)*/ f1=f1+f2;/*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/ f2=f1+f2;/*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/ } } 上題還可用一維數(shù)組處理,you try! 題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。 __________________________________________________________________ 程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整 除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。 ___________________________________________________________________ 程序源代碼: #include "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); } 題目:打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位 數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?53=1的三次方 +5的三次方+3的三次方。 __________________________________________________________________ 程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。 ___________________________________________________________________ 程序源代碼: 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;/*分解出個(gè)位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n"); } 題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。 __________________________________________________________________ 程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完 成: (1)如果這個(gè)質(zhì)數(shù)恰等于n,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束,打印出即可。 (2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正 整數(shù)你n,重復(fù)執(zhí)行第一步。 (3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。 ___________________________________________________________________ 程序源代碼: /* 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); } 題目:利用條件運(yùn)算符的嵌套來(lái)完成此題:學(xué)習(xí)成績(jī)>=90分的同學(xué)用A表示,60 -89分之間的用B表示,60分以下的用C表示。 __________________________________________________________________ 程序分析:(a>b)?a:b這是條件運(yùn)算符的基本例子。 ___________________________________________________________________ 程序源代碼: 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); } 題目:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。 __________________________________________________________________ 程序分析:利用輾除法。 ___________________________________________________________________ 程序源代碼: 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); } 題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù) 。 __________________________________________________________________ 程序分析:利用while語(yǔ)句,條件為輸入的字符不為'\n'. ___________________________________________________________________ 程序源代碼: #include "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); } 題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字。例如 2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤(pán)控制。 __________________________________________________________________ 程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)的值。 ___________________________________________________________________ 程序源代碼: 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); } 題目:一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為“完數(shù)”。例如6=1+2 +3.編程找出1000以?xún)?nèi)的所有完數(shù)。 ___________________________________________________________________ 程序源代碼: 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]); } } } 題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下, 求它在第10次落地時(shí),共經(jīng)過(guò)多少米?第10次反彈多高? ___________________________________________________________________ 程序源代碼: main() { float sn=100.0,hn=sn/2; int n; for(n=2;n<=10;n++) { sn=sn+2*hn;/*第n次落地時(shí)共經(jīng)過(guò)的米數(shù)*/ hn=hn/2; /*第n次反跳高度*/ } printf("the total of road is %f\n",sn); printf("the tenth is %f meter\n",hn); } 題目:一只猴子摘了N個(gè)桃子第一天吃了一半又多吃了一個(gè),第二天又吃了余下的 一半又多吃了一個(gè),到第十天的時(shí)候發(fā)現(xiàn)還有一個(gè). ___________________________________________________________________ 程序源代碼: /* 猴子吃桃問(wèn)題 */ main() { int i,s,n=1; for(i=1;i<10;i++) { s=(n+1)*2 n=s; } printf("第一天共摘了%d個(gè)桃\n",s); } 迭代法求方程根 ___________________________________________________________________ /* 迭代法求一個(gè)數(shù)的平方根 */ #define Epsilon 1.0E-6 /*控制解的精度*/ #include<math.h> main() { float a,x0,x1; printf("請(qǐng)輸入要求的數(shù):"); scanf("%f",&a); x0=a/2; x1=(x0+a/x0)/2; while(fabs(x1-x0)>=Epsilon) { x0=x1; x1=(x0+a/x0)/2; } printf("%f的平方根:%f.5\n",x1); } /* 上題的另一種算法 */ #define Epsilon 1.0E-6 /*控制解的精度*/ #include <stdio.h> #include <math.h> main() { float num,pre,this; do { scanf("%f",&num);/*輸入要求平方根的數(shù)*/ }while(num<0); if (num==0) printf("the root is 0"); else { this=1; do { pre=this; this=(pre+num/pre)/2; }while(fabs(pre-this)>Epsilon);/*用解的精度,控制循環(huán)次數(shù)*/ } printf("the root is %f",this); } 用牛頓迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根 /* 牛頓迭代法 */ #define Epsilon 1.0E-6 /*控制解的精度*/ #include<math.h> main() { float x1,x0=1.5; x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3); while(fabs(x1-x0>=Epsilon) { x0=x1; x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3); } printf("方程的根為%f\n",x1); } 用二分法求上題 /* 二分法 */ #define Epsilon 1.0E-5 /*控制解的精度*/ #include<math.h> main() { folat x1,x2,x0,f1,f2,f0; x0=(x1+x2)/2; f0=2*x0*x0*x0-4*x0*x0+3*x0-6; /* 求中點(diǎn)的函數(shù)值 */ while(fabs(f0)>=Epsilon) { if(f0*f1<0) { x2=x0; f2=2*x2*x2*x2-4*x2*x2+3*x2-6; } if(f0*f2<0) { x1=x0; f1=2*x1*x1*x1-4*x1*x1+3*x1-6; } x0=(x1+x2)/2; f0=2*x0*x0*x0-4*x0*x0+3*x0-6; } printf("用二分法求得方程的根:%f\n",x0); } 題目:打印出如下圖案(菱形) * *** ****** ******** ****** *** * ___________________________________________________________________ 程序分析:先把圖形分成兩部分來(lái)看待,前四行一個(gè)規(guī)律,后三行一個(gè)規(guī)律,利 用雙重for循環(huán),第一層控制行,第二層控制列。 ___________________________________________________________________ 程序源代碼: 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"); } } 題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同, 十位與千位相同。 ___________________________________________________________________ 程序分析:同29例 ___________________________________________________________________ 程序源代碼: 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)/*個(gè)位等于萬(wàn)位并且十位等于千位*/ printf("this number is a huiwen\n"); else printf("this number is not a huiwen\n"); } 題目:請(qǐng)輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾,如果第一個(gè)字母一樣, 則繼續(xù)判斷第二個(gè)字母。 ___________________________________________________________________ 程序分析:用情況語(yǔ)句比較好,如果第一個(gè)字母一樣,則判斷用情況語(yǔ)句或if語(yǔ) 句判斷第二個(gè)字母。 ___________________________________________________________________ 程序源代碼: #include <stdio.h> void main() { char letter; printf("please input the first letter of someday\n"); while ((letter=getch())!='Y') /*當(dāng)所按字母為Y時(shí)才結(jié)束*/ { 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"); } } } 題目:Press any key to change color, do you want to try it. Please hurry up! ___________________________________________________________________ 程序源代碼: #include <conio.h> void main(void) { int color; for (color = 0; color < 8; color++) { textbackground(color); /*設(shè)置文本的背景顏色*/ cprintf("This is color %d\r\n", color); cprintf("ress any key to continue\r\n"); getch(); /*輸入字符看不見(jiàn)*/ } } 題目:學(xué)習(xí)gotoxy()與clrscr()函數(shù) ___________________________________________________________________ 程序源代碼: #include <conio.h> void main(void) { clrscr(); /*清屏函數(shù)*/ textbackground(2); gotoxy(1, 5); /*定位函數(shù)*/ cprintf("Output at row 5 column 1\n"); textbackground(3); gotoxy(20, 10); cprintf("Output at row 10 column 20\n"); } 題目:練習(xí)函數(shù)調(diào)用 ___________________________________________________________________ 程序源代碼: #include <stdio.h> void hello_world(void) { printf("Hello, world!\n"); } void three_hellos(void) { int counter; for (counter = 1; counter <= 3; counter++) hello_world();/*調(diào)用此函數(shù)*/ } void main(void) { three_hellos();/*調(diào)用此函數(shù)*/ } 題目:文本顏色設(shè)置 ___________________________________________________________________ 程序源代碼: #include <conio.h> void main(void) { int color; for (color = 1; color < 16; color++) { textcolor(color);/*設(shè)置文本顏色*/ cprintf("This is color %d\r\n", color); } textcolor(128 + 15); cprintf("This is blinking\r\n"); } 題目:求100之內(nèi)的素?cái)?shù) ___________________________________________________________________ 程序源代碼: #include <stdio.h> #include "math.h" #define N 101 main() { int i,j,line,a[N]; for(i=2;i<N;i++) a=i; for(i=2;i<sqrt(N);i++) for(j=i+1;j<N;j++) { if(a!=0&&a[j]!=0) if(a[j]%a==0) a[j]=0;} printf("\n"); for(i=2,line=0;i<N;i++) { if(a!=0) {printf("%5d",a); line++;} if(line==10) {printf("\n"); line=0;} } } 題目:對(duì)10個(gè)數(shù)進(jìn)行排序 ___________________________________________________________________ 程序分析:可以利用選擇法,即從后9個(gè)比較過(guò)程中,選擇一個(gè)最小的與第一個(gè) 元素交換,下次類(lèi)推,即用第二個(gè)元素與后8個(gè)進(jìn)行比較,并進(jìn)行交換。 程序源代碼: #define N 10 main() {int i,j,min,tem,a[N]; /*input data*/ printf("please input ten num:\n"); for(i=0;i<N;i++) { printf("a[%d]=",i); scanf("%d",&a);} printf("\n"); for(i=0;i<N;i++) printf("%5d",a); printf("\n"); /*sort ten num*/ for(i=0;i<N-1;i++) {min=i; for(j=i+1;j<N;j++) if(a[min]>a[j]) min=j; tem=a; a=a[min]; a[min]=tem; } /*output data*/ printf("After sorted \n"); for(i=0;i<N;i++) printf("%5d",a); } 題目:求一個(gè)3*3矩陣對(duì)角線(xiàn)元素之和 ___________________________________________________________________ 程序分析:利用雙重for循環(huán)控制輸入二維數(shù)組,再將a累加后輸出。 ___________________________________________________________________ 程序源代碼: main() { float a[3][3],sum=0; int i,j; printf("please input rectangle element:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%f",&a[j]); for(i=0;i<3;i++) sum=sum+a; printf("duijiaoxian he is %6.2f",sum); } 題目:有一個(gè)已經(jīng)排好序的數(shù)組。現(xiàn)輸入一個(gè)數(shù),要求按原來(lái)的規(guī)律將它插入數(shù) 組中。 ___________________________________________________________________ 程序分析:首先判斷此數(shù)是否大于最后一個(gè)數(shù),然后再考慮插入中間的數(shù)的情況 ,插入后此元素之后的數(shù),依次后移一個(gè)位置。 ___________________________________________________________________ 程序源代碼: main() { int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; printf("original array is:\n"); for(i=0;i<10;i++) printf("%5d",a); printf("\n"); printf("insert a new number:"); scanf("%d",&number); end=a[9]; if(number>end) a[10]=number; else {for(i=0;i<10;i++) { if(a>number) {temp1=a; a=number; for(j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<11;i++) printf("%6d",a); } 題目:將一個(gè)數(shù)組逆序輸出。 ___________________________________________________________________ 程序分析:用第一個(gè)與最后一個(gè)交換。 ___________________________________________________________________ 程序源代碼: #define N 5 main() { int a[N]={9,6,5,4,1},i,temp; printf("\n original array:\n"); for(i=0;i<N;i++) printf("%4d",a); for(i=0;i<N/2;i++) {temp=a; a=a[N-i-1]; a[N-i-1]=temp; } printf("\n sorted array:\n"); for(i=0;i<N;i++) printf("%4d",a); } 題目:學(xué)習(xí)static定義靜態(tài)變量的用法 ___________________________________________________________________ 程序源代碼: #include "stdio.h" varfunc() { int var=0; static int static_var=0; printf("\40:var equal %d \n",var); printf("\40:static var equal %d \n",static_var); printf("\n"); var++; static_var++; } void main() {int i; for(i=0;i<3;i++) varfunc(); } 題目:學(xué)習(xí)使用auto定義變量的用法 ___________________________________________________________________ 程序源代碼: #include "stdio.h" main() {int i,num; num=2; for (i=0;i<3;i++) { printf("\40: The num equal %d \n",num); num++; { auto int num=1; printf("\40: The internal block num equal %d \n",num); num++; } } } C語(yǔ)言的學(xué)基礎(chǔ),100個(gè)經(jīng)典的算法-2 程序源代碼: #include "stdio.h" main() { int i,num; num=2; for(i=0;i<3;i++) { printf("\40: The num equal %d \n",num); num++; { static int num=1; printf("\40:The internal block num equal %d\n",num); num++; } } } 題目:學(xué)習(xí)使用external的用法。 ___________________________________________________________________ 程序源代碼: #include "stdio.h" int a,b,c; void add() { int a; a=3; c=a+b; } void main() { a=b=4; add(); printf("The value of c is equal to %d\n",c); } 題目:學(xué)習(xí)使用register定義變量的方法。 ___________________________________________________________________ 程序源代碼: void main() { register int i; int tmp=0; for(i=1;i<=100;i++) tmp+=i; printf("The sum is %d\n",tmp); } 題目:宏#define命令練習(xí)(1) ___________________________________________________________________ 程序源代碼: #include "stdio.h" #define TRUE 1 #define FALSE 0 #define SQ(x) (x)*(x) void main() { int num; int again=1; printf("\40: Program will stop if input value less than 50.\n"); while(again) { printf("\40lease input number==>"); scanf("%d",&num); printf("\40:The square for this number is %d \n",SQ(num)); if(num>=50) again=TRUE; else again=FALSE; } } 題目:宏#define命令練習(xí)(2) ___________________________________________________________________ 程序源代碼: #include "stdio.h" #define exchange(a,b) { \ /*宏定義中允許包含兩道衣裳命令的情形,此時(shí)必須在最右邊加上"\"*/ int t;\ t=a;\ a=b;\ b=t;\ } void main(void) { int x=10; int y=20; printf("x=%d; y=%d\n",x,y); exchange(x,y); printf("x=%d; y=%d\n",x,y); } 題目:宏#define命令練習(xí)(3) ___________________________________________________________________ 程序源代碼: #define LAG > #define SMA < #define EQ == #include "stdio.h" void main() { int i=10; int j=20; if(i LAG j) printf("\40: %d larger than %d \n",i,j); else if(i EQ j) printf("\40: %d equal to %d \n",i,j); else if(i SMA j) printf("\40:%d smaller than %d \n",i,j); else printf("\40: No such value.\n"); } 題目:#if #ifdef和#ifndef的綜合應(yīng)用。 ___________________________________________________________________ 程序源代碼: #include "stdio.h" #define MAX #define MAXIMUM(x,y) (x>y)?x:y #define MINIMUM(x,y) (x>y)?y:x void main() { int a=10,b=20; #ifdef MAX printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #else printf("\40: The lower one is %d\n",MINIMUM(a,b)); #endif #ifndef MIN printf("\40: The lower one is %d\n",MINIMUM(a,b)); #else printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #endif #undef MAX #ifdef MAX printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #else printf("\40: The lower one is %d\n",MINIMUM(a,b)); #endif #define MIN #ifndef MIN printf("\40: The lower one is %d\n",MINIMUM(a,b)); #else printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #endif } 題目:#include 的應(yīng)用練習(xí) ___________________________________________________________________ 程序源代碼: test.h 文件如下: #define LAG > #define SMA < #define EQ == #include "test.h" /*一個(gè)新文件50.c,包含test.h*/ #include "stdio.h" void main() { int i=10; int j=20; if(i LAG j) printf("\40: %d larger than %d \n",i,j); else if(i EQ j) printf("\40: %d equal to %d \n",i,j); else if(i SMA j) printf("\40:%d smaller than %d \n",i,j); else printf("\40: No such value.\n"); } 題目:學(xué)習(xí)使用按位與 & 。 ___________________________________________________________________ 程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 ___________________________________________________________________ 程序源代碼: #include "stdio.h" main() { int a,b; a=077; b=a&3; printf("\40: The a & b(decimal) is %d \n",b); b&=7; printf("\40: The a & b(decimal) is %d \n",b); } 題目:學(xué)習(xí)使用按位或 | 。 ___________________________________________________________________ 程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 ___________________________________________________________________ 程序源代碼: #include "stdio.h" main() { int a,b; a=077; b=a|3; printf("\40: The a & b(decimal) is %d \n",b); b|=7; printf("\40: The a & b(decimal) is %d \n",b); } 題目:學(xué)習(xí)使用按位異或 ^ 。 ___________________________________________________________________ 程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0 ___________________________________________________________________ 程序源代碼: #include "stdio.h" main() { int a,b; a=077; b=a^3; printf("\40: The a & b(decimal) is %d \n",b); b^=7; printf("\40: The a & b(decimal) is %d \n",b); } 題目:取一個(gè)整數(shù)a從右端開(kāi)始的4~7位。 ___________________________________________________________________ 程序分析:可以這樣考慮: (1)先使a右移4位。 (2)設(shè)置一個(gè)低4位全為1,其余全為0的數(shù)。可用~(~0<<4) (3)將上面二者進(jìn)行&運(yùn)算。 ___________________________________________________________________ 程序源代碼: main() { unsigned a,b,c,d; scanf("%o",&a); b=a>>4; c=~(~0<<4); d=b&c; printf("%o\n%o\n",a,d); } 題目:學(xué)習(xí)使用按位取反~。 ___________________________________________________________________ 程序分析:~0=1; ~1=0; ___________________________________________________________________ 程序源代碼: #include "stdio.h" main() { int a,b; a=234; b=~a; printf("\40: The a's 1 complement(decimal) is %d \n",b); a=~a; printf("\40: The a's 1 complement(hexidecimal) is %x \n",a); } 題目:畫(huà)圖,學(xué)用circle畫(huà)圓形。 ___________________________________________________________________ 程序源代碼: /*circle*/ #include "graphics.h" main() { int driver,mode,i; float j=1,k=1; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); for(i=0;i<=25;i++) { setcolor(8); circle(310,250,k); k=k+j; j=j+0.3; } } 題目:畫(huà)圖,學(xué)用line畫(huà)直線(xiàn)。 ___________________________________________________________________ 程序源代碼: #include "graphics.h" main() { int driver,mode,i; float x0,y0,y1,x1; float j=12,k; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(GREEN); x0=263;y0=263;y1=275;x1=275; for(i=0;i<=18;i++) { setcolor(5); line(x0,y0,x0,y1); x0=x0-5; y0=y0-5; x1=x1+5; y1=y1+5; j=j+10; } x0=263;y1=275;y0=263; for(i=0;i<=20;i++) { setcolor(5); line(x0,y0,x0,y1); x0=x0+5; y0=y0+5; y1=y1-5; } } 題目:畫(huà)圖,學(xué)用rectangle畫(huà)方形。 ___________________________________________________________________ 程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。 ___________________________________________________________________ 程序源代碼: #include "graphics.h" main() { int x0,y0,y1,x1,driver,mode,i; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); x0=263;y0=263;y1=275;x1=275; for(i=0;i<=18;i++) { setcolor(1); rectangle(x0,y0,x1,y1); x0=x0-5; y0=y0-5; x1=x1+5; y1=y1+5; } settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(150,40,"How beautiful it is!"); line(130,60,480,60); setcolor(2); circle(269,269,137); }