高級超經典c語言編程題目,高級超經典c語言編程題目答案

本文目錄一覽:

c語言編程100題,有沒有大神幫幫忙

您好,c語言經典100題:

【程序1】

題目:有1,2,3,4個數字,能組成多少個互不相同且無重複數字的三位數

都是多少

1.程序分析:可填在百位,十位,個位的數字都是1,2,3,4.組成所有的排列後再去

掉不滿足條件的排列.

2.程序源代碼:

main()

{

int

i,j,k;

printf(“\n”);

for(i1;i5;i++)

/*以下為三重循環*/

for(j1;j5;j++)

for

(k1;k5;k++)

{

if

(i!ki!jj!k)

/*確保i,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);

bonus1100000*0.1;bonus2bonus1+100000*0.75;

bonus4bonus2+200000*0.5;

bonus6bonus4+200000*0.3;

bonus10bonus6+400000*0.15;

if(i100000)

bonusi*0.1;

else

if(i200000)

bonusbonus1+(i-100000)*0.075;

else

if(i400000)

bonusbonus2+(i-200000)*0.05;

else

if(i600000)

bonusbonus4+(i-400000)*0.03;

else

if(i1000000)

bonusbonus6+(i-600000)*0.015;

else

bonusbonus10+(i-1000000)*0.01;

printf(“bonus%d”,bonus);

}

【程序3】

題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少

1.程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後

的結果滿足如下條件,即是結果.請看具體分析:

2.程序源代碼:

#include

“math.h”

main()

{

long

int

i,x,y,z;

for

(i1;i2)/*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf(“it

is

the

%dth

day.”,sum);}

【程序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:sum0;break;

case

2:sum31;break;

case

3:sum59;break;

case

4:sum90;break;

case

5:sum120;break;

case

6:sum151;break;

case

7:sum181;break;

case

8:sum212;break;

case

9:sum243;break;

case

10:sum273;break;

case

11:sum304;break;

case

12:sum334;break;

default:printf(“data

error”);break;

}

sumsum+day;

/*再加上某天的天數*/

if(year%4000||(year%40year%100!0))/*判斷是不是閏年*/

leap1;

else

leap0;

if(leap1month2)/*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf(“It

is

the

%dth

day.”,sum);}

【程序5】

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出.

1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果xy則將x與y的值進行交換,

然後再用x與z進行比較,如果xz則將x與z的值進行交換,這樣能使x最小.

2.程序源代碼:

main()

{

int

x,y,z,t;

scanf(“%d%d%d”,x,y,z);

if

(xy)

{tx;xy;yt;}

/*交換x,y的值*/

if(xz)

{tz;zx;xt;}/*交換x,z的值*/

if(yz)

{ty;yz;zt;}/*交換z,y的值*/

printf(“small

to

big:

%d

%d

%d\n”,x,y,z);

}

【程序6】

題目:用*號輸出字母c的圖案.

1.程序分析:可先用’*’號在紙上寫出字母c,再分行輸出.

2.程序源代碼:

#include

“stdio.h”

main()

{

printf(“hello

c-world!\n”);

printf(“

****\n”);

printf(“

*\n”);

printf(“

*

\n”);

printf(“

****\n”);

}

【程序7】

題目:輸出特殊圖案,請在c環境中運行,看一看,very

beautiful!

1.程序分析:字符共有256個.不同字符,圖形不一樣.

2.程序源代碼:

#include

“stdio.h”

main()

{

char

a176,b219;

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.程序源代碼:

#include

“stdio.h”

main()

{

int

i,j,result;

printf(“\n”);

for

(i1;i10;i++)

{

for(j1;j10;j++)

{

resulti*j;

printf(“%d*%d%-3d”,i,j,result);/*-3d表示左對齊,佔3位*/

}

printf(“\n”);/*每一行後換行*/

}

}

【程序9】

題目:要求輸出國際象棋棋盤.

1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格.

2.程序源代碼:

#include

“stdio.h”

main()

{

int

i,j;

for(i0;i8;i++)

{

for(j0;j8;j++)

if((i+j)%20)

printf(“%c%c”,219,219);

else

printf(“

“);

printf(“\n”);

}

}

【程序10】

題目:打印樓梯,同時在樓梯上方打印兩個笑臉.

1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數.

2.程序源代碼:

#include

“stdio.h”

main()

{

int

i,j;

printf(“\1\1\n”);/*輸出兩個笑臉*/

for(i1;i11;i++)

{

for(j1;ji;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;

f1f21;

for(i1;i20;i++)

{

printf(“%12ld

%12ld”,f1,f2);

if(i%20)

printf(“\n”);/*控制輸出,每行四個*/

f1f1+f2;

/*前兩個月加起來賦值給第三個月*/

f2f1+f2;

/*前兩個月加起來賦值給第三個月*/

}

}

【程序12】

題目:判斷101-200之間有多少個素數,並輸出所有素數.

1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,

則表明此數不是素數,反之是素數.

2.程序源代碼:

#include

“math.h”

main()

{

int

m,i,k,h0,leap1;

printf(“\n”);

for(m101;m200;m++)

{

ksqrt(m+1);

for(i2;ik;i++)

if(m%i0)

{leap0;break;}

if(leap)

{printf(“%-4d”,m);h++;

if(h%100)

printf(“\n”);

}

leap1;

}

printf(“\nthe

total

is

%d”,h);

}

求一些c編程題

C語言超級經典400道題目

1、C語言程序的基本單位是____ A) 程序行 B) 語句 C) 函數 D) 字符、C、1

2、C語言程序的三種基本結構是____ A、順序結構,選擇結構,循環結構 B、遞歸結構,循環結構,轉移結構 C、嵌套結構,遞歸結構,順序結構 D、循環結構,轉移結構,順序結構、A、1

3、C語言規定,程序中各函數之間 A) 既允許直接遞歸調用也允許間接遞歸調用 B) 不允許直接遞歸調用也不允許間接遞歸調用 C) 允許直接遞歸調用不允許間接遞歸調用 D) 不允許直接遞歸調用允許間接遞歸調用、A、1

4、C語言中可處理的文件類型是( ) A) 文本文件和數據文件 B)文本文件和二進制文件 C) 數據文件和二進制文件 D)數據代碼文件、B、1

5、C語言可執行程序的開始執行點是( ) A) 程序中第一條可執行語句 B) 程序中第一個函數 C) 程序中的main函數 D) 包含文件中的第一個函數、C、1

6、C語言提供的合法的數據類型關鍵字是 A)double B) short C) integer D) char、B、1

7、C語言中,運算對象必須是整型數的運算符是 A) % B) \ C) %和\ D) * *、A、1

8、C語言中函數返回值的類型是由( )決定。 A) return語句中的表達式類型 B) 調用函數的主調函數類型 C) 調用函數時臨時 D) 定義函數時所指定的函數類型、D、1

