1 #include <stdio.h>
2 #include <string.h>
3 #include <math.h>
4 #include <ctype.h>
5 #define N 20
6 int main()
7 {
8 //调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。
9 #if(0)
10 int a[N] ,i , sum = 0;
11 printf("input 10 integer\n");
12 for ( i = 0; i < N; i++)
13 {
14 scanf("%d",&a[i]);
15 }
16 for ( i = 0; i < N; i++)
17 {
18 sum += a[i];
19 if(i % 3 == 0) printf("\n");
20 printf("%3d",a[i]);
21 }
22 printf("\n");
23 printf("\n");
24 printf("10 integer average is %f",sum / 10.0);
25 #endif
26 //有一个3行4列的距阵,现要求编程求出其中最大的那个元素的值,以及它所在的行号与列号。下面程序的初始说明和输出语句如下所示,请补充完成该程序。
27 #if(0)
28 int i , j ,row ,colum ,max;
29 static int a[3][4] = {{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
30
31 max = a[0][0] ;
32
33 for ( i = 0; i < 3; i++)
34 {
35 for ( j = 0; j < 4; j++)
36 {
37 if(a[i][j] > max) {max = a[i][j] ,row = i , colum = j };
38 }
39 }
40
41
42
43
44 printf("Max = %d, Row = %d , Colum = %d \n",max,row+1,colum+1);
45 #endif
46 //数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。
47 #if(0)
48 int i,x,a[10]={1,2,3,4,5,6,7,8,9,10};
49 printf("input search num:");
50 scanf("%d",&x);
51 for ( i = 0; i < 10; i++)
52 {
53 if(a[i] == x) break;
54 }
55 if(i < 10) printf("该元素的下标为%d\n",i);
56 else printf("该数组没有%d\n",x);
57 #endif
58
59 #if(0)
60 int i, k, x,a[5]={1,3,5,7} ;
61 scanf("%d",&x);
62 for ( k=4; k>0; k-- ) /* 从后向前比较 */
63 if ( a[k-1] > x )
64 a[k] = a[k-1]; /* 将大数向后移动 */
65 else break; /* 找到插入的位置,退出 */
66 a[k] = x; /* 完成插入操作 */
67 for (i=0; i<5; i++)
68 printf("%4d", a[i]);
69 return 0;
70 #endif //有一个已排好序的数组,今有一个数,要求按原来排序的规律将它插入数组(从小到大排列)中。
71
72 //任意输入10个任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序
73 #if(0)
74 int i ,j ,x ,temp , a[11];
75 printf("输入十个整数:\n");
76 for ( i = 0; i < 10; i++)
77 {
78 scanf("%d",&a[i]);
79 }
80 for ( i = 0; i < 9; i++)
81 {
82 for ( j = 0; j < 9 - i; j++)
83 {
84 if(a[j]<a[j+1])
85 {
86 temp = a[j];
87 a[j] = a[j+1];
88 a[j+1] = temp;
89 }
90 }
91 }
92 printf("输入要插入的整数:\n");
93 scanf("%d",&x);
94 for ( i = 9; i >= 0 ; i--)
95 {
96 if( a[i] < x )
97 {
98 a[i+1] = a[i];
99 }else break;
100 a[i] = x;
101 }
102 for ( i = 0; i < 11; i++)
103 {
104 printf("%3d",a[i]);
105 }
106 #endif
107
108 //输入十个互不相同的整数并存在数组中,找出最大元素,并删除
109 #if(0)
110 int a[10] , i , j , max;
111 printf("请输入十个互不相同的整数\n");
112 for ( i = 0; i < 10; i++)
113 {
114 scanf("%d",&a[i]);
115 }
116
117 max = a[0];
118 for ( i = 1; i < 10; i++)
119 {
120 if(a[i]>max) {max = a[i] ,j = i; }
121 }
122 for ( i = j; i < 10; i++)
123 {
124 a[i] = a[i+1];
125 }
126 for ( i = 0; i < 9; i++)
127 {
128 printf("%3d",a[i]);
129 }
130 #endif
131
132 //从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入
133 #if(0)
134 float x[1000] , sum = 0.0 , ave ,a;
135 int n = 0 , i;
136 printf("Enter mark :\n");
137 scanf("%f",&a);
138 while (a>=0.0 && n<1000)
139 {
140 sum += a;
141 x[n] = a;
142 n++;
143 scanf("%f",&a);
144 }
145 ave = sum / n;
146
147 printf("Output:\n");
148 printf("ave = %f\n",ave);
149 for ( i = 0; i < n; i++)
150 {
151 if(x[i]<ave) printf("%f\n",x[i]);
152 }
153 #endif
154
155 //打印如下杨辉三角形
156 #if(0)
157 //int a[6][6] , i , j;
158 //for ( i = 0; i < 6; i++)
159 //{
160 // a[i][0] = 1;
161 // a[i][i] = 1;
162 //}
163 //for ( i = 1; i < 6; i++)
164 //{
165 // for ( j = 1; j <= i-1; j++)
166 // {
167 // a[i][j] = a[i-1][j] + a[i-1][j-1];
168 // }
169 //}
170 //for ( i = 0; i < 6; i++)
171 //{
172 // for ( j = 0; j < i +1; j++)
173 // {
174 // printf("%3d",a[i][j]);
175 // }
176 // printf("\n");
177 //}
178 //int a[6][6] , i , j;
179 //for ( i = 0; i < 6; i++)
180 //{
181 // for ( j = 0; j <= i; j++)
182 // {
183 // if(j == i || j == 0)
184 // a[i][j] = 1;
185 // else
186 // a[i][j] = a[i-1][j] + a[i-1][j-1];
187 // }
188 //}
189 //for ( i = 0; i < 6; i++)
190 //{
191 // for ( j = 0; j <= i; j++)
192 // {
193 // printf("%3d",a[i][j]);
194 // }
195 // printf("\n");
196 //}
197 #endif
198
199 #if(1)
200 //int a[10] , *p , *q , temp;
201 //for ( p = a; p < a+10; p++)
202 //{
203 // scanf("%d",p);
204 //}
205 //for ( p = a , q = a + 9; p < q; p++,q--)
206 //{
207 // temp = *p , *p = *q , *q = temp;
208 //}
209 //for ( p = a; p < a+10; p++)
210 //{
211 // printf("%4d",*p);
212 //}
213
214
215 char a[] = "abcdefg" , *p , *q ,temp;
216 int m;
217 m = strlen(a);
218 for ( p = a , q = a+m-1; p < q; p++ ,q--)
219 {
220 temp = *q , *q = *p ,*p = temp;
221 }
222 puts(a);
223
224 #endif //逆序输出整数数组 和 字符数组
225
226 #if(0)
227 char a[10] , b[10] ,c[10];
228 printf("请输入两个字符串:\n");
229 gets(a);
230 gets(b);
231 if(strlen(a) < strlen(b) )
232 {
233 strcpy(c,a),strcpy(a,b),strcpy(b,c);
234 }
235 puts(a);
236 puts(b);
237 #endif //把较短的字符串放在a数组,较长的字符串放在b数组。并输出
238
239 #if(0)
240 char s1[80] , s2[40];
241 int i = 0 , j = 0;
242 gets(s1);
243 gets(s2);
244 /*字符串复制*/
245 //while ((s1[i++] = s2[j++]) != '\0');
246 //puts(s1);
247 /*字符串拼接*/
248 while (s1[i] != '\0') i++;
249 while ((s1[i++] = s2[j++]) != '\0');
250 s1[i] = '\0';
251 puts(s1);
252 #endif //字符串复制 和 字符串拼接
253
254 #if(0)
255 char a[10], b[10];
256 int m;
257 int i;
258 gets(a);
259 gets(b);
260 for ( i = 0; a[i] != '\0' && b[i] != '\0' ; i++)
261 {
262 if(a[i] == b[i]) continue;
263 else
264 {
265 m = a[i] - b[i];
266 break;
267 }
268 }
269 printf("%d\n",m);
270 #endif //输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差
271
272 #if(0)
273 int num[26],i;
274 char c;
275 for ( i = 0; i < 26; i++)
276 {
277 num[i] = 0;
278 }
279 while ((c = getchar()) != '#')
280 {
281 if(isupper(c)) num[c-65] += 1;
282 }
283 for ( i = 0; i < 26; i++)
284 {
285 if(num[i])
286 printf("%c:%d\n",i+65,num[i]);
287 }
288 #endif //使其的功能是统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志
289
290 #if(0)
291 //char a[10];
292 //int i;
293 //gets(a);
294 //for ( i = 0; a[i]!= '\0'; i++)
295 //{
296 // if(a[i]>'0')
297 // printf("%d",a[i]-'0');
298 // else
299 // printf("-");
300 // continue;
301 //}
302
303 int m , a[10], j = 0 , i;
304 char b[10];
305 scanf("%d",&m);
306 do
307 {
308 a[j] = m % 10;
309 m = m / 10;
310 j++;
311 } while (m);
312
313 for ( i = j; i >= 0; i--)
314 {
315 printf("%c",a[i-1]+'0');
316 }
317 #endif //字符串转数字 和 数字转字符串
318
319
320
321 /*************************************************************指针*********************************/
322 #if(0)
323 int a[5] = {1,2,3,4,5} , b[5] = {6,7,8,9,10} , c[5], *p , i;
324 p = c;
325 for ( i = 0; i < 5; i++)
326 {
327 *(p+i) = a[i];
328 a[i] = b[i];
329 b[i] = *(p+i);
330 }
331 for ( i = 0; i < 5; i++)
332 {
333 printf("%3d",a[i]);
334
335 }
336 printf("\n");
337 for ( i = 0; i < 5; i++)
338 {
339 printf("%3d",b[i]);
340 }
341 #endif //使用指针实现交换数组a和数组b
342
343 #if(0)
344 //void sort123(int *p , int n);
345 //int a[10] = {1,2,3,4,5,6,7,8,9,10},*p,t,i,j;
346 //p = a;
347 //sort123(a,10);
348 //for ( p = a; p < a+10; p++)
349 //{
350 // printf("%3d",*p);
351 //}
352 char *day[ ] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
353 //int today;
354 //printf("今天是星期");
355 //scanf("%d", &today);
356 char **today = day;
357 int i;
358 for ( i = 0; i < 7; i++)
359 {
360 printf("%s",*(day + i));
361 }
362 //switch (today)
363 //{
364 //case 1:
365 //case 2:
366 //case 3:
367 //case 4:
368 //case 5:
369 //case 6:
370 //case 7:
371 // printf("%s",day[today-1]);
372 // break;
373 //}
374 #endif
375
376 #if( 0 )
377 int a[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};
378 int (*p)[4];
379 int i,j;
380 p = a;
381 do
382 {
383 printf("i = ");
384 scanf("%d",&i);
385 } while (i >= 3 || i < 0);
386 do
387 {
388 printf("j = ");
389 scanf("%d",&j);
390 } while (j >= 4 || j < 0);
391
392 printf("a[%d][%d] = %d",i,j,*(*(p+i)+j));
393 #endif //通过输入指定行数和列数打印出对应的值
394
395 #if(0)
396 //int a[10],max,min,i,t,*p;
397 //for ( p = a; p < a + 10; p++)
398 //{
399 // scanf("%d",p);
400 //}
401 //max = min = 0;
402 //p = a;
403 //for ( i = 0; i < 10; i++)
404 //{
405 // if(*(p+i)>*(p+max)) max = i;
406 //
407 //}
408 //t = *p, *p = *(p+max), *(p+max) = t;
409 //for ( i = 0; i < 10; i++)
410 //{
411 // if(*(p+i)<*(p+min)) min = i;
412 //}
413 //t = *(p+9), *(p+9) = *(p+min), *(p+min) = t;
414 //for ( p = a; p < a + 10; p++)
415 //{
416 // printf("%3d",*p);
417 //}
418 /*int a[10] , *p , i , max = 0 , min = 0 , t , k;
419 p = a;
420 for ( i = 0; i < 10; i++)
421 {
422 scanf("%d",p+i);
423 }
424 for ( i = 0; i < 10; i++)
425 {
426 if(*(p+max)<*(p+i)) max = i;
427 else if(*(p+min)>*(p+i)) min = i;
428
429 }
430 t =*p;
431 *p = *(p+max);
432 *(p+max) = t;
433 k =*(p+9);
434 *(p+9)= *(p+min);
435 *(p+min) = k;
436 for ( i = 0; i < 10; i++)
437 {
438 printf("%3d",a[i]);
439 }*/
440 #endif //用指针最大的数和第一个数交换,最小的数最后一个数交换
441
442 //int a[10] , *p , i , j ,m;
443 //
444 //for ( p = a; p < a+10; p++)
445 //{
446 // scanf("%d",p);
447 //}
448 //p = a;
449 //j = 10 - 1 / 2;
450 //for ( p = a + 9; p < p + j; p--)
451 //{
452 //
453 //}
454 /*************************************************************指针*********************************/
455 #if(0)
456 int x , a[5] , i = 0 , j;
457 scanf("%d",&x);
458 while (x)
459 {
460 a[i] = x % 10;
461 x = x / 10;
462 i++;
463 }
464 printf("total is %d\n",i);
465 for ( j = 0; j < i; j++)
466 {
467 printf("%3d",a[j]);
468 }
469 #endif //输入一个不多于五位数的正整数,判断它是几位,并逆序输 出各位数字。
470
471 //编写一个程序,将将两个字符串连接起来,不能使用 strcat 函数。
472
473 #if(0)
474 int a[N] = {1,1} , i;
475 for ( i = 2; i < N; i++)
476 {
477 a[i] += a[i -1] + a[i-2];
478 }
479 for ( i = 0; i < N; i++)
480 {
481 printf("%5d",a[i]);
482 }
483
484 #endif //斐波拉契
485
486 #if(0)
487 int m , i , k , n = 0;
488 for ( m = 2; m <= 500; m++)
489 {
490 k = (int)sqrt((double)m);
491 for ( i = 2; i <= k; i++)
492 {
493 if(m % i == 0) break;
494 }
495 if ( i > k )
496 {printf("%4d",m); n = n+1; if(n%5==0) printf("\n");}
497 }
498 printf("total is %d",n);
499 #endif //打印500以内的素数
500
501 #if(0)
502 //辗转相除法
503 //int a,b,t;
504 //scanf("%d %d",&a,&b);
505 //while (b != 0)
506 //{
507 // t = a % b;
508 // a = b;
509 // b = t;
510 //}
511 //printf("最大公约数是%d",a);
512
513 //更相减损法
514 //int a,b,t;
515 //scanf("%d %d",&a,&b);
516 //while (a != b)
517 //{
518 // if(a>b)
519 // {
520 // a -= b;
521 // }else
522 // {
523 // b -= a;
524 // }
525 //}
526 //printf("最大公约数是%d",a);
527
528 //int x, y, gcd;
529 // printf("请输入两个正整数:");
530 // scanf("%d%d", &x, &y);
531 // if(x < y)
532 // gcd = x;
533 // else
534 // gcd = y;
535 // while(x % gcd ||y % gcd)
536 // gcd--;
537 // printf("gcd = %d\n", gcd);
538
539 //int a , b , i , t;
540 //scanf("%d %d",&a,&b);
541 //for ( i = 1; i <= a || i <= b; i++)
542 //{
543 // if( a % i == 0 && b % i == 0 ) t = i;
544 //}
545 // printf("%d",t);
546
547 //递归
548
549 int gcd1(int x , int y);
550 int a,b,result;
551 scanf("%d %d",&a,&b);
552 result = gcd1(a,b);
553 printf("最大公约数%d",result);
554 #endif //最大公约数
555
556 #if(0)
557 int a[5] = {12,18,1,0,6} , min , max, i , j , k , t;
558 max = min = a[0];
559
560 for ( i = 0; i < 5; i++)
561 {
562 if(a[i]<min)
563 { min = a[i] , k = i;}
564 else if(a[i]>max)
565 {
566 max = a[i] , j = i;
567 }
568 }
569 //t = a[4];
570 //a[4] = a[k];
571 //a[k] = t;
572 //
573 //t = a[0];
574 //a[0] = a[j];
575 //a[j] = t;
576 a[k] = max;
577 a[j] = min;
578 for ( i = 0; i < 5; i++)
579 {
580 printf("%3d",a[i]);
581 }
582 #endif //最大值和最小值的位置进行调换
583
584 #if(0)
585 int i , j ,temp ,a[5];
586 int hight , low , mid , nummber;
587 hight = 4;
588 low = 0;
589 for ( i = 0; i < 5; i++)
590 {
591 scanf("%d",&a[i]);
592 }
593 for ( i = 0; i < 4; i++)
594 {
595 for ( j = 0; j < 4 - i; j++)
596 {
597 if(a[j+1]>a[j])
598 {
599 temp = a[j];
600 a[j] = a[j+1];
601 a[j+1] = temp;
602 }
603 }
604 }
605
606 printf("数组元素的值为:\n");
607 for ( i = 0; i < 5; i++)
608 {
609 printf("%3d",a[i]);
610 }
611 printf("请输入要查找的数\n");
612 scanf("%d",&nummber);
613 if((nummber > a[0])||(nummber < a[4]))
614 printf("cannot find %d\n",nummber);
615 else
616 {
617 while (low <= hight)
618 {
619 mid = (low+hight)/2;
620 if(a[mid] == nummber)
621 {printf("This number %d is find, position is %d\n",mid+1,nummber); break;}
622 else if(nummber>a[mid]) low = mid + 1;
623 else hight = mid -1;
624 }
625 if(a[mid] != nummber)
626 printf("Not found this number %d\n",nummber);
627 }
628 #endif //二分法求位置
629
630 #if(0)
631 int a[10] ,i , j , k , max ,temp, b[9];
632 max = a[0];
633 for ( i = 0; i < 10; i++)
634 {
635 scanf("%d",&a[i]);
636 for ( j = 0; j < i ; j++)
637 {
638 while (a[i] == a[j])
639 {
640 printf("请重新输入\n");
641 scanf("%d",&a[i]);
642 }
643 }
644 }
645 for ( i = 0; i < 9; i++)
646 {
647 for ( j = 0; j < 9; j++)
648 {
649 if(a[j]>a[j+1])
650 {
651 temp = a[j];
652 a[j] = a[j+1];
653 a[j+1] = temp;
654 }
655 }
656 }
657 printf("最大值是%d\n",a[9]);
658 printf("删除后的数组元素是:\n");
659 for ( i = 0; i < 9; i++)
660 {
661 b[i] = a[i];
662 printf("%3d",b[i]);
663 }
664 #endif //输入10个互不相同的实数并存到数组,找出最大值,并删除
665
666 #if(0)
667 int a[4] = {1,3,5,10}, b[5] = {2,4,6,8,9}, c[1000] , i = 0, j = 0 , k=0;
668
669
670 while (j < 4 || k < 5 || i<9)
671 {
672 if(a[j] < b[k])
673 { c[i] = a[j]; }
674 else
675 {
676 c[i] = b[j];
677 }
678 j++ , k++ , i++;
679 }
680
681
682
683 for ( i = 0; i < 9; i++)
684 {
685 printf("%3d",c[i]);
686 }
687 #endif
688
689 #if(0)
690 //int a[10],i,j,t;
691 //printf("Please input 10 numbers: ");
692 //for(i=0;i<10;i++)
693 //scanf("%d",&a[i]);
694 //for(i=1;i<10;i++) /*外循环控制趟数,n个数从第2个数开始到最后共进行n-1次插入*/
695 //{
696 //t=a[i]; /*将待插入数暂存于变量t中*/
697 //for( j=i-1 ; j>=0 && t<a[j] ; j-- ) /*在有序序列(下标0 ~ i-1)中寻找插入位置*/
698 //a[j+1]=a[j]; /*若未找到插入位置,则当前元素后移一个位置*/
699 //a[j+1]=t; /*找到插入位置,完成插入*/
700 //}
701 //printf("The sorted numbers: ");
702 //for(i=0;i<10;i++)
703 //printf("%d ",a[i]);
704 //printf("\n");
705 //int a[5] = {1,3,5,2,4} , i , j ,k, temp;
706 //for ( i = 1; i <= 5; i++)
707 //{
708 // for ( j = 0; j < 5 - i; j++)
709 // {
710 // if(a[j+1]<a[j])
711 // {
712 // temp = a[j];
713 // a[j] = a[j+1];
714 // a[j+1] = temp;
715 // }
716 // }
717 //}
718 //for ( i = 0; i < 5; i++)
719 //{
720 // printf("%3d",a[i]);
721 //}
722
723
724 //for ( i = 0; i < 4; i++)
725 //{
726 // k = i;
727 // for ( j = i + 1; j < 5; j++)
728 // {
729 // if(a[k] > a[j] ) k = j;
730 // }
731 // if(k!=i)
732 // {
733 // temp = a[i];
734 // a[i] = a[k];
735 // a[k] = temp;
736 // }
737 //}
738 //for ( i = 0; i < 5; i++)
739 //{
740 // printf("%3d",a[i]);
741 //}
742
743 //for ( i = 1; i < 5; i++)
744 //{
745 // temp = a[i];
746 // for ( j = i - 1; j >=0 && a[j] > temp; j--)
747 // {
748 // a[j+1] = a[j];
749 // a[j] = temp;
750 // }
751 //}
752 //for ( i = 0; i < 5; i++)
753 //{
754 // printf("%3d",a[i]);
755 //}
756 #endif //排序
757
758 //char *a[2] = {"one","two"},**p = a;
759 //printf("%s\n",*(p++)+1);
760 //printf("%c\n",**p-1);
761 #if(0)
762 char str[N][10] , max[10];
763 int i , n;
764 printf("total input string is :");
765 scanf("%d",&n);
766 getchar(); //吃掉缓存区的回车字符
767 for ( i = 0; i < n; i++)
768 {
769 gets(str[i]);
770
771 }
772 strcpy(max,str[0]);
773 for ( i = 1; i < n; i++)
774 {
775 if(strcmp(str[i],max)>0) strcpy(max,str[i]);
776 }
777 printf("最大的字符串是%s",max);
778 #endif //用二维数组求最大字符串
779
780 #if(0)
781 char st[10],cs[][10] ={"Monday","Tuseday","Wednesday","Thursday","Friday","Saturday","Sunday"} ,i ,k ,j;
782 for ( i = 0; i < 6; i++)
783 {
784 k = i;
785 for ( j = i + 1 ; j < 7; j++)
786 {
787 if(strcmp(cs[k],cs[j])>0) k = j;
788 }
789 if(k != i)
790 {
791 strcpy(st,cs[i]); strcpy(cs[i],cs[k]); strcpy(cs[k],st);
792 }
793 }
794 for ( i = 0; i < 7; i++)
795 {
796 puts(cs[i]);
797 }
798 #endif //将二维字符数组储存的字符串按从小到大顺序排序并且输出这些字符串
799
800 #if(0)
801 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
802 int *pa[3] = {a[0],a[1],a[2]};
803 int i , j;
804 for ( i = 0; i < 3; i++)
805 {
806 for ( ;pa[i] <a[i+1]; pa[i]++) //p
807 {
808 printf("%d\t",*pa[i]);
809 }
810 printf("\n");
811 }
812 #endif //通过一个指针数组来指向一个二维数组,指针数组中的每个元素被赋予二维数组每一行的首地址
813
814 #if(0)
815 char *w[] = {"Monday","Tuseday","Wednesday","Thursday","Friday","Saturday","Sunday"};
816 char *st;
817 int i , j ,k;
818 printf("排序前的字符串地址,字符串的值如下:\n");
819 for ( i = 0; i < 7; i++)
820 {
821 printf("%s\n",w[i]);
822 }
823 for ( i = 0; i < 7; i++)
824 {
825 k = i;
826 for ( j = i+1; j < 7; j++)
827 {
828 if(strcmp(w[j],w[k])<0) k = j;
829 }
830 if(k!=i)
831 {
832 st = w[i]; w[i] = w[k]; w[k] = st;
833 }
834 }
835 printf("排序后的字符串地址,字符串的值如下:\n");
836 for ( i = 0; i < 7; i++)
837 {
838 printf("%s\n",w[i]);
839 }
840 #endif //将字符指针数组存储的字符串按从小到大的顺序排序且输出
841
842 #if(0)
843 int i , m , n;
844 for ( i = 1; i < 99; i++)
845 {
846 m = i*i;
847 if(i<10)
848 {
849 n = m % 10;
850 if(n == i) printf("%2d %2d \n",m,i);
851 }else
852 {
853 n = m % 100;
854 if(n == i) printf("%2d %2d \n",m,i);
855 }
856 }
857 #endif //同构数
858
859 //int a[3] = {1,3,12} ,b[5] = {2,4,5,9,7} , c[10] , i = 0 , j = 0 ,k = 0;
860 //while (i<3 && j<5)
861 //{
862 // if(a[i]<b[j]) { c[k] = a[i]; k++; i++;}
863 // else
864 // {
865 // c[k] = b[j]; k++; j++;
866 // }
867 //}
868 //while(i<3) { c[k] = a[i]; k++; i++;}
869 //while(j<5) {c[k] = b[j]; k++; j++;}
870 //for ( i = 0; i < k; i++)
871 //{
872 // printf("%3d",c[i]);
873 //}
874
875 #if(0)
876 char a[80];
877 int mystrlen(char *a) , length;
878 gets(a);
879 length = mystrlen(a);
880 printf("%d",length);
881 #endif //自定义字符串长度函数
882
883 #if(0)
884 char a[10] , b[10];
885 void mystrcpy(char *p1 , char *p2);
886 gets(a);
887 gets(b);
888 mystrcpy(a,b);
889 puts(a);
890 #endif //自定义字符串复制函数
891
892 //int i , j , a[6][6];
893 //for ( i = 0; i < 6; i++)
894 //{
895 // for ( j = 0; j <= i; j++)
896 // {
897 // if(i<=1) a[i][j] = 1;
898 // else
899 // {
900 // if(i == 0 || i == j) a[i][j] = 1;
901 // if(j > 0 && i > j)
902 // {
903 // a[i][j] = a[i-1][j]+a[i-1][j-1];
904 // }
905 // }
906 // }
907 //}
908 //for ( i = 0; i < 6; i++)
909 //{
910 // for ( j = 0; j <= i; j++)
911 // {
912 // printf("%d",a[i][j]);
913 // }
914 // printf("\n");
915 //}
916
917 }
918 int gcd1(int x , int y)
919 {
920 if( x % y == 0) return y;
921 else return gcd1(y, x % y);
922 }
923
924 int mystrlen(char *p)
925 {
926 int i , length = 0;
927 //for ( i = 0; *(p+i) != '\0'; i++) //*(p+i) 或 p[i]
928 //{
929 // length++;
930 //}
931 while (*p++!='\0')
932 {
933 length++;
934 }
935 return length;
936 }
937
938 void mystrcpy(char *p1 , char *p2)
939 {
940 int i = 0;
941 while (p2[i] != '\0')
942 {
943 p1[i] = p2[i];
944 i++;
945 }
946 p1[i] = '\0';
947 //while ((*p1++ = *p2++)!= '\0');
948
949 }
950
951 void sort123(int *p , int n)
952 {
953 //int i , j , t;
954 //for ( i = 0; i < n-1; i++)
955 //{
956 // for ( j = 0; j < n-i-1; j++)
957 // {
958 // if(a[j]<a[j+1])
959 // {
960 // t = a[j];
961 // a[j] = a[j+1];
962 // a[j+1] = t;
963 // }
964 // }
965 //}
966
967 int i ,j ,t;
968 for ( i = 0; i < n-1; i++)
969 {
970 for ( j = 0; j < n-i-1; j++)
971 {
972 if(*(p+j)<*(p+j+1))
973 {
974 t = *(p+j);
975 *(p+j) = *(p+j+1);
976 *(p+j+1) = t;
977 }
978 }
979 }
980 }