c++-C++编程小白求教,逆序输出字符串

问题描述

C++编程小白求教,逆序输出字符串

#include
#include
#include
#include
//逆序输出字符串
using namespace std;

void print(const char a[],int size){
int i;
for(i=size;i>0;i--)
cout<<a[i-1];
cout<<endl;
}
void main(){

int i=0;
char a[50];
while(getchar()!='n'){
    a[i] = getchar();
    i++;
}
print(a,sizeof(a));

while(1);

}

请问大神们,上面的代码错在哪里啊?

解决方案

 #include <iostream>
#include <string.h>
//逆序输出字符串
using namespace std;
void print(const char a[],int size)
{
    int i;
    for(i=size-1;i>=0;i--)
    cout<<a[i];
    cout<<endl;
}
int main()
{
    int i=0;
    char a[50];
    cin>>a;
    print(a,strlen(a));
    return 0;
}

建议你这样,你用sizeof一般情况下是错的,按照你的定义sizeof(a)的值不管你输入多少数据都是50,strlen是检测字符串长度的,没有必要这么复杂得到字符串,一个cin就可以搞定。
再给你点建议,代码规范性,该空格的要空出来,不管自己还是别人看着都舒服。main函数类型尽量是int,并且给定返回值,现在新的编译器都不支持void类型的main函数,是会报错的。

解决方案二:

#include <stdio.h>

 void foo()
{
    char c = getchar();
    if (c == 'n')
        return;
    foo();
    printf("%c", c);
}

int main()
{
    foo();
    printf("n");
    return 0;
}

解决方案三:

for(i=size-1;i>=0;i--)

解决方案四:

while循环判定中的getchar()会将第一个字符弹出,所以你无法记录到第一个字符串,而且sizeof(a),你不能用这个得出有效字符串长度,你只会得出这个数组长度
修改后:
do{
a[i] = getchar();
i++;
}while(a[i-1]!='n');

print(a,i-1);

解决方案五:

#include
#include
//逆序输出字符串
using namespace std;
void print(const char a[],int size)
{
int i;
for(i=size-1;i>=0;i--)
cout<cout
}
void main()
{
int i=0;
char a[50];
cin>>a;
print(a,strlen(a));
}
建议你这样,你用sizeof一般情况下是错的,按照你的定义sizeof(a)的值不管你输入多少数据都是50,strlen是检测字符串长度的,没有必要这么复杂得到字符串,一个cin就可以搞定。
再给你点建议,代码规范性,该空格的要空出来,不管自己还是别人看着都舒服。main函数类型尽量是int,并且给定返回值,现在新的编译器都不支持void类型的main函数,是会报错的。!
图片说明

解决方案六:

数组的大小可以使i-1,不能够用sizeof。sizeof是整个数据的大小,不是数组实际存储内容的大小

解决方案七:

错在print(a,sizeof(a));
改成print(a,i);就好

解决方案八:

printf( strrev(str) ); //简单明了!!

时间: 2024-11-12 13:51:14

c++-C++编程小白求教,逆序输出字符串的相关文章

指针-c++程序求教,strtok记号化句子,逆序输出,求大神

问题描述 c++程序求教,strtok记号化句子,逆序输出,求大神 #include using namespace std; #include using namespace std; char *t[50]; void print(char*tptr,char*tptrr,int i) { if(tptrr!=NULL) {t[i]=tptr;tptr=strtok(NULL," ");tptrr=strtok(NULL," ");print(tptr,tptr

printf-cfree运行逆序输出无法print

问题描述 cfree运行逆序输出无法print #include #include /* #include #include */ #define maxn 105 int a[maxn]; int main() { int x, n = 0; while(scanf("%d", &x) == 1) a[n++] = x; int i = n-1; for(;i >= 1; i--) { printf("%d", a[i]); } system(&qu

c#-C#程序问题,,C#输入123456然后逆序输出,程序怎么写?

问题描述 C#程序问题,,C#输入123456然后逆序输出,程序怎么写? C#输入123456然后逆序输出,程序怎么写啊,求大神帮帮忙,自己刚学,实在写不来 解决方案 string s=""123456"";for(int i=s.Length-1;i>=0;i--)Console.Write(s[i]); 解决方案二: foreach (var p in numbers.Reverse()) { Console.WriteLine(p); } 解决方案三:

C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析

以下是对C++中输入一个字符串,把其中的字符按照逆序输出的两种方法进行了详细的分析介绍,需要的朋友可以过来参考下   用字符数组方法:基本思路是,先判断字符的结束标志'',然后从该位置向前输出.实现代码: 复制代码 代码如下: #include<iostream> using namespace std; int main(){  char a[50];  cout<<"please input a string:";  cin>>a;  int i

课后思考题2:C语言用递归算法,将一个字符串逆序输出,提示:字符串以&amp;amp;#39;\0&amp;amp;#39;结尾。

问题描述 课后思考题2:C语言用递归算法,将一个字符串逆序输出,提示:字符串以''结尾. 课后思考题2:C语言用递归算法,将一个字符串逆序输出,提示:字符串以''结尾. 解决方案 void foo(char * s) { if (!s) return; foo(s + 1); printf("%c", *s); } 解决方案二: void function(char *p) { if(*p=='/0') return ; function(p+1); printf("%c&q

字符串逆序输出

字符串逆序输出 时间限制:3000 ms  |  内存限制:65535 KB 难度:0 描述 给定一行字符,逆序输出此行(空格.数字不输出) 输入 第一行是一个整数N(N<10)表示测试数据的组数) 每组测试数据占一行,每行数据中间有且只有一个空格(这样你可以把此行当成两个字符串读取). 每行字符长度不超过40 并且保证输入的字符只有空格(1个),数字,小写字母三种 输出 对应每行测试数据,逆序输出(空格和数字不输出) 样例输入 3 abc 123de abc 123 abc d 样例输出 ed

link中是不是单链表不能逆序输出?只有双向链表才可以,这么说正确么?

问题描述 link中是不是单链表不能逆序输出?只有双向链表才可以,这么说正确么? link中是不是单链表不能逆序输出?只有双向链表才可以,这么说正确么? 解决方案 也可以啊,再定义一个堆栈,遍历链表,将值放进去,然后再输出堆栈.

strlen-C语言字符串单词逆序输出

问题描述 C语言字符串单词逆序输出 想要实现字符串里的单词逆序输出,如 给定"how are you",应输出"you are how" 下面的代码想要利用递归算法实现,但发现运行之后没实现,求解!万分感谢! #include<stdio.h> #include<string.h> void fun(char *p,int i,int len); int main() { char a[50]="how are you";

[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出

题目 描述: 题目描述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]只需要完成该函数功能算法,中