9、C語言中數組名作為參數傳遞給函數,作為實在參數的數組名被處理為_____。 A、 該數組的長度。 B、該數組的元素個數。 C、 該數組中各元素的值。 D、 該數組的首地址。、D、1

10、C語言中數組下標的下限是________。 A、1 B、0 C、視具體情況 D、無固定下限、B、1

11、C語言中提供的合法關鍵字是____ A、swith B、cher C、case D、default、D、1

12、C語言中文件的存取方式是________。 A、順序存取 B、隨機存取 C、順序存取、隨機存取均可 D、順序存取、隨機存取均不可、C、1

13、C語言中最簡單的數據類型包括 A) 整型、實型、邏輯型 B) 整型、實型、字符型 C) 整型、字符型、邏輯型 D) 整型、實型、邏輯型、字符型、B、1

14、sizeof(float)是( ) A) 一種函數調用 B) 一個不合法的表示形式 C) 一個整型表達式 D) 一個浮點表達式、C、1

15、x、y、z被定義為int型變量,若從鍵盤給x、y、z輸入數據,正確的輸入語句是 A) input x,y,z; B) scanf(“%d%d%d”,x,y,z); C) scanf(“%d%d%d”,x,y,z); D) read(“%d%d%d”,x,y,z);、B、1

16、表達式:10!=9的值是 A) true B) 非零值 C) 0 D) 1、D、1

17、表示關係x=y=z的c語言表達式為 A) (X=Y)(Y=Z) B) (X=Y)AND(Y=Z) C) (X=Y=Z) D) (X=Y)(Y=Z)、A、1

18、程序片段:在TC20中, int i=65536; printf(“%d\n”,i);的輸出結果是____ A) 65536 B) 0 C) 有語法錯誤,無輸出結果 D) -1、B、1

19、當調用函數時,實參是一個數組名,則向函數傳送的是____ A) 數組的長度 B) 數組的首地址 C) 數組每一個元素的地址 D) 數組每個元素中的值、B、1

20、對嵌套子程序調用說法正確的是____。 A、 外層子程序可以調用所有的內層子程序 B、 內層了程序只可以調用包含本身的外層子程序,不可以隔層調用 C、 外分程序必須能完全套住內分程序 D、 以上說法均不正確、C、1

21、對於基類型相同的兩個指針變量之間,不能進行的運算是 A) B) = C) + D) -、C、1

22、合法的C語言中,合法的長整型常數是 A) ‘\t’ B) “A” C) 65 D) A、A、1

23、假定int類型變量佔用兩個字節,其有定義:int x[10]={0,2,4};,則數組x在內存中所佔字節數是 A) 3 B) 6 C) 10 D) 20、D、1

24、假定有以下變量定義: int k=7 ,x=12; 則能使值為3的表達式是 A x%=(k%=5) B x%=(k-k%5) C x%=k-k%5 D (x%=k)-(k%=5)、D、1

25、請讀程序片段(字符串內沒有空格): printf(“%d\n”,strlen(“ATS\n012\1\\”));的輸出結果是 A) 11 B) 10 C) 9 D) 8 、C、1

26、請選出合法的C語言賦值語句 A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b);、B、1

27、若a為int類型,且其值為3,則執行完表達式a+=a-=a*a後,a的值是 A) -3 B) 9 C) -12 D) 6、C、1

28、若int類型佔兩個字節,則以下語句輸出為________。 int k=-1; printf(“%d,u%\n”,k,k); A、-1,-1 B、-1,65536 C、-1,32768 D、-1,65535、D、1

29、若變量a是int類型,並執行了語句:a=‘A’+1、6;,則正確的敘述是 A) a的值是字符C B) a的值是浮點型 C) 不允許字符型和浮點型相加 D) a的值是字符‘A’的ASCII值加上1。、D、1

30、若變量已正確說明為float類型,要通過語句scanf(“%f %f %f “,a,b,c);給a賦於10、0,b賦予22、0,c賦予33、0,不正確的輸入形式是: A) 10 B) 10、0,22、0,33、0 22 33 C) 10、0 D) 10 22 22、0 33、0 33、B、1

31、若要求在if後一對圓括號中表示a不等於0的關係,則能正確表示這一關係的表達式為 A) a0 B) !a C) a=0 D) a、B、1

32、若已定義x和y為double類型,則表達式:x=1,y=x+3/2的值是 A)1 B)2 C)2、0 D)2、5、C、1

33、若有定義:int a=8,b=5,c;,執行語句c=a/b+0、4;後,c的值為 A) 1、4 B) 1 C) 2、0 D) 2、B、1

34、若有定義:int x,y;char a,b,c;並有以下輸入數據(此處 CR 代表換行符,/u代表空格): 1u2 AuBuC 則能給x賦整數1,給y賦整數2,給a賦字符A,給b賦字符B,給c賦字符C 的正確程序段是 A) scanf(“x=%d y+%d”,x,y);a=getchar();b=getchar();c=getchar(); B) scanf(“%d %d”,x,y);a=getchar();b=getchar();c=getchar(); C) scanf(“%d%d%c%c%c,x,y,a,b,c); D) scanf(“%d%d%c%c%c%c%c%c:x,y,a,a,b,b,c,c);、D、1

35、若有定義和語句: char s[10]:s=”abcd”;printf(“%s\n”,s); 則結果是(以下u代表空格) A) 輸出abcd B) 輸出a C) 輸出abcduuuuu D) 編譯不通過、D、1

36、若有以下程序段, int c1=1,c2=2,c3; c3=1、0/c2*c1; 則執行後,c3中的值是 A) 0 B) 0、5 C) 1 D) 2、A、1

37、若有以下定義: char a; int b; float c; double d; 則表達式a*b+d-c值的類型為 A) float B) int C) char D) double、D、1

38、若有以下定義和語句 char c1=’b’,c2=’e’; printf(“%d,%c\n”,c2-c1,c2-‘a’+”A”); 則輸出結果是: A)2,M B)3,E C)2,E D)輸出項與對應的格式控制不一致,輸出結果不確定、B、1

39、若有以下函數調用語句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函數調用語句中實參的個數是 A)3 B)4 C)5 D)6、A、1

40、若執行下面的程序時從鍵盤上輸入3和4,則輸出是____ A) 14 B) 16 C) 18 D) 20 main( ) { int a,b,s; scanf(“%d %d”,a,b); s=a; if(a、B、1

41、若執行下面的程序時從鍵盤上輸入5,則輸出是 A) 7 B) 6 C) 5 D) 4 main() { int x; scanf(“%d”,x); if(x++5) printf(“%d\n”,x); else printf(“%d\n”,x–);}、B、1

