在C语言中,相信很多人尝试过进行“%”的输出,常规的printf("%d\n"); 肯定是行不通的,这里需要注意的是在c语言中对“%”和“\”的输出是可以的,但是输出格式不能直接进行输出,编译器在编译的时候会把"\“理解成单个字符”",同理,也会把"%%"理解成单个字符“%”。
具体演示如下:
代码:
#include<iostream>
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf("%%d\n");
printf("\\n\n");
cout<<"%d"<<endl;
cout<<"\\n"<<endl;
}
-
自己可以试一下,同样这里你也可以看到使用c++的cout进行字符串输出的时候,单个%是可以识别的,而“\”则不能被直接识别,识别规则与c相同。
如果感兴趣的话,也可以自己深入学习一下底层的编译原理。
不信各位看,牛客2022年除夕AK场c题
题解代码【当时改的简直是气人呜呜呜】
所以平时学习一定要脚踏实地,再小的知识点都应该及时记下来
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=2*n+1;i++)
{
for(j=1;j<=2*n+1;j++)
{
if(i<n+1)
{
if(j==i)
cout<<"\\"; //一定要两个杠杠啊
else if(j==2*n+2-i)
cout<<'/';
else if(j==n+1)
cout<<"|";
else
cout<<' ';
}
else if(i==n+1)
{
if(j==i)
cout<<'O';
else
cout<<'-';
}
else
{
if(j==2*n+2-i)
cout<<"/";
else if(j==i)
cout<<"\\";
else if(j==n+1)
cout<<"|";
else
cout<<' ';
}
}
printf("\n");
}
return 0;
}