C/C++ 棘手程序
这里有10个棘手的程序,可以测试你的编程基础。
1. 在C++中打印“ ”的程序
在C++编程语言中,我们使用引号来表示要打印文本的开始和结束。因此,打印引号“ ”需要一个特殊的转义序列。所以,我们将使用\”来在c++中打印引号。
示例
#include<iostream> using namespace std; int main() { cout<<"\"Tutorials Point \""; return 0; }
输出
"Tutorials Point "
2. 使用循环或goto语句打印从1到10的数字的程序
在编程中,为了多次迭代相同的代码块,有几种方法。它们是:
- 使用循环
- 使用goto语句
- 使用递归函数
由于你不能使用循环或goto语句,唯一有效的方法是使用递归函数。让我们看看如何使用递归调用来打印从1到10的数字。
示例
#include <stdio.h> void printNumber(int count){ printf("%d\n", count ); count+=1; if(count<=10) printNumber(count); } int main(){ printNumber(1); return 0; }
输出
1 2 3 4 5 6 7 8 9 10
3. 在不使用算术或比较运算符的情况下检查两个数字是否相等
为了检查两个数字是否相等,我们可以使用按位异或运算符(^)。如果两个数字相等,则这两个数字的按位异或结果为0。现在,让我们在一个程序中实现这个概念。
示例
#include<iostream> using namespace std; int main(){ int a = 132; int b = 132; if ( (a ^ b) ) cout<<"a is not equal to b"; else cout<<"a is else to b"; return 0; }
输出
a is equal to b
4. 在c/c++中不使用;打印“Hello”
在c/c++编程语言中,有一些方法可以在不使用分号的情况下打印一些内容。我们可以通过使用输出方法printf的返回类型来做到这一点。c++中的printf方法返回打印到输出屏幕的字符数。我们可以使用一个可以在不使用分号的情况下执行的条件语句。
示例
#include <stdio.h> int main(){ if(printf("Hello ")) return 0; }
输出
Hello
5. 在不使用比较运算符的情况下查找两个数字的最大值和最小值的程序。
为了找到两个定义的数字的最大值和最小值,而不使用比较运算符,我们将使用abs方法,并将两个数字的差值传递给它。它将返回数字之间的正差,我们将使用这个绝对差来找到两个给定数字的最大值和最小值。
示例
#include<iostream> using namespace std; int main (){ int x = 15, y = 20; cout<<"The numbers are x = "<<x<<"and y = "<<y<<endl; cout<<"The max of the numbers is "<<((x + y) + abs(x - y)) / 2<<endl; cout<<"The min of the numbers is "<<((x + y) - abs(x - y)) / 2<<endl; return 0; }
输出
The numbers are x = 15and y = 20 The max of the numbers is 20 The min of the numbers is 15
6. 打印程序的源代码和输出
将程序的源代码作为同一程序的输出打印出来是一个有点棘手的问题,需要对编程语言有很好的理解才能做到。
在这个程序中,我们将使用文件处理的概念,打开我们用来编写代码的相同文件,然后打印文件的内容。
示例
#include <stdio.h> int main(void){ FILE *program; char ch; program = fopen(__FILE__, "r"); do{ ch=fgetc(program); printf("%c", ch); } while(ch!=EOF); fclose(program); return 0; }
7. 在不使用+运算符的情况下找到两个数字之和的程序
可以通过在代码中多次使用-运算符来找到两个数字之和,而不使用+运算符。下面的程序展示了如何做到这一点。
示例
#include<iostream> using namespace std; int main(){ int x = 5; int y = 5; int sum = x - (-y); cout<<"The numbers are x = "<<x<<" y = "<<y<<endl; cout<<"Their sum = "<<sum; return 0; }
输出
The numbers are x = 5 y = 5 Their sum = 10
8. 在不使用算术或关系运算符的情况下检查给定数字是否为偶数。
为了检查给定数字是否为偶数,我们可以使用按位运算符。按位&运算符与**0x01**一起将检查数字中第0位上的位。如果第0位上的位为1,则该数字为奇数,否则为偶数。
示例
#include<iostream> using namespace std; int main(){ int a = 154; if(a & 0x01) { cout<<a<<" is an odd number"; } else{ cout<<a<<" is an even number"; } printf("\n"); return 0; }
输出
154 is an even number
9. 在不使用/运算符的情况下将数字除以4的程序。
为了在不使用除法运算符的情况下将数字除以4,我们可以使用右移运算符>>,它会将最后一位移位。
示例
#include<iostream> using namespace std; int main(){ int n = 128; cout<<n<<"divided by 4 = "; n = n >> 2; cout<< n; return 0; }
输出
128 divided by 4 = 32
10. C++程序递归计算数字的各位之和,直到它变成一位数。
通过将数字的所有位相加来计算递归和,然后查看它是否是一位数,如果是则停止,否则重新计算和,直到和变成一位数。
示例
#include <iostream> using namespace std; int main() { int a = 534; int sum; if(a) sum = a % 9 == 0 ? 9 : a % 9 ; else sum = 0; cout<<"The final sum is "<<sum; return 0; }
输出
The final sum is 3