42、若執行以下程序時從鍵盤上輸入9,則輸出結果是 A) 11 B) 10 C) 9 D) 8 main( ) { int n; scanf(“%d”,n); if(n++、B、1

43、設 a、b、c、d、m、n均為 int型變量,且 a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式 (m=ab)(n=cd)運算後,n的值為____ A) 0 B) 1 C) 2 D) 3、C、1

44、設 int a=12,則執行完語句 a+=a-=a*a後,a的值是 A) 552 B) 264 C) 144 D) -264、D、1

45、設 int b=2;表達式(b2)/(b1)的值是 A) 0 B) 2 C) 4 D) 8、A、1

46、設a,b和c都是int型變量,且a=3,b=4,c=5,則下列表達式中,值為0的表達式是________ A)’a”b’ B)a=b C)a||b+cb-c D)!((aB)!C||1)、D、1 p

47、設x、y、z和k都是int型變量,則執行表達式:x=(y=4,z=16,k=32)後,x的值為 A 4 B 16 C 32 D 52、C、1

48、設x=3,y=-4,z=6,寫出表達式的結果。 !(xy)+(y!=z)||(x+y)(y-z) A、0 B、1 C、-1 D、6、B、1

49、設x和y均為int 型變量,則以下語句:x+=y;y=x-y;y=x-y;x-=y;的功能是 A、把x 和y按從大到小排列 B、把x和y按從小到大排列 C、無確定結果 D、交換x和y中的值、D、1

50、設有 int x=11; 則表達式 (x++ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 12、A、1

51、設有如下的變量定義: int i =8,k ,a,b ; unsigned long w=5; double x=1,42,y=5、2; 則以下符合C語言語法的表達式是 A、 a+=a-=(b=4)*(a=3) B、 x%(-3); C、 a=a*3=2 D、 y=float(i)、A、1

52、設有如下定義: char *aa[2]={“abcd”,”ABCD”}; 則以下就法中正確的是 A) aa數組成元素的值分別是”abcd”和ABCD” B) aa是指針變量,它指向含有兩個數組元素的字符型一維數組 C) aa數組的兩個元素分別存放的是含有4個字符的一維字符數組的首地址 D) aa數組的兩個元素中各自存放了字符’a’和’A’的地址、D、1

53、設有如下定義: int x=10,y=3,z; 則語句 printf(“%d\n”,z=(x%y,x/y)); 的輸出結果是 A) 1 B) 0 C) 4 D) 3、D、1

54、設有數組定義: char array [ ]=”China”; 則數組 array所佔的空間為 A) 4個字節 B) 5個字節 C) 6個字節 D) 7個字節、C、1

55、設有說明語句:char a=’\72′;則變量a A) 包含1個字符 B) 包含2個字符 C) 包含3個字符 D) 說明不合法、A、1

56、設有以下語句:int x=03,y=02,z=01;那麼語句printf(“%d”,x|y~Z)的執行結果( )。 (A) 1 (B) 2 (C) 3 (D) 0、C、1

57、下列if語句中,不正確的是________。 A、if(xy); B、if(x==y) x+=y; C、if(x!=y) scanf(“%d”,x) else x=1; D、if(x、C、1

58、下列變量定義中合法的是 A) short _a=1-、le-1; B) double b=1+5e2、5; C) long do=0xfdaL; D) float 2_and=1-e-3;、A、1

59、下列標識符中不合法的是_______ A、s_name B、_e C、fox D、3DS、D、1

60、下列不正確的轉義字符是 A) ‘\\’ B) ‘\” C) ‘074’ D) ‘\0’、C、1

61、請讀程序: main() { int a=1,b=2; printf(“%d\n”,a=a+1,a+6,b+2);} 則上面程序的輸出結果是____ A、2 B、3 C、4 D、1、A、1

62、請讀程序: int i=0,j=0,a=6; if((++i0)||(++j0))a++; printf(“i=%d,j=%d,a=d%\n”,i,j,a); 則上面程序的輸出結果是____ A、i=0,j=0,a=6 B、i=1,j=0,a=7 C、i=1,j=1,a=6 D、i=1,j=1,a=7、B、1

63、下列程序段的輸出結果為________? int y=1; while(y–); printf(“y=%d\n”,y); A、y=-1B、y=0C、死循環D、y=9 、A、1

64、下列程序執行後的輸出結果是 A) 3 B) 6 C) 9 D) 隨機數 main() { int a[3][3], *p,i; p=a[0][0]; for(i=p; i、B、1

65、下列程序執行後的輸出結果是 A) G B) H C) i D) J main() { int x=’f’; printf(“%c \n”,’A’+(x-‘a’+1)); }、A、1

66、下列程序執行後的輸出結果是(小數點後只寫一位) A) 6 6 6、0 6、0 B) 6 6 6、7 6、7 C) 6 6 6、0 6、7 D) 6 6 6、7 6、0 main() { double d; float f; ling l; int i; i=f=1=d=20/3; printf(“%d %ld %f %f \n”, i,l,f,d); }、A、1

67、下列可作為C語言賦值語句的是 A)x=3,y=5 B)a=b=6 C)i–; D)y=int(x);、C、1

68、下列描述中不正確的是 A) 字符型數組中可以存放字符串 B) 可以對字符型數組進行整體輸入、輸出 C) 可以對整型數組進行整體輸入、輸出 D) 不能在賦值語句中通過賦值運算符”=”對字符型數組進行整體賦值、C、1

69、下列說法中正確的是________。 A、在switch語句中一定要使用break語句 B、在switch語句中不一定要使用break語句 C、break語句是switch語句的一部分 D、break只能用於switch語句中、B、1

70、下列運算符其優先級最高的是________。 A、|| B、 C、+ D、=、C、1

71、下面的DO循環中,一共循環( )次。 M=5 N=1 DO WHiLE N=M N=N+1 ENDDO (A) 1 (B) 6 (C) 4 (D) 5、D、1

72、請讀程序: #include main() { int a=1,b=4,c=2; float x=5、5,y=9、0,z; z=(a+b)/c+sqrt((double)y)*1、2/c+x; printf(“%f\n”,z); } 則上面程序的輸出結果是____ A、數據溢出B、9、3C、9、300000D、0、93、C、1

73、請讀程序: int a,b,c; a=(b=(c=10)+5)-5; printf(“a,b,c=d%,d%,d%”,a,b,c); c=a=0; b=(a+10); printf(“a,b,c=%d,d%,d%”,a,b,c); 則上面程序的輸出結果是____ A、a,b,c=0,10,10 a,b,c=10,15,10 B、a,b,c=10,15,10 a,b,c=10,15,10 C、a,b,c=10,15,10 a,b,c=0,10,0 D、a,b,c=10,15,10 a,b,c=10,15,15、C、1

