c语言问题 初学者
#include<stdio.h>#include<string.h>intmain(){charfanxv(chara[]);chara[10000];charc[10...
#include<stdio.h>
#include<string.h>
int main()
{
char fanxv(char a[]);
char a[10000];
char c[10000];
gets(a);
c=fanxv(a);
puts(c);
return 0;
}
char fanxv(char a[])
{
char z[10000];
int j;
int zhong;
for(j=0;j<=10000;j++)
{
if(a[j]='0')
zhong=j;
break;
}
for(int i=0;i<=10000;i++)
{
z[i]=a[zhong];
zhong--;
if(zhong=0)
break;
}
return(z);
}
错误如下:
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------
正在编译 F:\c程序\反序.cpp...
[Error] F:\c程序\反序.cpp:9: error: incompatible types in assignment of `char' to `char[10000]'
[Error] F:\c程序\反序.cpp:32: error: invalid conversion from `char*' to `char'
[Warning] F:\c程序\反序.cpp:16: warning: address of local variable `z' returned
[Warning] F:\c程序\反序.cpp:33:2: warning: no newline at end of file
编译中止 F:\c程序\反序.cpp: 2 个错误, 2 个警告 展开
#include<string.h>
int main()
{
char fanxv(char a[]);
char a[10000];
char c[10000];
gets(a);
c=fanxv(a);
puts(c);
return 0;
}
char fanxv(char a[])
{
char z[10000];
int j;
int zhong;
for(j=0;j<=10000;j++)
{
if(a[j]='0')
zhong=j;
break;
}
for(int i=0;i<=10000;i++)
{
z[i]=a[zhong];
zhong--;
if(zhong=0)
break;
}
return(z);
}
错误如下:
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------
正在编译 F:\c程序\反序.cpp...
[Error] F:\c程序\反序.cpp:9: error: incompatible types in assignment of `char' to `char[10000]'
[Error] F:\c程序\反序.cpp:32: error: invalid conversion from `char*' to `char'
[Warning] F:\c程序\反序.cpp:16: warning: address of local variable `z' returned
[Warning] F:\c程序\反序.cpp:33:2: warning: no newline at end of file
编译中止 F:\c程序\反序.cpp: 2 个错误, 2 个警告 展开
3个回答
展开全部
正确的代码应该是这样:
#include<stdio.h>
main()
{
int
n=0;
char
ch;
while((ch=getchar())!='\n')
{if(ch>='0'&&ch<='9')
n=n*10+ch-'0';
}
printf("%d",n);
}
至于这句n=n*10+ch-'0';
ch-'0'就是把字符型的数字转换成整形的数字,因为getchar()接受的是char型的。
举个例子,比如你输入“
1
2
3”,程序开始检测:
跳过第一个空格,检测到字符'1',通过'1'-'0'得到整形数字1,n
=
0*10
+
1
=
1.
跳过第二个空格,检测到字符'2',通过'2'-'0'得到整形数字2,n
=
1*10
+
2
=
12.
跳过第三个空格,检测到字符'3',通过'3'-'0'得到整形数字3,n
=
12*10
+
3
=
123.
输出n为123.
#include<stdio.h>
main()
{
int
n=0;
char
ch;
while((ch=getchar())!='\n')
{if(ch>='0'&&ch<='9')
n=n*10+ch-'0';
}
printf("%d",n);
}
至于这句n=n*10+ch-'0';
ch-'0'就是把字符型的数字转换成整形的数字,因为getchar()接受的是char型的。
举个例子,比如你输入“
1
2
3”,程序开始检测:
跳过第一个空格,检测到字符'1',通过'1'-'0'得到整形数字1,n
=
0*10
+
1
=
1.
跳过第二个空格,检测到字符'2',通过'2'-'0'得到整形数字2,n
=
1*10
+
2
=
12.
跳过第三个空格,检测到字符'3',通过'3'-'0'得到整形数字3,n
=
12*10
+
3
=
123.
输出n为123.
展开全部
都是一些基础性错误
比如:
1、一个等号是赋值,两个等号用来判断是否相等
2、if-等语句没有加大括号
3、字符串结束标识是'\0',不是字符'0'
4、字符串赋值时,在最后要加上字符串结束符
5、子函数局部变量的地址返回后可能无效
#include<stdio.h>
#include<string.h>
int main()
{
void fanxv(char a[], char z[]);
char a[10000];
char c[10000];
gets(a);
fanxv(a, c);
puts(c);
return 0;
}
void fanxv(char a[], char z[])
{
int j;
int zhong;
for (j = 0; j <= 10000; j++)
{
if (a[j] == '\0')/////////////////
{
zhong = j;
break;
}
}
j--;
for (int i = 0; i <= 10000; i++)
{
z[i] = a[j];
j--;
if (j< 0)///////////
break;
}
z[zhong] = '\0';
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个Error:类型不匹配。fanxv函数返回的是char类型,c是字符数组,当然无法被赋值。
第二个Error:z是字符数组,fanxv函数返回的应该是char类型。
第一个Waring:z是本地变量,函数中临时申请的,函数结束则z数组内存就会被释放,返回这个没有意义。
第二个Waring:最后多打个回车吧。
第二个Error:z是字符数组,fanxv函数返回的应该是char类型。
第一个Waring:z是本地变量,函数中临时申请的,函数结束则z数组内存就会被释放,返回这个没有意义。
第二个Waring:最后多打个回车吧。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询