下面就是我写的程序是关于求方程解的问题我是新手,实在看不出哪里错了而且我把这个程序用三台电脑运行,有一台报两个错,有一台报一个,还有一台可以运行,实在让我不解啊#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("此方程无解");}这样就能达到你的目的。
#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 这个函数是比较两个字符串是否相等的,你只能给它传递字符串的名字 或者指针。