74、寫出下列語句執行後a,b的值。 int a=6,b; b=(++b)+(a++); A、a=8,b=14 B、a=7,b=8 C、a=14,b=14 D、a=8,b=8、A、1

75、請讀程序: m=1234、123; printf=(“%-8、3f\n”,m); printf=(“%10、3f\n”,m); 則上面程序的輸出結果是____ A、1234、12300 1234、123 B、1234、123 1234、123 C、1234、123 1234、12300 D、1234、12300 1234、123、B、1

76、一個C語言的語句至少應包一個________ A、{} B、逗號 C、分號 D、什麼不要、C、1

77、一個完整的C源程序是________。 A、要由一個主函數(或)一個以上的非主函數構成 B、由一個且僅由一個主函數和零個以上(含零)的非主函數構成 C、要由一個主函數和一個以上的非主函數構成 D、由一個且只有一個主函數或多個非主函數構成、B、1

78、已知整型變量a=13和b=6,則ab的值是________,a^b的值是________ A、4 13 B、4 11 C、1 11 D、4 13、B、1

79、以下for語句構成的循環執行了( )次。 # include #define N i #define M N+1 # define NUM (M+1)*M/2 main( ) {int i,n=0; for (i=1;i=num;i++) {n++; printf(“%d”,n); } } (A) 5 (B) 6 (C) 8 (D) 9、C、1

80、以下程序的輸出結果是____ # include main( ) { printf(“%d\n”,NULL); } (A) 不確定的 (B) 0 (C) -1 (D) 1、B、1

81、在調用函數時,以下描述中正確的是________。 A、調用函數時,實參可以是表達式 B、調用函數時,將為形參分配內存單元 C、調用函數時,實參與形參的原型必須一致 D、調用函數時,實參與形參可以用內存單元、D、1

82、有以下程序段 int k=0 while(k=1)k++; while 循環執行的次數是 A) 無限次 B) 有語法錯,不能執行 C) 一次也不執行 D) 執行1次、A、1

83、有以下函數 char fun(char *p) { return p; } 該函數的返回值是 A) 無確切的值 B) 形參p中存放的地址值 B) 一個臨時存儲單元的地址 D) 形參p自身的地址值、B、1

84、語句printf(“%d\n”,12012);的輸出結果是____ A) 12 B) 8 C) 6 D) 012、B、1

85、語句:printf(“%d”,(a=2)(b= -2);的輸出結果是____ A) 無輸出 B) 結果不確定 C) -1 D) 1、D、1

86、運算完下面的C語言程序段以後,a的值是______,b的值是______,c的值是________。 int x=10,y=9; int a,b,c; a=(–x==y++)?–x:++y; b=x++; c=y; A、6 9 13 B、8 7 11 C、8 9 10 D、8 7 10、C、1

87、在C語言程序中,注釋部分從哪開始,到哪結束? A、從(到)結束 B、從REM開始無結束志標誌 C、無起始標誌 D、從/*開始,*/結束、D、1

88、在C語言提供的合法的關鍵字是 A) swicth B) cher C) Case D) default、D、1

89、在C語言中,不正確的int類型的常數是____ A) 32768 B) 0 C) 037 D) 0xAF、A、1

90、在C語言程序中,當while語句構成的循環中的條件為______時,結束循環。 A、0 B、1 C、true D、非0、A、1

91、在C語言中,函數的隱含存儲類別是 A) auto B) static C) extern D) 無存儲類別、C、1

92、在C語言中,合法的長整型常數是 A) OL B) 4962710 C) 324562 D) 216D、A、1

93、在C語言中,合法的字符常量是 A) ‘\084’ B) ‘\x43’ C) ‘ab’ D) “\0″、B、1

94、在C語言中,若對函數類型未加明顯式說明,則函數的隱含類型是____類型 A) void B) double C) int D) char、C、1

95、在C語言中,形參的缺省存儲類是 A) auto B) register C) static D) extern、A、1

96、在C語言中,要求運算數必須是整型的運算符是 A) % B) / C) D) !、A、1

97、在宏定義 #define PI 3、14159中,用宏名PI代替一個 A) 單精度數 B) 雙精度數 C) 常量 D) 字符串、D、1

98、在C語言程序中,可以用做變量名的是____ A) 1e5 B) a1 C) int D) *p、B、1

99、在以下一組運算符中,優先級最高的運算符是 A)= B)= C)% D)、C、1

100、字符(char)型數據在微機內存中的存儲形式是____ A) 反碼 B) 補碼 C) EBCDIC碼 D) ASCII碼、D、1

101、執行語句: for (i=1;i++、C、2

102、指出下面正確的輸入語句是( ) A:scanf(“a=b=%d”,a,b) B:scanf(“a=%d,b=%f”,a,b) C:scanf(“%3c”,c) D:scanf(“%5、2f”,a)、B、2

103、執行下面的程序後,a的值為 main() { int a,b; for (a=1,b=1;a=100;a++) { if(b=20) break; if(b%3==1) {b+=3; continue; } b-=5; } } A) 7 B) 8 C) 9 D) 10、B、2

104、在執行以下程序時,如果從鍵盤上輸入:ABCdef〈回車〉,則輸出為 A)ABCdef B)abcdef C)abc D)DEF # include main() { chsr ch; while((ch=getchar())!=’\n’) { if(ch=’A’ ch=’Z’)ch=ch+32; 、C、2

105、整型變量x和y的值相等、且為非0值,則以下選項中,結果為零的表達式是 A) x || y B) x | y C) x y D) x ^ y、D、2

106、在以下定義中,正確的說明語句為____ A) int a[‘a’] B)int a[3,4] C)int a[ ][ ] D)int *a[10]、D、2

107、執行下列程序時輸入:123456789,輸出結果是 A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456 main() { char s[100]; int c, i; scanf(“%c”,c); scanf(“%d”,i); scanf(“%s”,s); printf(“%c,%d,%s \n”,c,i,s); }、D、2

108、執行下面程序片段的結果是 int x=23; do { printf(“%2d”,x–);} while(!x); A) 打印出321 B) 打印出23 C) 不打印任何內容 D) 陷入死循環、B、2

109、在說明語句:int *f();中,標識符f代表的是____ A) 一個用於指向整型數據的指針變量 B) 一個用於指向一維數組的行指針 C) 一個用於指向函數的指針變量 D) 一個返回值為指針型的函數名、D、2

110、在下列選項中,不正確的賦值語句是____ A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;、D、2

111、在C語言中,若需一變量只在本文件中所有函數使用,則該變量的存儲類別是________ A、extern B、register C、auto D、static、D、2

112、在C語言程序中,當do-while語句構成的循環中的條件為______時,結束循環。 A、0 B、1 C、true D、非0、A、2

