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 }