C語言:判斷t所指字符串中的字母是否由連續遞增字母組成。-判斷一個輸入的任何整數n,是否等於某個連續正整數序列之和。-將一副撲克牌編號為1到54,以某種方式洗牌,這種方式是將這副牌分成兩半,然后將他們交叉,並始終保持編號1的牌在最上方。


//判斷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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM