在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; }