113、在16位C編譯系統上,若定義long a; ,則能給a賦40000的正確語句是 A) a=20000+20000; B) a=4000*10; C) a=30000+10000; D) a=4000L*10L;、D、2

114、閱讀以下程序: main() { int x; scanf(“%d”,x); if(x–、B、2

115、運行以下程序後,如果從鍵盤上輸入china#,則輸出結果為 A、2,0 B、5,0 C、5,5 D、2,5 #include main( ) { int v1=0,v2=0; char ch ; while ((ch=getchar())!=’#’) switch (ch ) { case ‘a’: case ‘h’: default: v1++; case ‘0’:v2++; } printf(“%d,%d\n”,v1,v2);、C、2

116、請讀程序: main() { int a=1,b=2,c=3; ++a; c+=++b; { int b=4,c; c=b*3; a+=c; printf(“first:%d,%d,%d\n”,a,b,c); a+=c; printf(“Second:%d,%d,%d\n”,a,b,c); } printf(“third:%d,%d,%d\n”,a,b,c); } 該程序的輸出是________。 A、first: 12,4,12 Second: 26,4,12 third: 4,3,6B、first: 14,4,12 Second: 26,12,12 third: 26,3,4C、first: 14,4,12 Second: 26,4,12 third: 26,3,6 D、first: 14,4,12 Second: 26,6,12 third: 26,4,6、C、2

117、閱讀程序: #include main() { int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf(“%x\n”,p); printf(“%x\n”,p+9); } 該程序有兩個printf 語句, 如果第一個printf 語句輸出的是194, 則第二個printf語句的輸出結果是 A) 203 B) 204 C) 1a4 D) 1a6、D、2

118、與 y=(x0?1:x0) y=1; B) if(x) else if(x0)y=1; else y=0; else if(x=0) if(x0)y=1; if(x0)y=1; else if(x==0)y=0; else y=-1; else y=-1;、A、2

119、以下合法的賦值語句是 A) x=y=100 B) d–; C) x+y; D) c=int(a+b);、B、2

120、以下函數返回a所指數組中最小的值所在的下標值 fun(int *a, int n) { int i,j=0,p; p=j; for(i=j;i、D、2

121、以下函數值的類型是 fun ( float x ) { float y; y= 3*x-4; return y; } A) int B) 不確定 C) void D) float、A、2

122、以下說法中正確的是 A) C語言程序總是從第一個的函數開始執行 B) 在C語言程序中,要調用的函數必須在main()函數中定義 C) C語言程序總是從main()函數開始執行 D) C語言程序中的main()函數必須放在程序的開始部分、C、2

123、以下所列的各函數首部中,正確的是 A) void play(var a:integer,var b:integer) B) void play(int a,b) C) void play(int a,int b) D) sub play(a as integer,b as integer)、C、2

124、以下敘述正確的是 A)輸入項可以是一個實型常量,如: scanf(“%f”、3、5); B)只有格式控制,沒有輸入項,也能正確輸入數據到內存,例如: scanf(“a=%d,b=%d); C)當輸入一個實型數據時,格式控制部分可以規定小數點後的位數,例如: scanf(“%4、2f”,f); D)當輸入數據時,必須指明變量地址,例如: scanf(“%f、f); 、C、2

125、以下敘述正確的是 A) do-while語句構成的循環不能用其它語句構成的循環來代替。 B) do-while語句構成的循環只能用break語句退出。 C) 用do-while語句構成的循環,在while後的表達式為非零時結束循環。 D) 用do-while語句構成的循環,在while後的表達式為零時結束循環。、D、2

126、以下敘述中不正確的是 A) 在C中,函數中的自動變量可以賦初值,每調用一次,賦一次初值。 B) 在C中,在調用函數時,實在參數和對應形參在類型上只需賦值兼容。 C) 在C中,外部變量的隱含類別是自動存儲類別。 D) 在C中,函數形參可以說明為register變量。、C、2

127、以下敘述中不正確的是____ A) 在不同的函數中可以使用相同名字的變量 B) 函數中的形式參數是局部變量 C) 在一個函數內定義的變量只在本函數範圍內有效 D) 在一個函數內的複合語句中定義的變量在本函數範圍內有效、D、2

128、以下程序運行後,輸出結果是 A)1000 B)10010 C)00110 D)10100 main () { int y=18,i=0,j,a[8]; do { a[i]=y%2;i++; y=y/2; } while(y=1); for(j=i-10;j–)printf(%d”,a[j]); printf(“h\n”); }、B、2

129、以下程序運行後,如果從鍵盤上輸入: book book 則輸出結果是 A)*8 B)#9 C)#6 D)*9 #include main() {char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1); gets(s2); if(!strcmp(s1,s2)) printf(“*”); else printf(“#”); printf(“%d\n”,strlen(strcat(s1,s2))) }、B、2

130、以下程序運行後,輸出結果是 A)6385 B)22 C)33 D)693825 main() { char ch[2][5]={“693″,”825”},*p[2]; int i,j,s=0; for (i=0;i=’0′ p[i][j]=’9′;j+=2) s=10*s+p[i][j]-‘0’; printf(“%d\n”,s); }、A、2

131、以下程序運行後,輸出結果是 A)84 B)99 C)95 D)44 int d=1; fun (int p) { int d=5; d+=p++; printf(“%d”,d); } main() { int a=3; fun(a); d+=a++; printf(“%d\n”,d); }、A、2

132、以下程序執行後a的值是 A)4 B)1 C)0 D)運行時出錯,a無定值 main() { int a,k=4,m=6,*p1=k,*p2=m; a=p1==m; printf(“%d\n”,a); } 、C、2

133、以下程序執行後sum的值是 A)15 B)14 C) 不確定 D)0 min() { int i , sum; for(i=1;i、C、2

134、以下程序中,while循環的循環次數是 main() { int i=0; while(i、D、2

135、以下定義語句中,錯誤的是 A) int a[]={1,2}; B) char *a[3]; C) char s[10]=”test”; D) int n=5,a[n];、D、2

136、以下對C語言函數的有關描述中,正確的是 A) 在C中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參 B) C函數既可以嵌套定義又可以遞歸調用 C) 函數必須有返回值,否則不能使用函數 D) C程序中有調用關係的所有函數必須放在同一個源程序文件中、A、2

C語言編程題

要輸入的分數太多,我懶得手數,用2位隨機數代替手輸入,輸入函數我單獨寫了,你需要調用就行了,詳細看備註。

#includestdio.h

#includestdlib.h

#includetime.h

#define stuNum 15//學生人數

#define scNum 7//模塊數

typedef struct stu//定義學生數據結構

{

    int sid;//學生ID

    int sc[scNum];//對應7個模塊成績

    int sum;//總成績

}STU;

void insertSTU(STU *stu);//輸入15個學生的信息

