马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这个是错误的#include <stdio.h>
#include <string.h>
int main()
{
char a[5000],b[5000];
scanf("%s",&a);
int n,i,j;
n=strlen(a);
j=n;
for(i=0;i<j;i++)
{
b[i]=a[n-i-1];
}
printf("%s",b[5000]);
return 0;
}
这个是正确的#include <stdio.h>
#include <string.h>
int main()
{
char a[5000],b[5000];
scanf("%s",&a);
int n,i,j;
n=strlen(a);
j=n;
for(i=0;i<j;i++)
{
b[i]=a[n-i-1];
printf("%c",b[i]);
}
return 0;
}
为什么循环外不能一起输出而非要单个单个的输出
这串代码是想把输入的字符串反转吧,我改了一下 #include <stdio.h>
#include <string.h>
int main()
{
char a[5000],b[5000];
scanf("%s",a);
int n,i,j;
n=strlen(a);
j=n;
for(i=0;i<j;i++)
{
b[i]=a[n-i-1];
}
b[n]='\0';
printf("%s",b);
return 0;
}
先说一下你发的正确的那串代码,第一个问题就是上面老哥写的b[n]='\0' 有了'\0'数组b才是字符串数组,没有就是一个字符数组
第二个问题就是printf写在循环里面了,鉴于你想问的问题情有可原,在改好第一个问题后数组b是字符串数组,字符串数组的数组名是一个地址,指向这个数组第一个字符。而%s接收的是一个地址,所以说应该把%c改为%s,在后面只需要写数组名b就行了,%s接收到地址后会按照地址打印出这个字符串(字符串在内存中的地址都是连续的),遇到'\0'停止。
第三个问题就是你的scanf scanf("%s",&a);
前面的课程在接受变量比如说接收一个整型变量:
int a;
scanf("%d",&a);
a是取地址符,作用是获得a的地址,scanf接收到字符后会按照a的地址把输入的数值放到变量a里,所以scanf括号里的逗号后面跟的是地址,那么上面已经讲过了,数组名就是数组首元素的地址,所以说只需要写a,并不需要&a
|