刚接触C语言,在编写的时候遇到有关问题,不懂得怎么修改,希望大家能帮帮忙,多谢
刚接触C语言,在编写的时候遇到问题,不懂得如何修改,希望大家能帮帮忙,谢谢 ~
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,k,s;
char ch[];
char ch[]=a+b>c&&a+c>b&&b+c>a?"yes":"no";
printf("a,b,c=");
scanf("%f,%f,%f",&a,&b,&c);
k=(a+b+c)/2;
s=sqrt(k*(k-a)*(k-b)*(k-c));
printf("%s\n",ch);
printf("s=%f\n",s);
}
------解决方案--------------------
1.char ch[];
2.char ch[]=a+b>c&&a+c>b&&b+c>a?"yes":"no";
这两句是错的:
1.重复定义了一个变量ch。
2.第一句看起来你是想定义一个数组,但是你没有指定数组元素的个数,语法错误。
3.第二句给字符串变量赋初值的时候,等号后面只能跟字符串。
————————
按照你的意思,这两句修改成下面的语句,应该就对了:
char * ch=a+b>c&&a+c>b&&b+c>a?"yes":"no";
------解决方案--------------------
char * ch=a+b>c&&a+c>b&&b+c>a?"yes":"no";
这句中,是定义了一个字符型指针ch。
"yes"和"no"在编译的时候实际上是存储在程序中的,(a+b>c&&a+c>b&&b+c>a?"yes":"no")返回的是这两个字符串的首地址。
------解决方案--------------------
还有,这个似乎是根据三个边长判断三角形的,应该放在scanf语句给a,b,c赋值以后
------解决方案--------------------
char ch[]=a+b>c&&a+c>b&&b+c>a?"yes":"no";
这个地方,重复定义,而且赋值不能这样赋。 "yes":"no"在编译器看来是个指向"yes"或“no”的字符串指针,所以不能赋值给字符串数组,如果用指针接收的话,可以这样char* p; p=a+b>c&&a+c>b&&b+c>a?"yes":"no";
如果非要用字符串数组接收的话,可以拷贝到字符串数组,比如:
char ch[16];
a+b>c&&a+c>b&&b+c>a?strcpy_s(ch,"yes"):strcpy_s(ch,"no");
------解决方案--------------------

除了楼上说的,还有就是scanf中最好不要加非输入控制符(这里指的是逗号),因为非输入控制符必须原样输出,关于scanf,lz可以看看这个——http://blog.****.net/u012421456/article/details/18501309
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,k,s;
char ch[];
char ch[]=a+b>c&&a+c>b&&b+c>a?"yes":"no";
printf("a,b,c=");
scanf("%f,%f,%f",&a,&b,&c);
k=(a+b+c)/2;
s=sqrt(k*(k-a)*(k-b)*(k-c));
printf("%s\n",ch);
printf("s=%f\n",s);
}
------解决方案--------------------
1.char ch[];
2.char ch[]=a+b>c&&a+c>b&&b+c>a?"yes":"no";
这两句是错的:
1.重复定义了一个变量ch。
2.第一句看起来你是想定义一个数组,但是你没有指定数组元素的个数,语法错误。
3.第二句给字符串变量赋初值的时候,等号后面只能跟字符串。
————————
按照你的意思,这两句修改成下面的语句,应该就对了:
char * ch=a+b>c&&a+c>b&&b+c>a?"yes":"no";
------解决方案--------------------
char * ch=a+b>c&&a+c>b&&b+c>a?"yes":"no";
这句中,是定义了一个字符型指针ch。
"yes"和"no"在编译的时候实际上是存储在程序中的,(a+b>c&&a+c>b&&b+c>a?"yes":"no")返回的是这两个字符串的首地址。
------解决方案--------------------
还有,这个似乎是根据三个边长判断三角形的,应该放在scanf语句给a,b,c赋值以后
------解决方案--------------------
char ch[]=a+b>c&&a+c>b&&b+c>a?"yes":"no";
这个地方,重复定义,而且赋值不能这样赋。 "yes":"no"在编译器看来是个指向"yes"或“no”的字符串指针,所以不能赋值给字符串数组,如果用指针接收的话,可以这样char* p; p=a+b>c&&a+c>b&&b+c>a?"yes":"no";
如果非要用字符串数组接收的话,可以拷贝到字符串数组,比如:
char ch[16];
a+b>c&&a+c>b&&b+c>a?strcpy_s(ch,"yes"):strcpy_s(ch,"no");
------解决方案--------------------
除了楼上说的,还有就是scanf中最好不要加非输入控制符(这里指的是逗号),因为非输入控制符必须原样输出,关于scanf,lz可以看看这个——http://blog.****.net/u012421456/article/details/18501309