void insertTest(STU *stu);//測試,用隨機數代替輸入,我懶得輸入那麼多成績,你要手輸,調用insertSTU替換該函數

void printfSTU(STU *stu);//按輸入順序打印15名學生7模塊成績  及  每個模塊前三名的成績

int main()

{

    STU stu[stuNum];//定義15個學生

   // int i,j,sc;

   srand(time(NULL));

    insertTest(stu);//想手動輸入這裡改成insertSTU(stu)

    printfSTU(stu);

    return 0;

}

void printfSTU(STU *stu)//按輸入順序打印15名學生7模塊成績  及  每個模塊前三名信息 及 總分前三名信息

{

    int i,j,k,sc;

    STU *max[3],*sum[3],newstu;//max對應7個模塊前3的學生結構指針 sum對應總分前3學生結構指針

    for(i=0;istuNum;i++)

    {

        printf(“編號%02d的學生7模塊成績及總分分別為:”,stu[i].sid);

        for(j=0;jscNum;j++)

        {

            sc=stu[i].sc[j];

            printf(“%02d “,sc);

        }

        printf(“%d\n”,stu[i].sum);

    }

    for(j=0;jscNum;j++)

    {

        for(k=0;kscNum;k++)

        {

            newstu.sc[k]=0;

            newstu.sum=0;

        }

        max[0]=max[1]=max[2]=newstu;

        for(i=0;istuNum;i++)

        {

            if(stu[i].sc[j]max[0]-sc[j])

                max[0]=(stu[i]);

            else if(stu[i].sc[j]max[1]-sc[j])

                max[1]=(stu[i]);

            else if(stu[i].sc[j]max[2]-sc[j])

                max[2]=(stu[i]);

        }

        printf(“模塊%02d前3名分別為:編號:%02d分數:%02d  編號:%02d分數:%02d  編號:%02d分數:%02d   \n”,j+1,max[0]-sid,max[0]-sc[j],max[1]-sid,max[1]-sc[j],max[2]-sid,max[2]-sc[j]);

    }

    sum[0]=sum[1]=sum[2]=newstu;

    for(i=0;istuNum;i++)

    {

        if(stu[i].sumsum[0]-sum)

            sum[0]=(stu[i]);

        else if(stu[i].sumsum[1]-sum)

            sum[1]=(stu[i]);

        else if(stu[i].sumsum[2]-sum)

            sum[2]=(stu[i]);

    }

    printf(“總分前3名分別為:編號:%02d總分:%02d  編號:%02d總分:%02d  編號:%02d總分:%02d   \n”,sum[0]-sid,sum[0]-sum,sum[1]-sid,sum[1]-sum,sum[2]-sid,sum[2]-sum);

}

void insertSTU(STU *stu)//輸入15個學生的信息

{

    int i,j,sc;

    for(i=0;istuNum;i++)

    {

        stu[i].sid=i+1;

        stu[i].sum=0;

        printf(“輸入編號%d的學生的7個模塊成績:”,i+1);

        for(j=0;jscNum;j++)

        {

            //scanf(“%d”,sc);// 我懶得輸入那麼多成績,就用隨機數代替,你要輸入把這句恢復

            sc=(int)(rand()%100);//用隨即2位數代替輸入,不需要就注釋掉

            stu[i].sc[j]=sc;

            stu[i].sum=stu[i].sum+sc;

        }

    }

}

void insertTest(STU *stu)//測試用代替輸入

{

    int i,j,sc;

    for(i=0;istuNum;i++)

    {

        stu[i].sid=i+1;

        stu[i].sum=0;

        for(j=0;jscNum;j++)

        {

            sc=(int)(rand()%100);

            stu[i].sc[j]=sc;

            stu[i].sum=stu[i].sum+sc;

        }

    }

}

C語言經典題目

1.正確的算法:

如果n=3, 過河時間為A+B+C

如果n=2, 好算, 不費口舌了

如果n=4, 這個是重點:

每次優先考慮把最慢兩人送過河

把n人中最快兩人記為A,B, 最慢兩人記為C,D(過河時間ABCD), n人問題實質上轉換為4人過河問題, 參考到4人過河時的優化,

記AB過河, A回, CD過河, B回, 為方法X, 實質是利用最快兩人進行優化, 耗時A+2B+D

記AD過河, A回, AC過河, A回, 為方法y, 實質是利用最快一人來過河, 耗時2A+C+D

每次比較這兩個方法, 如果x快, 使用x方法, 如果y快, 則用y, 並且, 一旦某次使用y方法後, 以後都不用比較了, 全部使用y方法過河

2.算法正確性證明:

為什麼每次先讓最慢兩人過河? 因為他們遲早要過河…早過晚過一樣, 而晚過的話, 有可能時間不能被優化, 所以選擇最先過

為什麼是兩人, 不是三人? 因為這船一次只能兩人, 三人問題和兩人問題的優化一樣, 所以一次考慮三人毫無意義, 同理, 三人以上不加考慮

為什麼某次用y過河後不用再比較xy了?

先看這個例子:

1 99 100 101

用x方法是99+1+101+99= 300

y方法是 101+1+100+1 = 203

y比x快的原因是2A+C+D A+2B+D, 即 A+C2B

容易想到, 從此以後A+C都會小於2B了(因為C越來越小)

3.補充:

算法分析就到這裡了, 至於具體的程序…樓主既然是ACMer, 這個應該不困難

當然, 如果樓主需要的話, 也可以給出程序

10道經典的C語言例題(含參考程序)

1.打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如,153是一個“水仙花數”,因為153=1^3+5^3+3^3。

#include

#include

int main()

{

int bai_wei,shi_wei,ge_wei,i,sum=0;

for(i=100;i1000;i++)

{

bai_wei=i/100;

shi_wei=(i%100)/10;

ge_wei=i%10;

if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))

{

printf(“%d “,i);

sum++;

if(sum%5==0)

printf(” “);

}

}

printf(” “);

return 0;

}

2.請輸入任意兩個整數x和y,求其最大公約數和最小公倍數。

#include

int main()

{

int x,y,min,max,i;

printf(“請輸入任意兩個整數:”);

scanf(“%d%d”,x,y);

min=xy?y:x;

max=xy?x:y;

for(i=min;i0;i–)

if(x%i==0y%i==0)

{

printf(“這兩個整數的最大公約數為:%d “,i);

break;

}

for(i=max;i=x*y;i++)

if(i%x==0i%y==0)

{

printf(“這兩個整數的最小公倍數為:%d “,i);

break;

}

return 0;

}

3.輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。

#include

#include

#define N 50

int main()

{

int sum1=0,sum2=0,sum3=0,sum4,i=0;

char str[N];

printf(“請輸入一串字符串:”);

scanf(“%s”,str);

for(i=0;istrlen(str);i++) p=”” /strlen(str);i++)

