练习写一个字符替换程序,由开始的######,替换为一句诗句
#include<stdio.h>
#include<math.h>
#include<windows.h>
int main()
{
char arr[] = "床前明月光,疑是地上霜";
char brr[] = "######################";//中文类型字符虽然也是字符,但是一个中文需要占用两个字符位
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d", sz);
int a = 0, b = sz -2, c = 0;//这里的减二一个是数组自带的1,另外是char类型数组自带的\0占位
printf("%s\n", brr);
for (; a <= b; a++ && b--)
{
c = a % 2;
if (c == 0)
{
brr[a] = arr[a];
brr[b] = arr[b];
continue;
}
else
{
brr[a] = arr[a];
brr[b] = arr[b];
printf("%s\n", brr);
Sleep(1000);//使用库函数windows.h,使得每执行一次停留1000毫秒
}
}
}
这种写法稍微有些错误
可以看出从后往前导数据的时候后方缺失了一位数据导致乱码
而如果将
b=sz-2//改为
b=sz-1
这个问题确实得到解决
但这与我想要输出的结果并不相同,因为两边字符显示并不对称,这是数据结构并不对称的原因,可以手动敲代码给不对称的部分补齐
int a = 0, b = sz -1, c = 0;//这里的减二一个是数组自带的1,另外是char类型数组自带的\0占位
printf("%s\n", brr);
brr[b] = arr[b];
b = b--;
brr[b] = arr[b];
b = b--;
for (; a <=b; a++ && b--)
再循环前手动弥补即可
完成稿
#include<stdio.h>
#include<math.h>
#include<windows.h>
int main()
{
char arr[] = "床前明月光,疑是地上霜";
char brr[] = "######################";//中文类型字符虽然也是字符,但是一个中文需要占用两个字符位
int sz = sizeof(arr) / sizeof(arr[0]);
int a = 0, b = sz -1, c = 0;//这里的减二一个是数组自带的1,另外是char类型数组自带的\0占位
printf("%s\n", brr);
brr[b] = arr[b];
b = b--;
brr[b] = arr[b];
b = b--;
for (; a <=b; a++ && b--)
{
c = a % 2;
if (c == 0)
{
brr[a] = arr[a];
brr[b] = arr[b];
if (a == b-1)
{
printf("%s", brr);
break;
}
continue;
}
else
{
brr[a] = arr[a];
brr[b] = arr[b];
printf("%s\n", brr);
Sleep(1000);//使用库函数windows.h,使得每执行一次停留1000毫秒
}
}
}
顺手再加一个系统命令
system("cls");
指令可以清空调试器桌面
总览
#include<stdio.h>
#include<math.h>
#include<windows.h>
int main()
{
char arr[] = "床前明月光,疑是地上霜";
char brr[] = "######################";//中文类型字符虽然也是字符,但是一个中文需要占用两个字符位
int sz = sizeof(arr) / sizeof(arr[0]);
int a = 0, b = sz -1, c = 0;//这里的减二一个是数组自带的1,另外是char类型数组自带的\0占位
printf("%s\n", brr);
brr[b] = arr[b];
b = b--;
brr[b] = arr[b];
b = b--;
for (; a <=b; a++ && b--)
{
c = a % 2;
if (c == 0)
{
brr[a] = arr[a];
brr[b] = arr[b];
if (a == b-1)
{
system("cls");
printf("%s", brr);
break;
}
continue;
}
else
{
brr[a] = arr[a];
brr[b] = arr[b];
system("cls");
printf("%s\n", brr);
Sleep(1000);//使用库函数windows.h,使得每执行一次停留1000毫秒
}
}
}