函数返回类型改为字符指针,然后函数里的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;
}
题主你好,这是我以前写的,你看看有没有参考价值:
#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*
关系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;
}
与自反性和反自反性的情况不同,对称性与反对称性可以在能够进行输入的关系矩阵里面同时存在,所以需要加入这种情况。