c++编程问题 给定一个数组a[10]={1,2,3,4,5,6,7,8,9,10};,使用指针将数组存放的内容逆序。(用指针做)

包括
void change(int n, int len) { int a, p = &a; for (int i = 0; i < len xss=clean xss=clean>1
i); (n + len
1
i) = p; }
主要无效(){ int a[1 0] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0}; 改变(a,1 0); for (int i = 0; i

C++ 键盘输入10个数字 然后逆序输出 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1

昨晚我帮表弟改了代码。
他编写了一个小程序,输入十个数字并以相反的顺序输出它们。
当他发送给我时,我看到了这一行:
cpp for(inti=0;i<1>> arr[i];
然后下面还有一句:
cpp for(i=9 ;i>=0;i--){ cout << arr> 我随意地点击了注释,旁边的小标签闪烁了,我想,“嘿,当我不写 int 时,编译器会提示什么吗?”表弟说他试过了,没有报错。
我说:好吧,也许编译器是瞎子。
第二天他告诉我编译器不是盲目的,而是犯了一个错误。
哈哈。

等一下,还有一件事。
我昨天在看一个简短的视频,看到有人讨论这个问题,并说编译器会自动推断类型,因此可以在不添加 int 的情况下传递它。
但有时不添加 int 会导致歧义,特别是对于函数参数。
第二个循环中的 i 实际上是与第一个循环中的 i 的两个变量,但它们具有相同的名称。
如果函数中的参数名与局部变量名相同,不加int就会出现问题。

我突然意识到我在使用C++之前就犯过这个错误。
我将几个小循环嵌入到一个大循环中,有时忘记将 int 添加到内部循环的变量中。
结果是编译器提示重复定义。
当时还是用老的编译器,提示很详细,每次都得把错误提示一一改正。

但有时编译器可以自动为你修复这样的小错误,但有时它只是表现得很愚蠢。
就像我表弟一样,他认为编译器是瞎子,但事实证明他并没有看清楚。
所以,写代码的时候还是要小心。
不要总是指望编译器来帮助你。

您是否遇到过编译器因小符号(例如缺少 int)而引发奇怪错误的情况?

C++,输入一个五位以内的数,然后顺序、逆序输出各个位的数,用C++来做

从表面上看,输出这些数字的递归函数非常酷,但有一点你需要小心。
我们先来说说最重要的事情。
很容易递归地实现顺序和逆序输出。
去年我们在运行项目时使用了它,但每次调用都会推送堆栈。
当数量非常大时,例如超过 1 0,000 时,堆栈溢出的风险会增加。

还有一点,比如输入1 2 3 4 ,output1 照常打印,但是output2 倒序出来时,它先打印一个数字4 ,然后调用自己打印2 3 4 ,最后连接4 ,这个顺序很关键。
还有一个非常重要的细节。
cout << endl>如果它放在a%1 0之前,它将在每层递归的末尾断行。
谁知道这个?
一开始我以为output1 和output2 是完全独立的,后来发现逆序输出必须先打印当前剩余的位,然后递归调用,不然顺序就会乱。
等等,还有一件事,如果输入0,这两个函数就会直接崩溃,因为初始条件不受保护。

建议使用 if(a == 0) 单独处理这些边界,否则所有小数位都会丢失。
说实话,这是一个骗局,但很多人并没有注意到这一点。
你怎么认为?

C++ 如何打乱一个数组顺序,并可以复原?

嗯,昨晚我在酒吧里看着对面桌子上的两个程序员讨论代码,突然我想到了你的代码。
他们谈论的无序算法与您这里的有点相似。
您的代码使用该键来打乱和重置字符串,对吧?
您编写的代码使用键“8 6 3 5 ”来打乱字符串“abcdefg1 2 3 4 5 6 7 8 9 ”。
查看前两位数字 8 和 6 ,然后查看最后两位数字 3 和 5 代码的逻辑是,对于每个键编号,交换字符串中相应位置的字符。
例如,8 表示交换奇数位和接下来的第八个字符。

这里有一个小细节。
您使用 j 检查密钥的前两位和最后两位数字,然后使用 i 遍历字符串。
对于前两位,交换奇数位和最后两位,即偶数位。
复位时,顺序相反,从后向前。

例如,在第一个循环中 j=0,key[0]=8 ,交换 str[0] 和 str[8 ]、str[1 ] 和 str[9 ] 等等。
所以j=1 ,key[1 ]=6 ,交换str[0]和str[6 ],str[2 ]和str[8 ]等等。

恢复时类似从后向前根据键号交换字符。

不过,我有一个小问题。
您重置此代码时是否有问题?例如,如果先重置后两位数字3 和5 ,然后重置前两位数字8 和6 ,之前的位置会不会又乱了?让我看看...
等等,还有一件事,您使用 system("pause") 来暂停。
这适用于 Windows,但如果是 Linux 或其他系统,您可能需要切换到 getchar() 或其他方法。
请注意这一点。

突然我想,你的代码逻辑是不是有点像某种加密算法?虽然简单,但其实也能达到一定的混乱效果。
不过,在安全性方面,你可能需要加强一下...
最后,这段代码可以在特定环境下运行,但要注意密钥长度与字符串长度的比例,以及密钥数字的范围。
这些细节你考虑过吗?