C++語言: 臨時自用代碼 POJ 上做做 ACM 的題
語言的學習基礎 , 100 個經典的算法
C 語言的學習要從基礎開始,這裡是 100 個經典的算法-1 C 語言的學習要從基礎開始,這裡是 100 個經典的算法
題目:古典問題:有一對兔子,從出生後第 3 個月起每個月都生一對兔子,小兔
子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數
為多少?
__________________________________________________________________
程式分析:兔子的規律為數列 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 ");
f1 = f1 + f2;
f2 = f1 + f2;
}
}
上題還可用一維數組處理, you try !
題目:判斷 101 - 200 之間有多少個素數,并輸出所有素數。
__________________________________________________________________
程式分析:判斷素數的方法:用一個數分别去除 2 到 sqrt( 這個數) ,如果能被整
除,則表明此數不是素數,反之是素數。
___________________________________________________________________
程式源代碼:
#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( " /n The total is %d" , h);
}
題目:列印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位
數字立方和等于該數本身。例如: 153 是一個“水仙花數”,因為 153 = 1 的三次方
+ 5 的三次方+ 3 的三次方。
__________________________________________________________________
程式分析:利用 for 循環控制 100 - 999 個數,每個數分解出個位,十位,百位。
___________________________________________________________________
程式源代碼:
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 ");
}
題目:将一個正整數分解質因數。例如:輸入 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 的值 , 重複執行第一步。
___________________________________________________________________
程式源代碼:
main()
{
int n , i;
printf( " /n please 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);
}
題目:利用條件運算符的嵌套來完成此題:學習成績 >= 90 分的同學用 A 表示, 60
- 89 分之間的用B 表示, 60 分以下的用 C 表示。
__________________________________________________________________
程式分析:( a >b) ? a:b 這是條件運算符的基本例子。
___________________________________________________________________
程式源代碼:
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);
}
題目:輸入兩個正整數 m 和n ,求其最大公約數和最小公倍數。
__________________________________________________________________
程式分析:利用輾除法。
___________________________________________________________________
程式源代碼:
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)
{
temp = a %b;
a =b;
b = temp;
}
printf( "gongyueshu:%d /n " , a);
printf( "gongbeishu:%d /n " , num1 * num2 / a);
}
題目:輸入一行字元,分别統計出其中英文字母、空格、數字和其它字元的個數
。
__________________________________________________________________
程式分析:利用 while 語句 , 條件為輸入的字元不為 '/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 是一個數字。例如
2 + 22 + 222 + 2222 + 22222( 此時共有 5 個數相加) ,幾個數相加有鍵盤控制。
__________________________________________________________________
程式分析:關鍵是計算出每一項的值。
___________________________________________________________________
程式源代碼:
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);
}
題目:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如 6 = 1 + 2
+ 3. 程式設計找出 1000 以内的所有完數。
___________________________________________________________________
程式源代碼:
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 次落地時,共經過多少米?第 10 次反彈多高?
___________________________________________________________________
程式源代碼:
main()
{
float sn = 100.0 , hn =sn / 2;
int n;
for(n = 2;n <= 10;n ++)
{
sn =sn + 2 * hn;
hn = hn / 2;
}
printf( "the total of road is %f /n " ,sn);
printf( "the tenth is %f meter /n " , hn);
}
題目:一隻猴子摘了N 個桃子第一天吃了一半又多吃了一個 , 第二天又吃了餘下的
一半又多吃了一個 , 到第十天的時候發現還有一個 .
___________________________________________________________________
程式源代碼:
main()
{
int i ,s ,n = 1;
for( i = 1; i < 10; i ++)
{
s =(n + 1) * 2
n =s;
}
printf( "第一天共摘了%d個桃 /n " ,s);
}
疊代法求方程根
___________________________________________________________________
#define Epsilon 1.0E-6
#include<math.h>
main()
{
float a , x0 , x1;
printf( "請輸入要求的數:");
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);
} 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);
}
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;
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);
}
題目:列印出如下圖案(菱形)
*
***
******
********
******
***
*
___________________________________________________________________
程式分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利
用雙重 for 循環,第一層控制行,第二層控制列。
___________________________________________________________________
程式源代碼:
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 ");
}
}
題目:一個 5 位數,判斷它是不是回文數。即 12321 是回文數,個位與萬位相同,
十位與千位相同。
___________________________________________________________________
程式分析:同 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)
printf( "this number is a huiwen /n ");
else
printf( "this number is not a huiwen /n ");
}
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,
則繼續判斷第二個字母。
___________________________________________________________________
程式分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或 if 語
句判斷第二個字母。
___________________________________________________________________
程式源代碼:
#include <stdio.h>
void main()
{
char letter;
printf( "please input the first letter of someday /n ");
while (( letter = getch()) != '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 ");
}
}
}
題目: 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);
cprintf( "This is color %d /r/n " , color);
cprintf( "ress any key to continue /r/n ");
getch();
}
}
題目:學習 gotoxy() 與 clrscr() 函數
___________________________________________________________________
程式源代碼:
#include <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 ");
}
題目:練習函數調用
___________________________________________________________________
程式源代碼:
#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();
}
void main( void)
{
three_hellos();
}
題目:文本顔色設定
___________________________________________________________________
程式源代碼:
#include <conio.h>
void main( void)
{
int color;
for ( color = 1; color < 16; color ++)
{
textcolor( color);
cprintf( "This is color %d /r/n " , color);
}
textcolor( 128 + 15);
cprintf( "This is blinking /r/n ");
}
題目:求 100 之内的素數
___________________________________________________________________
程式源代碼:
#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 ;}
}
}
題目:對 10 個數進行排序
___________________________________________________________________
程式分析:可以利用選擇法,即從後 9 個比較過程中,選擇一個最小的與第一個
元素交換,下次類推,即用第二個元素與後 8 個進行比較,并進行交換。
程式源代碼:
#define N 10
main()
{ int i , j , min , tem , a [N ];
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 ");
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;
}
printf( "After sorted /n ");
for( i = 0; i <N; i ++)
printf( "%5d" , a);
}
題目:求一個 3 * 3 矩陣對角線元素之和
___________________________________________________________________
程式分析:利用雙重 for 循環控制輸入二維數組,再将 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);
}
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律将它插入數
組中。
___________________________________________________________________
程式分析:首先判斷此數是否大于最後一個數,然後再考慮插入中間的數的情況
,插入後此元素之後的數,依次後移一個位置。
___________________________________________________________________
程式源代碼:
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);
}
題目:将一個數組逆序輸出。
___________________________________________________________________
程式分析:用第一個與最後一個交換。
___________________________________________________________________
程式源代碼:
#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);
}
題目:學習 static 定義靜态變量的用法
___________________________________________________________________
程式源代碼:
#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();
}
題目:學習使用 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 語言的學基礎, 100 個經典的算法-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 ++;
}
}
}
題目:學習使用 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);
}
題目:學習使用 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 指令練習( 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( " /40 lease 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 指令練習( 2)
___________________________________________________________________
程式源代碼:
#include "stdio.h"
#define exchange(a,b)
{ /
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 指令練習( 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 的綜合應用。
___________________________________________________________________
程式源代碼:
#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 的應用練習
___________________________________________________________________
程式源代碼:
test . h 檔案如下:
#define LAG >
#define SMA <
#define EQ ==
#include "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 ");
}
題目:學習使用按位與 & 。
___________________________________________________________________
程式分析: 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);
}
題目:學習使用按位或 | 。
___________________________________________________________________
程式分析: 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);
}
題目:學習使用按位異或 ^ 。
___________________________________________________________________
程式分析: 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);
}
題目:取一個整數 a 從右端開始的 4 ~ 7 位。
___________________________________________________________________
程式分析:可以這樣考慮:
( 1) 先使 a 右移 4 位。
( 2) 設定一個低 4 位全為 1 , 其餘全為 0 的數。可用 ~( ~ 0 << 4)
( 3) 将上面二者進行 & 運算。
___________________________________________________________________
程式源代碼:
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);
}
題目:學習使用按位取反 ~ 。
___________________________________________________________________
程式分析: ~ 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);
}
題目:畫圖,學用 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;
}
}
題目:畫圖,學用 line 畫直線。
___________________________________________________________________
程式源代碼:
#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;
}
}
題目:畫圖,學用 rectangle 畫方形。
___________________________________________________________________
程式分析:利用 for 循環控制 100 - 999 個數,每個數分解出個位,十位,百位。
___________________________________________________________________
程式源代碼:
#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);
}