{

if((str[i]=’a’str[i]=’A’str[i]=’Z’))

sum1++;

if(str[i]==’ ‘)

sum2++;

if(str[i]=’0’str[i]=’9′)

sum3++;

}

sum4=strlen(str)-sum1-sum2-sum3;

printf(“英文字母的個數:%d “,sum1);

printf(“空格的個數:%d “,sum2);

printf(“數字的個數:%d “,sum3);

printf(“其他符號的個數:%d “,sum4);

return 0;

}

4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。

#include

#include

int main()

{

int a,n,s=0,i,x=0,y=0;

printf(“請輸入整數a的值:”);

scanf(“%d”,a);

printf(“請輸入相加的個數n:”);

scanf(“%d”,n);

for(i=0;in;i++) p=”” /n;i++)

{

x=y+2*pow(10,i);

y=x;

s=s+x;

}

printf(“s=%d “,s);

return 0;

}

5.一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3。編程找出1000以內的所有完數。

#include

int main()

{

int sum=0,i,j;

printf(“在1000以內的完數有:”);

for(i=2;i=1000;i++)

{

for(j=1;ji;j++) p=”” /i;j++)

if(i%j==0)

sum=sum+j;

if(sum==i)

printf(“%d “,i);

sum=0;

}

printf(” “);

return 0;

}

6.輸入一個不多於5位的正整數,要求:1、求它是幾位數;2、逆序打印出個位數字。

#include

int pows(int a,int n)

{

int sum=1,i;

for(i=0;in;i++) p=”” /n;i++)

sum=sum*a;

return sum;

}

int main()

{

int n,i,k,x;

printf(“n=”);

scanf(“%d”,n);

for(i=1;i6;i++)

if(n/pows(10,i)==0)

{

printf(“%d “,i);

k=i;

break;

}

for(i=0;ik;i++) p=”” /k;i++)

{

x=n/pows(10,i)%10;

printf(“%d”,x);

}

printf(” “);

return 0;

}

7.輸入一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。

#include

int main()

{

int n,a[5],i=0;

printf(“請輸入一個5位數:”);

scanf(“%d”,n);

while(n!=0)

{

a[i]=n%10;

n=n/10;

i++;

}

if(a[0]==a[4]a[1]==a[3])

printf(“這個數是迴文數 “);

else

printf(“這個數不是迴文數 “);

return 0;

}

8.利用遞歸算法,將所輸入的5個字符,以相反順序打印出來。

#include

void digui(char a[],int n)

{

if(n==1)

printf(“%c”,a[0]);

else

{

printf(“%c”,a[n-1]);

digui(a,n-1);

}

}

int main()

{

char str[5];

printf(“請輸入5個字符:”);

scanf(“%s”,str);

digui(str,5);

printf(” “);

return 0;

}

9.有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…球出這個序列的前20項之和。

#include

int main()

{

int i,a=1,b=1;

float sum=0.0;

for(i=1;i=20;i++)

{

sum=sum+(float)(a+i)/b;

b=a+i;

a=i;

}

printf(“sum=%f “,sum);

return 0;

}

10.利用遞歸算法求5!。

#include

int digui(int n)

{

if(n==1)

return 1;

else

return n*digui(n-1);

}

int main()

{

int n,sum;

printf(“n:”);

scanf(“%d”,n);

sum=digui(n);

printf(“sum=%d “,sum);

return 0;

}

經典C語言編程30例(二)

【程序31】

題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續

判斷第二個字母。

1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。

2.程序源代碼:

#include

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.程序源代碼:

#include

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.程序源代碼:

#include

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.程序源代碼:

#include

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();/*調用此函數*/

}

==============================================================

【程序35】

題目:文本顏色設置

1.程序分析:

2.程序源代碼:

#include

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”);

}

==============================================================

【程序36】

題目:求100之內的素數

1.程序分析:

2.程序源代碼:

#include

#include “math.h”

#define N 101

main()

{

int i,j,line,a[N];

for(i=2;ifor(i=2;i for(j=i+1;j {

if(a[i]!=0a[j]!=0)

if(a[j]%a[i]==0)

a[j]=0;}

printf(“\n”);

for(i=2,line=0;i{

if(a[i]!=0)

{printf(“]”,a[i]);

line++;}

if(line==10)

{printf(“\n”);

line=0;}

}

}

==============================================================

【程序37】

題目:對10個數進行排序

1.程序分析:可以利用選擇法,即從後9個比較過程中,選擇一個最小的與第一個元素交換,

下次類推,即用第二個元素與後8個進行比較,並進行交換。

2.程序源代碼:

#define N 10

main()

{int i,j,min,tem,a[N];

/*input data*/

printf(“please input ten num:\n”);

for(i=0;i{

printf(“a[%d]=”,i);

scanf(“%d”,a[i]);}

printf(“\n”);

for(i=0;iprintf(“]”,a[i]);

printf(“\n”);

/*sort ten num*/

for(i=0;i{min=i;

for(j=i+1;jif(a[min]a[j]) min=j;

tem=a[i];

a[i]=a[min];

a[min]=tem;

}

/*output data*/

printf(“After sorted \n”);

for(i=0;iprintf(“]”,a[i]);

}

==============================================================

【程序38】

題目:求一個3*3矩陣對角線元素之和

1.程序分析:利用雙重for循環控制輸入二維數組,再將a[i][i]累加後輸出。

2.程序源代碼:

main()

{

float a[3][3],sum=0;

int i,j;

printf(“please input rectangle element:\n”);

for(i=0;i3;i++)

for(j=0;j3;j++)

scanf(“%f”,a[i][j]);

for(i=0;i3;i++)

sum=sum+a[i][i];

printf(“duijiaoxian he is %6.2f”,sum);

}

==============================================================

【程序39】

題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。

1. 程序分析:首先判斷此數是否大於最後一個數,然後再考慮插入中間的數的情況,插入後

此元素之後的數,依次後移一個位置。

2.程序源代碼:

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;i10;i++)

printf(“]”,a[i]);

printf(“\n”);

printf(“insert a new number:”);

scanf(“%d”,number);

end=a[9];

if(numberend)

a[10]=number;

else

{for(i=0;i10;i++)

{ if(a[i]number)

{temp1=a[i];

a[i]=number;

for(j=i+1;j11;j++)

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

for(i=0;i11;i++)

printf(“m”,a[i]);

}

==============================================================

【程序40】

題目:將一個數組逆序輸出。

1.程序分析:用第一個與最後一個交換。

2.程序源代碼:

#define N 5

main()

{ int a[N]={9,6,5,4,1},i,temp;

printf(“\n original array:\n”);

for(i=0;i printf(“M”,a[i]);

for(i=0;i {temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(“\n sorted array:\n”);

for(i=0;i printf(“M”,a[i]);

}

【程序41】

題目:學習static定義靜態變量的用法

1.程序分析:

2.程序源代碼:

#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;i3;i++)

varfunc();

}

==============================================================

【程序42】

題目:學習使用auto定義變量的用法

1.程序分析:

2.程序源代碼:

#include “stdio.h”

main()

{int i,num;

num=2;

for (i=0;i3;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++;

}

}

}

==============================================================

【程序43】

題目:學習使用static的另一用法。

1.程序分析:

2.程序源代碼:

#include “stdio.h”

main()

{

int i,num;

num=2;

for(i=0;i3;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++;

}

}

}

==============================================================

【程序44】

題目:學習使用external的用法。

1.程序分析:

2.程序源代碼:

#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);

}

==============================================================

【程序45】

題目:學習使用register定義變量的方法。

1.程序分析:

2.程序源代碼:

void main()

{

register int i;

int tmp=0;

for(i=1;i=100;i++)

tmp+=i;

printf(“The sum is %d\n”,tmp);

}

==============================================================

【程序46】

題目:宏#define命令練習(1)

1.程序分析:

2.程序源代碼:

#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:Please 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;

}

}

==============================================================

【程序47】

題目:宏#define命令練習(2)

1.程序分析:

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);

}

==============================================================

【程序48】

題目:宏#define命令練習(3)

1.程序分析:

2.程序源代碼:

#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”);

}

==============================================================

【程序49】

題目:#if #ifdef和#ifndef的綜合應用。

1. 程序分析:

2.程序源代碼:

#include “stdio.h”

#define MAX

#define MAXIMUM(x,y) (xy)?x:y

#define MINIMUM(x,y) (xy)?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

}

