菜鸟学C之第三题
只要有梦想,再迟都不怕。只要够流氓,再难都不怕/*******************************************//*把25个字母A、B 、C、··· 、X、Y按如下要求打印出来:从最中间的字母M开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。要求:初始化时按字母表顺序赋值。/*******************************************/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void digui(char * str,int n) {
if (n == 0) {
}
else {
putchar(*(str+25-n));
putchar(*(str+n-1));
digui(str, n - 1);
}
}
voidmain23() {//方法一
char str = { 0 };
char start = 'A';
for (char *p = str; p < str + 25; p++) {
printf("%c",*p = start++); //初始化
}
int num = 0;
char *p = str + 12; //M的地址
putchar(*p); //打印M
while (++num<= 12) { //打印两边
putchar(*(p + num));
putchar(*(p - num));
}
getchar();
}
voidmain() { //方法二,递归
char str = { 0 };
char start = 'A';
for (char *p = str; p < str + 25; p++) {
printf("%c", *p = start++);
}
int num = 0;
char *p = str + 12;
putchar(*p);
digui(str, 12);
getchar();
}
void InitArray(char *pArr, int iArrSize);
void ShowReqArr(char *pArr, int iArrSize);
int main()//方法三不失一般性的方法,
{
char strArr;
InitArray(strArr, ARRAY_SIZE);
ShowReqArr(strArr, ARRAY_SIZE);
return 0;
}
void InitArray(char *pArr, int iArrSize)
{
char cBegin = 'A';
int i;
for (i = 0; i<iArrSize; i++)
{
pArr = cBegin + i;
}
}
void ShowReqArr(char *pArr, int iArrSize)//不失一般性的方法,
{
int i;
int iMiddle = iArrSize / 2;
int iBeginCursor = iMiddle - 1;
int iEndCursor = iMiddle + 1;
printf("%c ", pArr);
while (-1<iBeginCursor && iEndCursor<iArrSize) //判断是否到首位或末尾
{
printf("%c ", pArr);
printf("%c ", pArr);
iBeginCursor--;
iEndCursor++;
}
while (-1 < iBeginCursor) //判断最后是否到首位
{
printf("%c ", pArr);
}
while (iEndCursor < iArrSize) //判断最后是否到末尾
{
printf("%c ", pArr);
}
} 赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞
页:
[1]