调用函数输出字符串的逆序

img


各位帮我看一下,哪一步错了,运行不出来啊,就是调用函数输出字符串的逆序

函数返回类型改为字符指针,然后函数里的n初始化为0就可以了。

修改如下:



#include <stdio.h>
char * nixu(char x[]);

int main(void){
    

    char a[80];
    printf("请输入一个字符串:\n");
    gets(a);
    printf("其逆序为:\n");

    puts(nixu(a));
} 

// 因为是要返回字符串地址,所以函数返回值要改为字符指针 
char * nixu(char x[]){
    
    //要计算字符串长度,所以 n要初始化为0 
    int i,n=0,t;
    for(i=0;i<80;i++){
        if(x[i]!='\0'){
        //    printf("x[%d]=%c,%d\n",i,x[i],x[i]);
            n++;
        }else{
            break;
        }
    }
//    printf("x=%s, n=%d\n",x,n);
    
    for(i=0;i<n/2;i++){
        t=x[i];
        x[i]=x[n-1-i];
        x[n-1-i]=t;
    } 

//    printf("x=%s,x=%p\n",x,x);
    return x;
}

img

题主你好,这是我以前写的,你看看有没有参考价值:

#include <stdio.h>
#include <string.h>

void reverseString(char* str) {
    int length = strlen(str);
    int start = 0;
    int end = length - 1;

    while (start < end) {
        char temp = str[start];
        str[start] = str[end];
        str[end] = temp;

        start++;
        end--;
    }
}

int main() {
    char str[] = "Hello, World!";
    printf("原字符串: %s\n", str);

    reverseString(str);
    printf("倒序字符串: %s\n", str);

    return 0;
}


楼上两个都没问题,函数里要指针变量

你的函数nixu的返回值类型是个char,改成char*

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7717556
  • 这篇博客也不错, 你可以看下循环语句的应用(求整数的逆序,位数读取,顺序输出)
  • 除此之外, 这篇博客: 根据给出的关系矩阵,判断该关系所具有的特性中的 对称性与反对称性的判断 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 关系R是对称的,当且仅当其关系矩阵关于主对角线对称;关系R是反对称的,当且仅当其关系矩阵中关于主对角线对称的元素不同时为1
    题目描述
    给定有限集合上二元关系的关系矩阵,判断该关系是否具有对称性或者反对称性?
    源代码

    #include<stdio.h>
    #define N 100
    int main()
    {
    	int a[N][N],n,i,j,flag=0,sum=0,t=0;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			scanf("%d",&a[i][j]);
    		}
    	}
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			if(a[i][j]!=a[j][i]) flag=1;//不对称的时候修改标记量的初值
    			if(i!=j) sum+=a[i][j];
    		}
    	}
    	if(sum==0) printf("该关系既是对称的又是反对称的!\n");
    	else if(sum>0&&flag==0) printf("该关系是对称的!\n");
    	else{
    		for(i=0;i<n;i++)
    		{
    			for(j=0;j<n;j++)
    			{
    				if(i!=j)
    				{
    					t+=a[i][j]*a[j][i];
    				}
    			}
    		}
    		if(t==0) printf("该关系是反对称的!\n");
    		else if(t>0) printf("该关系既不是对称的也不是反对称的!\n");
    	}
    	return 0;
    }
    

    与自反性和反自反性的情况不同,对称性与反对称性可以在能够进行输入的关系矩阵里面同时存在,所以需要加入这种情况。

  • 您还可以看一下 李月喜老师的企业微信开发自建内部应用开发篇课程中的 开发文档如何阅读,如何寻求帮助,如何找到同行小节, 巩固相关知识点