魔方矩阵:
void Magic(int *crr,int n)
{
crr[0*n+n/2] = 1;
int i = 2;
int row = 0;
int col = n/2;
while(i <= n*n)
{
row = (row-1+n)%n;
col = (col+1)%n;
if(crr[row*n+col] == 0)
{
crr[row*n+col] = i;
}
else
{
row = (row+1)%n;
col = (col-1+n)%n;
row = (row+1)%n;
crr[row*n+col] = i;
}
i++;
}
}
void Fun(int (*crr)[ROW])
{
for(int i = 0;i < ROW;i++)
{
for(int j = 0;j < ROW;j++)
{
printf("%d ",crr[i][j]);
}
printf("\n");
}
}
int main()
{
int crr[ROW][ROW] = {0};
Magic((int *)crr,ROW);
Fun(crr);
return 0;
}
求单词个数
//#include<stdio.h>
//#include<assert.h>
//#include<ctype.h>
//int NumWord(char *str)
//{
// assert(str!=NULL);
// int count=0;
// while(*str!='\0')
// {
// //isalpha()
// if(isalpha(*str)&&!isalpha(*str+1))
// {
// count++;
// }
// str++;
// }
//}
//int main()
//{
// printf("%\c",NumWord("ndsn2k osmj mkmk"));
//}
/*输出指定长度的字符串
#include<stdio.h>
#include<String.h>
#include<assert.h>
char *My_strncpy( char *dest,char *src,int n)
{
char *p=dest;
int count=0;
assert(dest!=NULL&&src!=NULL);
assert(n>0&&n<strlen(src));
while(count<n)
{
*dest++=*src++;
count++;
}
return p;
}
int main()
{
char dest[10]="";
printf("%s\n",My_strncpy(dest,"abcdefgh",5));
return 0;
}
//" _123"===>123
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<ctype.h>
int My_atoi(char *str)
{
int p=0;
assert(str!=NULL);
while(*str==' '||!isdigit(*str))
{
str++;
}
while(*str=='-')
{
printf("%s\n",'-');
}
while(isdigit(*str))
{
p=p*10+(*str-'0');
str++;
}
return p;
}
int main()
{
printf("%d\n",My_atoi(" daa-123"));
return 0;
}
//局部变量出了作用之后被释放
//123===>“123”
char *My_itoa(char *str,int num)
{
int i=0;
if(num<0)
{
num=-num;
}
while(num!=0)
{
str[i]=num%10+'0';
i++;
num/=10;
}
str[i]='\0';
i--;
for(int j=0;j<i;j++,i--)
{
char ch=str[j];
str[j]=str[i];
str[i]=ch;
}
return str;
}
int main()
{
char str[10]=" ";
printf("%s\n",My_itoa(str,123));
return 0;
}
/*字符串拼接
char *My_strcat(char *dest,char *src,int len)
{
assert(dest!=NULL&&src!=NULL);
if(strlen(dest)+strlen(src)>len);
char *p=dest;
while(*dest!='\0')
{
dest++;
}
while(*dest++=*src++);
return p;
}
int main()
{
char dest[10]="abc";
char *src="def";
int len=sizeof(dest)/sizeof(dest)[0];
printf("%s\n",My_strcat(dest,src,len));
return 0;
}
/*字符串比大小
int Mystrcmp(const char *str1,const char *str2)
{
assert(str1!=NULL&&str2!=NULL);
int tmp=0;
while((tmp=*str1-*str2)==0&&*str2!='\0')
{
str1++;
str2++;
}
return tmp;
}
int main()
{
char *str1="adefs";
char *str2="aadek";
printf("%d\n",Mystrcmp(str1,str2));
return 0;
}
/* 求行数
void Print()
{
int line = 1;
int ch;
int flg = 1;//1代表在行的开始,0代表不在行的开始
while((ch = getchar())!= EOF)
{
if(flg == 1)
{
if(ch == 'q'||ch == 'Q')
{
return;
}
printf("%d:",line);
line++;
flg = 0;
}
if(ch == '\0')
{
flg = 1;
}
putchar(ch);
}
}
int CheckSum()
{
int ch;
signed char sum = -1;
while((ch == getchar())!='\n')
{
sum+=ch;
printf("%c",ch);
}
sum +='\n';
return sum;
}
//找出和为给定数值的两个元素的下标
void Sumk(int *arr,int key,int *num1,int *num2,int len)
{
int low = 0;
int high = len-1;
while(low < high)
{
if(arr[low]+arr[high] > key)
{
high--;
}
else if(arr[low]+arr[high] < key)
{
low++;
}
else
{
*num1 = low;
*num2 = high;
break;
}
}
}
int main()
{
int arr[]={4,6,8,9,10,11,13,23};
int len=sizeof(arr)/sizeof(arr[0]);
int index1 = 0;
int index2 = 0;
Sumk(arr,20,&index1,&index2,len);
printf("%d,%d\n",index1,index2);
//Print();
//printf("%d\n",CheckSum());
return 0;
}