109: date:2021.2.5
要点: 奇数位置: b[ 2*k-1 ] = a[k]; 偶数位置: b[ 2 * k ] = a[k+27];
详细代码如下:
#include <stdio.h>
void fun( int a[55], int n )
{
int i, k ;
/**********found**********/
int b[55];
for (i=0; i<n; i++)
{
for (k=1; k<= 27; k++)
{
b[ 2*k-1 ] = a[k]; //前一半元素放入数组b的奇数位置
/**********found**********/
b[ 2 * k ] = a[k+27]; //后一半元素放入数组b的偶数位置
}
for (k=1; k<=54; k++)
/**********found**********/
a[k]= b[k];
}
}
void main( )
{
int m, a[55],i;
for (i=1; i<55; i++) a[i]= i;
printf("请输入洗牌次数 : "); scanf("%d", &m);
fun(a, m);
for (i=1; i<55; i++) printf("%d,",a[i]);
printf("\n");
}
要点: confused
详细代码如下:
#include <stdio.h>
#include <string.h>
void NONO();
int fun( char *t )
{
/*
analyse:
1遍历所有
2判断是否连续;
3返回
*/
int flag = 1, i;
char before_ch = t[0];
char current_ch;
int len = strlen(t);
if(len < 2)
{
return 0;
}
for(i = 1; t[i] != '\0'; i++)
{
current_ch = t[i];
if(before_ch != current_ch-1)
{
flag = 0;
break;
}
before_ch = current_ch;
}
return flag;
//________________________________________________________________________________________
/* error:
int i,flag=1;
for(i = 1; t[i] != '\0'; i++)
{
if( strlen(t) < 2 || t[i]+1 != t[i+1]){
flag = 0;
break;
}
else
{
flag += 1;
}
}
return flag;
*/
}
void main()
{
char s[26];
printf("请输入一个字母组成的字符串 : "); gets(s);
if( fun(s) ) printf("%s 是由连续字母组成的字符串.\n", s );
else printf("%s 不是由连续字母组成的字符串!\n", s );
NONO();
}