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 }

 

posted @ 2019-03-22 20:01  小大大小  阅读(1374)  评论(0编辑  收藏  举报