关闭 More 保存 重做 撤销 预览

   
关闭   当前为简洁模式,您可以更新模块,修改模块属性和数据,要使用完整的拖拽功能,请点击进入高级模式

重播

page
LV6 呢喃的歌声
帖子    816
新博币    720 提现
提现    0
     
    1548 0 | 显示全部楼层 |倒序浏览
    1. 语言的学习基础,100个经典的算法
    2. C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的
    3. 算法
    4. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔
    5. 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数
    6. 为多少?
    7. __________________________________________________________________
    8. 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
    9. ___________________________________________________________________
    10. 程序源代码:
    11. main()
    12. {
    13. long f1,f2;
    14. int i;
    15. f1=f2=1;
    16. for(i=1;i<=20;i++)
    17. { printf("%12ld %12ld",f1,f2);
    18. if(i%2==0) printf("\n");/*控制输出,每行四个*/
    19. f1=f1+f2;/*前两个月加起来赋值给第三个月*/
    20. f2=f1+f2;/*前两个月加起来赋值给第三个月*/
    21. }
    22. }
    23. 上题还可用一维数组处理,you try!
    24. 题目:判断101-200之间有多少个素数,并输出所有素数。
    25. __________________________________________________________________
    26. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整
    27. 除,则表明此数不是素数,反之是素数。
    28. ___________________________________________________________________
    29. 程序源代码:
    30. #include "math.h"
    31. main()
    32. {
    33. int m,i,k,h=0,leap=1;
    34. printf("\n");
    35. for(m=101;m<=200;m++)
    36. { k=sqrt(m+1);
    37. for(i=2;i<=k;i++)
    38. if(m%i==0)
    39. {leap=0;break;}
    40. if(leap) {printf("%-4d",m);h++;
    41. if(h%10==0)
    42. printf("\n");
    43. }
    44. leap=1;
    45. }
    46. printf("\nThe total is %d",h);
    47. }
    48. 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位
    49. 数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方
    50. +5的三次方+3的三次方。
    51. __________________________________________________________________
    52. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
    53. ___________________________________________________________________
    54. 程序源代码:
    55. main()
    56. {
    57. int i,j,k,n;
    58. printf("'water flower'number is:");
    59. for(n=100;n<1000;n++)
    60. {
    61. i=n/100;/*分解出百位*/
    62. j=n/10%10;/*分解出十位*/
    63. k=n%10;/*分解出个位*/
    64. if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
    65. {
    66. printf("%-5d",n);
    67. }
    68. }
    69. printf("\n");
    70. }

    71. 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    72. __________________________________________________________________

    73. 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完
    74. 成:
    75. (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    76. (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正
    77. 整数你n,重复执行第一步。
    78. (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
    79. ___________________________________________________________________

    80. 程序源代码:
    81. /* zheng int is divided yinshu*/
    82. main()
    83. {
    84. int n,i;
    85. printf("\nplease input a number:\n");
    86. scanf("%d",&n);
    87. printf("%d=",n);
    88. for(i=2;i<=n;i++)
    89. {
    90. while(n!=i)
    91. {
    92. if(n%i==0)
    93. { printf("%d*",i);
    94. n=n/i;
    95. }
    96. else
    97. break;
    98. }
    99. }
    100. printf("%d",n);
    101. }
    102. 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60
    103. -89分之间的用B表示,60分以下的用C表示。
    104. __________________________________________________________________
    105. 程序分析:(a>b)?a:b这是条件运算符的基本例子。
    106. ___________________________________________________________________
    107. 程序源代码:
    108. main()
    109. {
    110. int score;
    111. char grade;
    112. printf("please input a score\n");
    113. scanf("%d",&score);
    114. grade=score>=90?'A'score>=60?'B':'C');
    115. printf("%d belongs to %c",score,grade);
    116. }

    117. 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
    118. __________________________________________________________________
    119. 程序分析:利用辗除法。
    120. ___________________________________________________________________
    121. 程序源代码:
    122. main()
    123. {
    124. int a,b,num1,num2,temp;
    125. printf("please input two numbers:\n");
    126. scanf("%d,%d",&num1,&num2);
    127. if(num1  { temp=num1;
    128. num1=num2; 
    129. num2=temp;
    130. }
    131. a=num1;b=num2;
    132. while(b!=0)/*利用辗除法,直到b为0为止*/
    133. {
    134. temp=a%b;
    135. a=b;
    136. b=temp;
    137. }
    138. printf("gongyueshu:%d\n",a);
    139. printf("gongbeishu:%d\n",num1*num2/a);
    140. }
    141. 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

    142. __________________________________________________________________
    143. 程序分析:利用while语句,条件为输入的字符不为'\n'.
    144. ___________________________________________________________________
    145. 程序源代码:
    146. #include "stdio.h"
    147. main()
    148. {char c;
    149. int letters=0,space=0,digit=0,others=0;
    150. printf("please input some characters\n");
    151. while((c=getchar())!='\n')
    152. {
    153. if(c>='a'&&c<='z'||c>='A'&&c<='Z')
    154. letters++;
    155. else if(c==' ')
    156. space++;
    157. else if(c>='0'&&c<='9')
    158. digit++;
    159. else
    160. others++;
    161. }
    162. printf("all in all:char=%d space=%d digit=%d others=%
    163. d\n",letters,space,digit,others);
    164. }
    165. 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如
    166. 2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
    167. __________________________________________________________________
    168. 程序分析:关键是计算出每一项的值。
    169. ___________________________________________________________________
    170. 程序源代码:
    171. main()
    172. {
    173. int a,n,count=1;
    174. long int sn=0,tn=0;
    175. printf("please input a and n\n");
    176. scanf("%d,%d",&a,&n);
    177. printf("a=%d,n=%d\n",a,n);
    178. while(count<=n)
    179. {
    180. tn=tn+a;
    181. sn=sn+tn;
    182. a=a*10;
    183. ++count;
    184. }
    185. printf("a+aa+...=%ld\n",sn);
    186. }
    187. 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2
    188. +3.编程找出1000以内的所有完数。
    189. ___________________________________________________________________
    190. 程序源代码:
    191. main()
    192. {
    193. static int k[10];
    194. int i,j,n,s;
    195. for(j=2;j<1000;j++)
    196. {
    197. n=-1;
    198. s=j;
    199. for(i=1;i   {
    200. if((j%i)==0)
    201. { n++;
    202. s=s-i;
    203. k[n]=i;
    204. }
    205. }
    206. if(s==0)
    207. {
    208. printf("%d is a wanshu",j);
    209. for(i=0;i  printf("%d,",k);
    210. printf("%d\n",k[n]);
    211. }
    212. }
    213. }

    214. 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
    215. 求它在第10次落地时,共经过多少米?第10次反弹多高?
    216. ___________________________________________________________________
    217. 程序源代码:
    218. main()
    219. {
    220. float sn=100.0,hn=sn/2;
    221. int n;
    222. for(n=2;n<=10;n++)
    223. {
    224. sn=sn+2*hn;/*第n次落地时共经过的米数*/
    225. hn=hn/2; /*第n次反跳高度*/
    226. }
    227. printf("the total of road is %f\n",sn);
    228. printf("the tenth is %f meter\n",hn);
    229. }
    230. 题目:一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的
    231. 一半又多吃了一个,到第十天的时候发现还有一个.
    232. ___________________________________________________________________
    233. 程序源代码:
    234. /* 猴子吃桃问题 */
    235. main()
    236. {
    237. int i,s,n=1;
    238. for(i=1;i<10;i++)
    239. {
    240. s=(n+1)*2
    241. n=s;
    242. }
    243. printf("第一天共摘了%d个桃\n",s);
    244. }

    245. 迭代法求方程根
    246. ___________________________________________________________________

    247. /* 迭代法求一个数的平方根 */
    248. #define Epsilon 1.0E-6 /*控制解的精度*/
    249. #include<math.h>
    250. main()
    251. {
    252. float a,x0,x1;
    253. printf("请输入要求的数:");
    254. scanf("%f",&a);
    255. x0=a/2;
    256. x1=(x0+a/x0)/2;
    257. while(fabs(x1-x0)>=Epsilon)
    258. {
    259. x0=x1;
    260. x1=(x0+a/x0)/2;
    261. }
    262. printf("%f的平方根:%f.5\n",x1);
    263. }

    264. /* 上题的另一种算法 */
    265. #define Epsilon 1.0E-6 /*控制解的精度*/
    266. #include <stdio.h>
    267. #include <math.h>
    268. main()
    269. {
    270. float num,pre,this;
    271. do
    272. {
    273. scanf("%f",&num);/*输入要求平方根的数*/
    274. }while(num<0);
    275. if (num==0)
    276. printf("the root is 0");
    277. else
    278. {
    279. this=1;
    280. do
    281. {
    282. pre=this;
    283. this=(pre+num/pre)/2;
    284. }while(fabs(pre-this)>Epsilon);/*用解的精度,控制循环次数*/
    285. }
    286. printf("the root is %f",this);
    287. }
    288. 用牛顿迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根
    289. /* 牛顿迭代法 */
    290. #define Epsilon 1.0E-6 /*控制解的精度*/
    291. #include<math.h>
    292. main()
    293. {
    294. float x1,x0=1.5;
    295. x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);
    296. while(fabs(x1-x0>=Epsilon)
    297. {  
    298. x0=x1;
    299. x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);
    300. }
    301. printf("方程的根为%f\n",x1);
    302. }
    303. 用二分法求上题
    304. /* 二分法 */
    305. #define Epsilon 1.0E-5 /*控制解的精度*/
    306. #include<math.h>
    307. main()
    308. {
    309. folat x1,x2,x0,f1,f2,f0;
    310. x0=(x1+x2)/2;
    311. f0=2*x0*x0*x0-4*x0*x0+3*x0-6;   /* 求中点的函数值 */
    312. while(fabs(f0)>=Epsilon)
    313. {
    314. if(f0*f1<0)
    315. { x2=x0;
    316. f2=2*x2*x2*x2-4*x2*x2+3*x2-6;
    317. }
    318. if(f0*f2<0)
    319. { x1=x0;
    320. f1=2*x1*x1*x1-4*x1*x1+3*x1-6;
    321. }
    322. x0=(x1+x2)/2;
    323. f0=2*x0*x0*x0-4*x0*x0+3*x0-6;
    324. }
    325. printf("用二分法求得方程的根:%f\n",x0);
    326. }
    327. 题目:打印出如下图案(菱形)
    328. *
    329. ***
    330. ******
    331. ********
    332. ******
    333. ***
    334. *
    335. ___________________________________________________________________
    336. 程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利
    337. 用双重for循环,第一层控制行,第二层控制列。
    338. ___________________________________________________________________
    339. 程序源代码:
    340. main()
    341. {
    342. int i,j,k;
    343. for(i=0;i<=3;i++)
    344. {
    345. for(j=0;j<=2-i;j++)
    346. printf(" ");
    347. for(k=0;k<=2*i;k++)
    348. printf("*");
    349. printf("\n");
    350. }
    351. for(i=0;i<=2;i++)
    352. {
    353. for(j=0;j<=i;j++)
    354. printf(" ");
    355. for(k=0;k<=4-2*i;k++)
    356. printf("*");
    357. printf("\n");
    358. }
    359. }
    360. 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,
    361. 十位与千位相同。
    362. ___________________________________________________________________
    363. 程序分析:同29例
    364. ___________________________________________________________________
    365. 程序源代码:
    366. main( )
    367. {
    368. long ge,shi,qian,wan,x;
    369. scanf("%ld",&x);
    370. wan=x/10000;
    371. qian=x%10000/1000;
    372. shi=x%100/10;
    373. ge=x%10;
    374. if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
    375. printf("this number is a huiwen\n");
    376. else
    377. printf("this number is not a huiwen\n");
    378. }

    379. 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,
    380. 则继续判断第二个字母。
    381. ___________________________________________________________________
    382. 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语
    383. 句判断第二个字母。
    384. ___________________________________________________________________
    385. 程序源代码:
    386. #include <stdio.h>
    387. void main()
    388. {
    389. char letter;
    390. printf("please input the first letter of someday\n");
    391. while ((letter=getch())!='Y') /*当所按字母为Y时才结束*/
    392. { switch (letter)
    393. {case 'S':printf("please input second letter\n");
    394. if((letter=getch())=='a')
    395. printf("saturday\n");
    396. else if ((letter=getch())=='u')
    397. printf("sunday\n");
    398. else printf("data error\n");
    399. break;
    400. case 'F':printf("frIDAy\n");break;
    401. case 'M':printf("monday\n");break;
    402. case 'T':printf("please input second letter\n");
    403. if((letter=getch())=='u')
    404. printf("tuesday\n");
    405. else if ((letter=getch())=='h')
    406. printf("thursday\n");
    407. else printf("data error\n");
    408. break;
    409. case 'W':printf("wednesday\n");break;
    410. default: printf("data error\n");
    411. }
    412. }
    413. }
    414. 题目:Press any key to change color, do you want to try it. Please
    415. hurry up!
    416. ___________________________________________________________________
    417. 程序源代码:
    418. #include <conio.h>
    419. void main(void)
    420. {
    421. int color;
    422. for (color = 0; color < 8; color++)
    423. {
    424. textbackground(color); /*设置文本的背景颜色*/
    425. cprintf("This is color %d\r\n", color);
    426. cprintf("ress any key to continue\r\n");
    427. getch(); /*输入字符看不见*/
    428. }
    429. }
    430. 题目:学习gotoxy()与clrscr()函数
    431. ___________________________________________________________________
    432. 程序源代码:
    433. #include <conio.h>
    434. void main(void)
    435. {
    436. clrscr(); /*清屏函数*/
    437. textbackground(2);
    438. gotoxy(1, 5); /*定位函数*/
    439. cprintf("Output at row 5 column 1\n");
    440. textbackground(3);
    441. gotoxy(20, 10);
    442. cprintf("Output at row 10 column 20\n");
    443. }

    444. 题目:练习函数调用
    445. ___________________________________________________________________
    446. 程序源代码:
    447. #include <stdio.h>
    448. void hello_world(void)
    449. {
    450. printf("Hello, world!\n");
    451. }
    452. void three_hellos(void)
    453. {
    454. int counter;
    455. for (counter = 1; counter <= 3; counter++)
    456. hello_world();/*调用此函数*/
    457. }
    458. void main(void)
    459. {
    460. three_hellos();/*调用此函数*/
    461. }

    462. 题目:文本颜色设置
    463. ___________________________________________________________________
    464. 程序源代码:
    465. #include <conio.h>
    466. void main(void)
    467. {
    468. int color;
    469. for (color = 1; color < 16; color++)
    470. {
    471. textcolor(color);/*设置文本颜色*/
    472. cprintf("This is color %d\r\n", color);
    473. }
    474. textcolor(128 + 15);
    475. cprintf("This is blinking\r\n");
    476. }
    477. 题目:求100之内的素数
    478. ___________________________________________________________________
    479. 程序源代码:
    480. #include <stdio.h>
    481. #include "math.h"
    482. #define N 101
    483. main()
    484. {
    485. int i,j,line,a[N];
    486. for(i=2;i<N;i++) a=i;
    487. for(i=2;i<sqrt(N);i++)
    488. for(j=i+1;j<N;j++)
    489. {
    490. if(a!=0&&a[j]!=0)
    491. if(a[j]%a==0)
    492. a[j]=0;}
    493. printf("\n");
    494. for(i=2,line=0;i<N;i++)
    495. {
    496. if(a!=0)
    497. {printf("%5d",a);
    498. line++;}
    499. if(line==10)
    500. {printf("\n");
    501. line=0;}
    502. }
    503. }
    504. 题目:对10个数进行排序
    505. ___________________________________________________________________
    506. 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个
    507. 元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。    
    508.    
    509. 程序源代码:
    510. #define N 10
    511. main()
    512. {int i,j,min,tem,a[N];
    513. /*input data*/
    514. printf("please input ten num:\n");
    515. for(i=0;i<N;i++)
    516. {
    517. printf("a[%d]=",i);
    518. scanf("%d",&a);}
    519. printf("\n");
    520. for(i=0;i<N;i++)
    521. printf("%5d",a);
    522. printf("\n");
    523. /*sort ten num*/
    524. for(i=0;i<N-1;i++)
    525. {min=i;
    526. for(j=i+1;j<N;j++)
    527. if(a[min]>a[j]) min=j;
    528. tem=a;
    529. a=a[min];
    530. a[min]=tem;
    531. }
    532. /*output data*/
    533. printf("After sorted \n");
    534. for(i=0;i<N;i++)
    535. printf("%5d",a);
    536. }
    537. 题目:求一个3*3矩阵对角线元素之和
    538. ___________________________________________________________________
    539. 程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
    540. ___________________________________________________________________
    541. 程序源代码:
    542. main()
    543. {
    544. float a[3][3],sum=0;
    545. int i,j;
    546. printf("please input rectangle element:\n");
    547. for(i=0;i<3;i++)
    548. for(j=0;j<3;j++)
    549. scanf("%f",&a[j]);
    550. for(i=0;i<3;i++)
    551. sum=sum+a;
    552. printf("duijiaoxian he is %6.2f",sum);
    553. }
    554. 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数
    555. 组中。
    556. ___________________________________________________________________
    557. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况
    558. ,插入后此元素之后的数,依次后移一个位置。
    559. ___________________________________________________________________
    560. 程序源代码:
    561. main()
    562. {
    563. int a[11]={1,4,6,9,13,16,19,28,40,100};
    564. int temp1,temp2,number,end,i,j;
    565. printf("original array is:\n");
    566. for(i=0;i<10;i++)
    567. printf("%5d",a);
    568. printf("\n");
    569. printf("insert a new number:");
    570. scanf("%d",&number);
    571. end=a[9];
    572. if(number>end)
    573. a[10]=number;
    574. else
    575. {for(i=0;i<10;i++)
    576. { if(a>number)
    577. {temp1=a;
    578. a=number;
    579. for(j=i+1;j<11;j++)
    580. {temp2=a[j];
    581. a[j]=temp1;
    582. temp1=temp2;
    583. }
    584. break;
    585. }
    586. }
    587. }
    588. for(i=0;i<11;i++)
    589. printf("%6d",a);
    590. }
    591. 题目:将一个数组逆序输出。
    592. ___________________________________________________________________
    593. 程序分析:用第一个与最后一个交换。
    594. ___________________________________________________________________
    595. 程序源代码:
    596. #define N 5
    597. main()
    598. { int a[N]={9,6,5,4,1},i,temp;
    599. printf("\n original array:\n");
    600. for(i=0;i<N;i++)
    601. printf("%4d",a);
    602. for(i=0;i<N/2;i++)
    603. {temp=a;
    604. a=a[N-i-1];
    605. a[N-i-1]=temp;
    606. }
    607. printf("\n sorted array:\n");
    608. for(i=0;i<N;i++)
    609. printf("%4d",a);
    610. }

    611. 题目:学习static定义静态变量的用法
    612. ___________________________________________________________________
    613. 程序源代码:
    614. #include "stdio.h"
    615. varfunc()
    616. {
    617. int var=0;
    618. static int static_var=0;
    619. printf("\40:var equal %d \n",var);
    620. printf("\40:static var equal %d \n",static_var);
    621. printf("\n");
    622. var++;
    623. static_var++;
    624. }
    625. void main()
    626. {int i;
    627. for(i=0;i<3;i++)
    628. varfunc();
    629. }

    630. 题目:学习使用auto定义变量的用法
    631. ___________________________________________________________________
    632. 程序源代码:
    633. #include "stdio.h"
    634. main()
    635. {int i,num;
    636. num=2;
    637. for (i=0;i<3;i++)
    638. { printf("\40: The num equal %d \n",num);
    639. num++;
    640. {
    641. auto int num=1;
    642. printf("\40: The internal block num equal %d \n",num);
    643. num++;
    644. }
    645. }
    646. }
    647. C语言的学基础,100个经典的算法-2
    648. 程序源代码:
    649. #include "stdio.h"
    650. main()
    651. {
    652. int i,num;
    653. num=2;
    654. for(i=0;i<3;i++)
    655. {
    656. printf("\40: The num equal %d \n",num);
    657. num++;
    658. {
    659. static int num=1;
    660. printf("\40:The internal block num equal %d\n",num);
    661. num++;
    662. }
    663. }
    664. }

    665. 题目:学习使用external的用法。
    666. ___________________________________________________________________
    667. 程序源代码:
    668. #include "stdio.h"
    669. int a,b,c;
    670. void add()
    671. { int a;
    672. a=3;
    673. c=a+b;
    674. }
    675. void main()
    676. { a=b=4;
    677. add();
    678. printf("The value of c is equal to %d\n",c);
    679. }

    680. 题目:学习使用register定义变量的方法。
    681. ___________________________________________________________________
    682. 程序源代码:
    683. void main()
    684. {
    685. register int i;
    686. int tmp=0;
    687. for(i=1;i<=100;i++)
    688. tmp+=i;
    689. printf("The sum is %d\n",tmp);
    690. }

    691. 题目:宏#define命令练习(1)
    692. ___________________________________________________________________
    693. 程序源代码:
    694. #include "stdio.h"
    695. #define TRUE 1
    696. #define FALSE 0
    697. #define SQ(x) (x)*(x)
    698. void main()
    699. {
    700. int num;
    701. int again=1;
    702. printf("\40: Program will stop if input value less than 50.\n");
    703. while(again)
    704. {
    705. printf("\40lease input number==>");
    706. scanf("%d",&num);
    707. printf("\40:The square for this number is %d \n",SQ(num));
    708. if(num>=50)
    709. again=TRUE;
    710. else
    711. again=FALSE;
    712. }
    713. }

    714. 题目:宏#define命令练习(2)
    715. ___________________________________________________________________
    716. 程序源代码:
    717. #include "stdio.h"
    718. #define exchange(a,b)
    719. { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上""*/
    720. int t;\
    721. t=a;\
    722. a=b;\
    723. b=t;\
    724. }
    725. void main(void)
    726. {
    727. int x=10;
    728. int y=20;
    729. printf("x=%d; y=%d\n",x,y);
    730. exchange(x,y);
    731. printf("x=%d; y=%d\n",x,y);
    732. }

    733. 题目:宏#define命令练习(3)
    734. ___________________________________________________________________
    735. 程序源代码:
    736. #define LAG >
    737. #define SMA <
    738. #define EQ ==
    739. #include "stdio.h"
    740. void main()
    741. { int i=10;
    742. int j=20;
    743. if(i LAG j)
    744. printf("\40: %d larger than %d \n",i,j);
    745. else if(i EQ j)
    746. printf("\40: %d equal to %d \n",i,j);
    747. else if(i SMA j)
    748. printf("\40:%d smaller than %d \n",i,j);
    749. else
    750. printf("\40: No such value.\n");
    751. }

    752. 题目:#if #ifdef和#ifndef的综合应用。
    753. ___________________________________________________________________
    754. 程序源代码:
    755. #include "stdio.h"
    756. #define MAX
    757. #define MAXIMUM(x,y) (x>y)?x:y
    758. #define MINIMUM(x,y) (x>y)?y:x
    759. void main()
    760. { int a=10,b=20;
    761. #ifdef MAX
    762. printf("\40: The larger one is %d\n",MAXIMUM(a,b));
    763. #else
    764. printf("\40: The lower one is %d\n",MINIMUM(a,b));
    765. #endif
    766. #ifndef MIN
    767. printf("\40: The lower one is %d\n",MINIMUM(a,b));
    768. #else
    769. printf("\40: The larger one is %d\n",MAXIMUM(a,b));
    770. #endif
    771. #undef MAX
    772. #ifdef MAX
    773. printf("\40: The larger one is %d\n",MAXIMUM(a,b));
    774. #else
    775. printf("\40: The lower one is %d\n",MINIMUM(a,b));
    776. #endif
    777. #define MIN
    778. #ifndef MIN
    779. printf("\40: The lower one is %d\n",MINIMUM(a,b));
    780. #else
    781. printf("\40: The larger one is %d\n",MAXIMUM(a,b));
    782. #endif
    783. }

    784. 题目:#include 的应用练习
    785. ___________________________________________________________________
    786. 程序源代码:
    787. test.h 文件如下:
    788. #define LAG >
    789. #define SMA <
    790. #define EQ ==
    791. #include "test.h" /*一个新文件50.c,包含test.h*/
    792. #include "stdio.h"
    793. void main()
    794. { int i=10;
    795. int j=20;
    796. if(i LAG j)
    797. printf("\40: %d larger than %d \n",i,j);
    798. else if(i EQ j)
    799. printf("\40: %d equal to %d \n",i,j);
    800. else if(i SMA j)
    801. printf("\40:%d smaller than %d \n",i,j);
    802. else
    803. printf("\40: No such value.\n");
    804. }
    805. 题目:学习使用按位与 & 。   
    806. ___________________________________________________________________
    807. 程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
    808. ___________________________________________________________________
    809. 程序源代码:
    810. #include "stdio.h"
    811. main()
    812. {
    813. int a,b;
    814. a=077;
    815. b=a&3;
    816. printf("\40: The a & b(decimal) is %d \n",b);
    817. b&=7;
    818. printf("\40: The a & b(decimal) is %d \n",b);
    819. }

    820. 题目:学习使用按位或 | 。
    821. ___________________________________________________________________
    822. 程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1            
    823. ___________________________________________________________________
    824. 程序源代码:
    825. #include "stdio.h"
    826. main()
    827. {
    828. int a,b;
    829. a=077;
    830. b=a|3;
    831. printf("\40: The a & b(decimal) is %d \n",b);
    832. b|=7;
    833. printf("\40: The a & b(decimal) is %d \n",b);
    834. }

    835. 题目:学习使用按位异或 ^ 。   
    836. ___________________________________________________________________
    837. 程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
    838. ___________________________________________________________________
    839. 程序源代码:
    840. #include "stdio.h"
    841. main()
    842. {
    843. int a,b;
    844. a=077;
    845. b=a^3;
    846. printf("\40: The a & b(decimal) is %d \n",b);
    847. b^=7;
    848. printf("\40: The a & b(decimal) is %d \n",b);
    849. }

    850. 题目:取一个整数a从右端开始的4~7位。
    851. ___________________________________________________________________
    852.   程序分析:可以这样考虑:
    853. (1)先使a右移4位。
    854. (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
    855. (3)将上面二者进行&运算。
    856. ___________________________________________________________________
    857. 程序源代码:
    858. main()
    859. {
    860. unsigned a,b,c,d;
    861. scanf("%o",&a);
    862. b=a>>4;
    863. c=~(~0<<4);
    864. d=b&c;
    865. printf("%o\n%o\n",a,d);
    866. }

    867. 题目:学习使用按位取反~。   
    868. ___________________________________________________________________
    869. 程序分析:~0=1; ~1=0;
    870. ___________________________________________________________________
    871. 程序源代码:
    872. #include "stdio.h"
    873. main()
    874. {
    875. int a,b;
    876. a=234;
    877. b=~a;
    878. printf("\40: The a's 1 complement(decimal) is %d \n",b);
    879. a=~a;
    880. printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);
    881. }

    882. 题目:画图,学用circle画圆形。
    883. ___________________________________________________________________
    884. 程序源代码:
    885. /*circle*/
    886. #include "graphics.h"
    887. main()
    888. {
    889. int driver,mode,i;
    890. float j=1,k=1;
    891. driver=VGA;mode=VGAHI;
    892. initgraph(&driver,&mode,"");
    893. setbkcolor(YELLOW);
    894. for(i=0;i<=25;i++)
    895. {
    896. setcolor(8);
    897. circle(310,250,k);
    898. k=k+j;
    899. j=j+0.3;
    900. }
    901. }

    902. 题目:画图,学用line画直线。
    903. ___________________________________________________________________
    904.      
    905. 程序源代码:
    906. #include "graphics.h"
    907. main()
    908. {
    909. int driver,mode,i;
    910. float x0,y0,y1,x1;
    911. float j=12,k;
    912. driver=VGA;mode=VGAHI;
    913. initgraph(&driver,&mode,"");
    914. setbkcolor(GREEN);
    915. x0=263;y0=263;y1=275;x1=275;
    916. for(i=0;i<=18;i++)
    917. {
    918. setcolor(5);
    919. line(x0,y0,x0,y1);
    920. x0=x0-5;
    921. y0=y0-5;
    922. x1=x1+5;
    923. y1=y1+5;
    924. j=j+10;
    925. }
    926. x0=263;y1=275;y0=263;
    927. for(i=0;i<=20;i++)
    928. {
    929. setcolor(5);
    930. line(x0,y0,x0,y1);
    931. x0=x0+5;
    932. y0=y0+5;
    933. y1=y1-5;
    934. }
    935. }

    936. 题目:画图,学用rectangle画方形。   
    937. ___________________________________________________________________
    938.  
    939. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
    940. ___________________________________________________________________
    941.  
    942. 程序源代码:
    943. #include "graphics.h"
    944. main()
    945. {
    946. int x0,y0,y1,x1,driver,mode,i;
    947. driver=VGA;mode=VGAHI;
    948. initgraph(&driver,&mode,"");
    949. setbkcolor(YELLOW);
    950. x0=263;y0=263;y1=275;x1=275;
    951. for(i=0;i<=18;i++)
    952. {
    953. setcolor(1);
    954. rectangle(x0,y0,x1,y1);
    955. x0=x0-5;
    956. y0=y0-5;
    957. x1=x1+5;
    958. y1=y1+5;
    959. }
    960. settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
    961. outtextxy(150,40,"How beautiful it is!");
    962. line(130,60,480,60);
    963. setcolor(2);
    964. circle(269,269,137);
    965. }
    复制代码


    个人签名

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表