//判斷t所指字符串中的字母是否由連續遞增字母組成。
1 #include <stdio.h> 2 #include <string.h> 3 void NONO(); 4 int fun( char *t ) 5 { 6 int a = 0; 7 //使用數組解決 8 /*for (int i = 1; t[i]!= '\0'; i++) 9 { 10 if ((t[i]-'0') != (t[i - 1] -'0'+1)) a = 1; 11 }*/ 12 //使用指針解決 13 while (*(t+1) != '\0')//注意這里表達式的書寫 14 { 15 //printf("%d,%d\n", *t, *(t + 1));//通過輸出語句發現問題 16 if ((*t - '0' + 1) != (*(t+1) - '0')) { a = 1; break; } 17 t++; 18 } 19 if (a == 0) return 1; 20 else if (a == 1) return 0; 21 } 22 23 void main() 24 { char s[26]; 25 printf("請輸入一個字母組成的字符串 : "); gets(s); 26 if( fun(s) ) printf("%s 是由連續字母組成的字符串.\n", s ); 27 else printf("%s 不是由連續字母組成的字符串!\n", s ); 28 NONO(); 29 } 30 31 void NONO() 32 {/* 本函數用於打開文件,輸入數據,調用函數,輸出數據,關閉文件。 */ 33 FILE *fp, *wf ; 34 int i; 35 char s[26], *p; 36 37 fp = fopen("in.dat","r") ; 38 wf = fopen("out.dat","w") ; 39 for(i = 0 ; i < 10 ; i++) { 40 fgets(s, 26, fp); 41 p=strchr(s,'\n'); 42 if(p) *p=0; 43 if (fun(s)) fprintf(wf, "%s\n", s+2); 44 else fprintf(wf, "%s\n", strrev(s)); 45 } 46 fclose(fp) ; 47 fclose(wf) ; 48 }
//判斷一個輸入的任何整數n,是否等於某個連續正整數序列之和。
1 #include <stdio.h> 2 void fun( int n ) 3 { int j, b, c, m, flag=0; 4 for (b=1; b<=n/2; b++) { 5 /**********found**********/ 6 m = n; 7 c = b; 8 while (m !=0 && m>=c) { 9 /**********found**********/ 10 m = m - c; c++; 11 } 12 /**********found**********/ 13 if ( m==0) 14 { printf("%d=", n); 15 for (j=b; j<c-1; j++) printf( "%d+", j ); 16 printf("%d\n", j); 17 flag=1; 18 } 19 } 20 if(flag==0) 21 printf("不能分解\n"); 22 } 23 void main() 24 { int n; 25 printf("請輸入一個整數 : "); scanf("%d", &n); 26 fun(n); 27 }
//將一副撲克牌編號為1到54,以某種方式洗牌,這種方式是將這副牌分成兩半,然后將他們交叉,並始終保持編號1的牌在最上方。
1 #include <stdio.h> 2 void fun( int a[55], int n ) 3 { int i, k ; 4 /**********found**********/ 5 int b[55]; 6 for (i=0; i<n; i++) 7 { for (k=1; k<= 27; k++) 8 { b[ 2*k-1 ] = a[k]; 9 /**********found**********/ 10 b[ 2* k ] = a[k+27]; 11 } 12 for (k=1; k<=54; k++) 13 /**********found**********/ 14 a[k]=b[k]; 15 } 16 } 17 void main( ) 18 { int m, a[55],i; 19 for (i=1; i<55; i++) a[i]= i; 20 printf("請輸入洗牌次數 : "); scanf("%d", &m); 21 fun(a, m); 22 for (i=1; i<55; i++) printf("%d,",a[i]); 23 printf("\n"); 24 }