我刚学vc,做习题时出现这个错误提示undeclared identifier,但我不知道错在哪里了。

下面就是我写的程序
是关于求方程解的问题
我是新手,实在看不出哪里错了
而且我把这个程序用三台电脑运行,有一台报两个错,有一台报一个,还有一台可以运行,实在让我不解啊
#include<math.h>
void main()
{
int a,b,c;
double delta,x1,x2;
printf("请输入数据");这里报错!
scanf("%lf%lf%lf",&a,&b,&c);这里报错!
delta=sqrt(b*b-4*a*c);
if(delta>0)
{
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
printf("x1=%7.2lf,x2=%7.2lf\n",x1,x2);
}
else if(delta==0)
{
x1=(-b)/(2*a);
printf("x1=%7.2lf\n",x1);
}
else
{
printf("此方程无解");
}
}

undeclared identifier是“没有定义的标识符”的意思。
你的代码有三个问题。一是没有包含头文件stdio.h,编译器就不认识printf()和scanf()了,认为它们是没有定义的标识符!在#include<math.h>后写一句#include <stdio.h>就可以了。二是你定义的a、b、c是int型,而在scanf()中却用的是%lf型(这是double型)控制符,因为类型不配而使scanf()拒绝接受输入的数据。把int a,b,c改成double a,b,c就行了。三是delta=sqrt(b*b-4*a*c)这一句要先判断b*b-4*a*c是否<0,否则负数开平方将出错。要再声明一个double变量k,后面改为:
if((k=b*b-4*a*c)>=0){
delta=sqrt(k);
if(delta>0){
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
printf("x1=%7.2lf,x2=%7.2lf\n",x1,x2);
}
else if(delta==0){
x1=(-b)/(2*a);
printf("x1=%7.2lf\n",x1);
}
}
else printf("此方程无解");
}
这样就能达到你的目的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-24
#include "stdio.h"
#include "string.h"
void main()
{
char q[10]=; //写成char q[10]="abc"; 这种形式也可以的。
char z[10]=;
int i;
printf ("请输入密码:\n");
for(i=0;i<3;i++)
{
scanf("%c",&z[i]);
}
for(i=0;i<3;i++)
{
if(strcmp(q,z)==0) //strcmp这个函数是string.h这个头文件里面申明的,要加上#include "string.h"
printf("恭喜你答对啦!!!\n");
}

}

你c语言的基础知识很不了解,建议你多看看书 书后面的习题多做做

这些错误
if(strcmp(q[i],z[i])=0); 不知道你是不是手误还是怎么的 if语句后面还有分号吗?

char q[10]={'a','b','c'); 看右半部分括号

if(strcmp(q[i],z[i])=0);
strmcp这个函数的具体声明是在string.h里面的 要在开头加上#include "string.h"

strcmp 这个函数是比较两个字符串是否相等的,你只能给它传递
字符串的名字 或者指针。
第2个回答  2012-03-24
不知道到低错在哪啊谢谢大家了 ..的不对低下这个我已经验证了 #建议你多看看书 书后面的习题多做做这些错误 if(strcmp(q[i],z[i]),
第3个回答  2012-03-24
有未定义的变量
相似回答