不使用这些字符的功能性 C++ 程序:';'。 '{', '}', '\'
A functional C++ program that doesn't use these characters: ';'. '{', '}', '\'
这是去年地区比赛中给出的一道题。基本上,您需要用 C++ 编写一个简单的程序,该程序可以打印格式(数字、运算符、数字)的多个字符串的结果,直到达到 EOF。运算符是通常的 +、-、*、\.
例如
3+5
2+2
4*3
9/3
结果
8 4 12 3
问题显然是我不能使用这些字符; { } \
我试过类似的方法(它只是添加了 2 个整数,但这不是重点)
#include<bits/stdc++.h>
#define dummy ;
#define slashDummy '\'
#define curlDummy {
#define curlDummy2 }
using namespace std dummy
int main() curlDummy
ios_base::sync_with_stdio(false) dummy
cin.tie(0) dummy
int x = 4 dummy
int y = 5 dummy
int c = x + y dummy
cout << c dummy
return 0 dummy
curlDummy2
但是通过使用#define 中的字符,我无法完成任务。但是,如果我尝试用 char(123) 替换 {,编译器将不会 运行 它(我最后弄清楚了)。这意味着这种做法是完全错误的。
我也尝试过 #define everything,但我很快意识到我不是一个好的程序员而且我不知道我在做什么。
#include <iostream>
#define bAcc char(123)
#define rAcc char(125)
#define div char(92)
#define smcolon char(59)
#define unite2(a, b) a##b
#define unite3(a, b, c) a##b##c
#define Acc unite2(bAcc, rAcc)
#define program "while(cin.get()) if(int a = 'a') if(char b = 'b') if(int c = 'c') while(std::cin >> a && a != EOF && std::cin >> b && std::cin >> c) if(b == '+' && std::cout << a + c << std::endl) Acc else if(b == '-' && std::cout << a - c << std::endl) Acc else if(b == '*' && std::cout << a * c << std::endl) Acc else if(b == char(47) && std::cout << a char(47) c << std::endl) Acc"
#define run unite3(bAcc, program, rAcc)
int main() run
main 函数不允许我继续执行此任务,我试图绕过它但它总是需要 { }。
我该如何解决这个问题?谢谢你的时间。
只需使用二合字母 <% 和 %> 而不是 { 和 }。
三字母表和 if 语句可以实现这一点。
#include <bits/stdc++.h>
int main(void)
??<
if (std::ios_base::sync_with_stdio(false))
if (std::cin.tie(0)) ??< ??>
if (int x = 4) ??<
if (int y = 5) ??<
if (int c = x + y) ??<
if (std::cout << c << std::endl) ??< ??>
??>
??>
??>
??>
使用 -trigraphs 标志编译。
这是去年地区比赛中给出的一道题。基本上,您需要用 C++ 编写一个简单的程序,该程序可以打印格式(数字、运算符、数字)的多个字符串的结果,直到达到 EOF。运算符是通常的 +、-、*、\.
例如
3+5
2+2
4*3
9/3
结果
8 4 12 3
问题显然是我不能使用这些字符; { } \
我试过类似的方法(它只是添加了 2 个整数,但这不是重点)
#include<bits/stdc++.h>
#define dummy ;
#define slashDummy '\'
#define curlDummy {
#define curlDummy2 }
using namespace std dummy
int main() curlDummy
ios_base::sync_with_stdio(false) dummy
cin.tie(0) dummy
int x = 4 dummy
int y = 5 dummy
int c = x + y dummy
cout << c dummy
return 0 dummy
curlDummy2
但是通过使用#define 中的字符,我无法完成任务。但是,如果我尝试用 char(123) 替换 {,编译器将不会 运行 它(我最后弄清楚了)。这意味着这种做法是完全错误的。
我也尝试过 #define everything,但我很快意识到我不是一个好的程序员而且我不知道我在做什么。
#include <iostream>
#define bAcc char(123)
#define rAcc char(125)
#define div char(92)
#define smcolon char(59)
#define unite2(a, b) a##b
#define unite3(a, b, c) a##b##c
#define Acc unite2(bAcc, rAcc)
#define program "while(cin.get()) if(int a = 'a') if(char b = 'b') if(int c = 'c') while(std::cin >> a && a != EOF && std::cin >> b && std::cin >> c) if(b == '+' && std::cout << a + c << std::endl) Acc else if(b == '-' && std::cout << a - c << std::endl) Acc else if(b == '*' && std::cout << a * c << std::endl) Acc else if(b == char(47) && std::cout << a char(47) c << std::endl) Acc"
#define run unite3(bAcc, program, rAcc)
int main() run
main 函数不允许我继续执行此任务,我试图绕过它但它总是需要 { }。
我该如何解决这个问题?谢谢你的时间。
只需使用二合字母 <% 和 %> 而不是 { 和 }。
三字母表和 if 语句可以实现这一点。
#include <bits/stdc++.h>
int main(void)
??<
if (std::ios_base::sync_with_stdio(false))
if (std::cin.tie(0)) ??< ??>
if (int x = 4) ??<
if (int y = 5) ??<
if (int c = x + y) ??<
if (std::cout << c << std::endl) ??< ??>
??>
??>
??>
??>
使用 -trigraphs 标志编译。