==============================================================

【程序50】

題目:#include 的應用練習

1.程序分析:

2.程序源代碼:

test.h 文件如下:

#define LAG

#define SMA

#define EQ ==

#include “test.h” /*一個新文件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”);

}

【程序51】

題目:學習使用按位與 。

1.程序分析:00=0; 01=0; 10=0; 11=1

2.程序源代碼:

#include “stdio.h”

main()

{

int a,b;

a=077;

b=a3;

printf(“\40: The a b(decimal) is %d \n”,b);

b=7;

printf(“\40: The a b(decimal) is %d \n”,b);

}

==============================================================

【程序52】

題目:學習使用按位或 | 。

1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1

2.程序源代碼:

#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);

}

==============================================================

【程序53】

題目:學習使用按位異或 ^ 。

1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0

2.程序源代碼:

#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);

}

==============================================================

【程序54】

題目:取一個整數a從右端開始的4~7位。

程序分析:可以這樣考慮:

(1)先使a右移4位。

(2)設置一個低4位全為1,其餘全為0的數。可用~(~04)

(3)將上面二者進行運算。

2.程序源代碼:

main()

{

unsigned a,b,c,d;

scanf(“%o”,a);

b=a4;

c=~(~04);

d=bc;

printf(“%o\n%o\n”,a,d);

}

==============================================================

【程序55】

題目:學習使用按位取反~。

1.程序分析:~0=1; ~1=0;

2.程序源代碼:

#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);

}

==============================================================

【程序56】

題目:畫圖,學用circle畫圓形。

1.程序分析:

2.程序源代碼:

/*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;

}

}

==============================================================

【程序57】

題目:畫圖,學用line畫直線。

1.程序分析:

2.程序源代碼:

#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;

}

}

==============================================================

【程序58】

題目:畫圖,學用rectangle畫方形。

1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。

2.程序源代碼:

#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);

}

==============================================================

【程序59】

題目:畫圖,綜合例子。

1.程序分析:

2.程序源代碼:

# define PAI 3.1415926

# define B 0.809

# include “graphics.h”

#include “math.h”

main()

{

int i,j,k,x0,y0,x,y,driver,mode;

float a;

driver=CGA;mode=CGAC0;

initgraph(driver,mode,””);

setcolor(3);

setbkcolor(GREEN);

x0=150;y0=100;

circle(x0,y0,10);

circle(x0,y0,20);

circle(x0,y0,50);

for(i=0;i16;i++)

{

a=(2*PAI/16)*i;

x=ceil(x0+48*cos(a));

y=ceil(y0+48*sin(a)*B);

setcolor(2); line(x0,y0,x,y);}

setcolor(3);circle(x0,y0,60);

/* Make 0 time normal size letters */

settextstyle(DEFAULT_FONT,HORIZ_DIR,0);

outtextxy(10,170,”press a key”);

getch();

setfillstyle(HATCH_FILL,YELLOW);

floodfill(202,100,WHITE);

getch();

for(k=0;k=500;k++)

{

setcolor(3);

for(i=0;i=16;i++)

{

a=(2*PAI/16)*i+(2*PAI/180)*k;

x=ceil(x0+48*cos(a));

y=ceil(y0+48+sin(a)*B);

setcolor(2); line(x0,y0,x,y);

}

for(j=1;j=50;j++)

{

a=(2*PAI/16)*i+(2*PAI/180)*k-1;

x=ceil(x0+48*cos(a));

y=ceil(y0+48*sin(a)*B);

line(x0,y0,x,y);

}

}

restorecrtmode();

}

==============================================================

【程序60】

題目:畫圖,綜合例子。

1.程序分析:

2.程序源代碼:

#include “graphics.h”

#define LEFT 0

#define TOP 0

#define RIGHT 639

#define BOTTOM 479

#define LINES 400

#define MAXCOLOR 15

main()

{

int driver,mode,error;

int x1,y1;

int x2,y2;

int dx1,dy1,dx2,dy2,i=1;

int count=0;

int color=0;

driver=VGA;

mode=VGAHI;

initgraph(driver,mode,””);

x1=x2=y1=y2=10;

dx1=dy1=2;

dx2=dy2=3;

while(!kbhit())

{

line(x1,y1,x2,y2);

x1+=dx1;y1+=dy1;

x2+=dx2;y2+dy2;

if(x1=LEFT||x1=RIGHT)

dx1=-dx1;

if(y1=TOP||y1=BOTTOM)

dy1=-dy1;

if(x2=LEFT||x2=RIGHT)

dx2=-dx2;

if(y2=TOP||y2=BOTTOM)

dy2=-dy2;

if(++countLINES)

{

setcolor(color);

color=(color=MAXCOLOR)?0:++color;

}

}

closegraph();

}

原創文章,作者:W7CEG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128306.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
W7CEG的頭像W7CEG
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 《Python數據分析》經典書

    這本經典書可以幫助各位數據科學家快速上手 Python 進行數據分析和處理,下面我們從多個方面闡述一下這本書的亮點和有趣之處。 一、數據科學簡介 《Python數據分析》一書旨在幫…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論