#include<iostream> using namespace std; int main() { char a[10] = "hello"; int i = 0; while (*a) { cout << *(a+i)<<" "; i++; } }
时间: 2024-05-13 17:02:38 浏览: 53
这段代码的输出结果是:h e l l o 。
该程序使用了指针和 while 循环来遍历字符数组 a 中的每个元素,通过指针的方式输出每个元素的值,直到遇到字符串结束符。在该程序中,a+i 实际上就是 a 数组中第 i 个元素的地址,*(a+i)表示该地址处存储的值,即第 i 个元素的值。
相关问题
#include<iostream> #include<cstring> using namespace std; int strlen(const char *str) { int i = 0; while (str[i] != '\0') { i++; } return i; } int main() { char s[] = "Hello world"; cout << strlen(s) << endl; system("pause"); return 0; }这段代码的问题
这段代码没有明显的语法错误,但是有一些可以优化的地方。
首先,自定义的 `strlen` 函数与标准库中的 `strlen` 函数重名,这可能会引起一些混淆和问题,因此最好将函数名改为不同的名称。
其次,程序中使用了 `system("pause")` 函数来暂停程序的执行,这种做法并不好,因为它会调用操作系统的命令行窗口来实现暂停,而且在某些平台上可能会出现问题。更好的做法是使用 `cin.get()` 函数来等待用户输入任意字符,以达到暂停程序的目的。
最后,由于程序中只是输出了字符串的长度,因此可以将 `char s[] = "Hello world";` 改为 `const char *s = "Hello world";`,这样可以避免不必要的内存分配和拷贝操作。
改进后的代码如下所示:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int my_strlen(const char* str)
{
int i = 0;
while (str[i] != '\0')
{
i++;
}
return i;
}
int main()
{
const char* s = "Hello world";
cout << my_strlen(s) << endl;
cin.get();
return 0;
}
```
这样修改后,代码更加简洁和可读,也更加安全和稳定。
设计一个void类型的函数reverse_string,其功能是将一个给定的字符串逆序。例如,给定字符串为“hello”,逆序后为“olleh”。 ###函数接口定义如下: /* 函数原型参见main函数 */ ###裁判测试程序样例: #include <iostream> #include <string> using namespace std; /* 你的代码将嵌在这里 */ int main(int argc, char const *argv[]) { string str; getline(cin, str); //输入字符串 reverse_string(str); //逆序字符串str cout << str << endl; //输出逆序后的字符串 return 0; } ###输入样例: hello ###输出样例: olleh
以下是实现题目要求的函数reverse_string的代码:
```c++
#include <iostream>
#include <string>
using namespace std;
void reverse_string(string& str) {
int left = 0, right = str.size()-1;
while(left < right) {
swap(str[left], str[right]);
left++;
right--;
}
}
int main(int argc, char const *argv[]) {
string str;
getline(cin, str); //输入字符串
reverse_string(str); //逆序字符串str
cout << str << endl; //输出逆序后的字符串
return 0;
}
```
函数接受一个string类型的引用参数,对字符串进行原地修改,将其逆序。在实现中,使用双指针从字符串两端开始向中间遍历,每次将两端指针指向的字符交换即可。