C语言:判断t所指字符串中的字母是否由连续递增字母组成。-判断一个输入的任何整数n,是否等于某个连续正整数序列之和。-将一副扑克牌编号为1到54,以某种方式洗牌,这种方式是将这副牌分成两半,然后将他们交叉,并始终保持编号1的牌在最上方。

//判断t所指字符串中的字母是否由连续递增字母组成。

 #include   <stdio.h>
#include <string.h>
void NONO();
int fun( char *t )
{
int a = ;
//使用数组解决
/*for (int i = 1; t[i]!= '\0'; i++)
{
if ((t[i]-'0') != (t[i - 1] -'0'+1)) a = 1;
}*/
//使用指针解决
while (*(t+) != '\0')//注意这里表达式的书写
{
//printf("%d,%d\n", *t, *(t + 1));//通过输出语句发现问题
if ((*t - '' + ) != (*(t+) - '')) { a = ; break; }
t++;
}
if (a == ) return ;
else if (a == ) return ;
} void main()
{ char s[];
printf("请输入一个字母组成的字符串 : "); gets(s);
if( fun(s) ) printf("%s 是由连续字母组成的字符串.\n", s );
else printf("%s 不是由连续字母组成的字符串!\n", s );
NONO();
} void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i;
char s[], *p; fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = ; i < ; i++) {
fgets(s, , fp);
p=strchr(s,'\n');
if(p) *p=;
if (fun(s)) fprintf(wf, "%s\n", s+);
else fprintf(wf, "%s\n", strrev(s));
}
fclose(fp) ;
fclose(wf) ;
}

//判断一个输入的任何整数n,是否等于某个连续正整数序列之和。

 #include   <stdio.h>
void fun( int n )
{ int j, b, c, m, flag=;
for (b=; b<=n/; b++) {
/**********found**********/
m = n;
c = b;
while (m != && m>=c) {
/**********found**********/
m = m - c; c++;
}
/**********found**********/
if ( m==)
{ printf("%d=", n);
for (j=b; j<c-; j++) printf( "%d+", j );
printf("%d\n", j);
flag=;
}
}
if(flag==)
printf("不能分解\n");
}
void main()
{ int n;
printf("请输入一个整数 : "); scanf("%d", &n);
fun(n);
}

//将一副扑克牌编号为1到54,以某种方式洗牌,这种方式是将这副牌分成两半,然后将他们交叉,并始终保持编号1的牌在最上方。

 #include  <stdio.h>
void fun( int a[], int n )
{ int i, k ;
/**********found**********/
int b[];
for (i=; i<n; i++)
{ for (k=; k<= ; k++)
{ b[ *k- ] = a[k];
/**********found**********/
b[ * k ] = a[k+];
}
for (k=; k<=; k++)
/**********found**********/
a[k]=b[k];
}
}
void main( )
{ int m, a[],i;
for (i=; i<; i++) a[i]= i;
printf("请输入洗牌次数 : "); scanf("%d", &m);
fun(a, m);
for (i=; i<; i++) printf("%d,",a[i]);
printf("\n");
}
上一篇:sqlite 报错:database is locked


下一篇:kafka中zookeeper的操作