㈠ 编程c语言总是有一个错误
执行 cl.exe 时出错
这种错误一般是由于环境变量设置出错导致的,参见网上的各种教程
http://blog.csdn.net/hongloumengyan/article/details/6112272
实在不会就重装一遍,安装在默认路径里一般就不会有这个问题了
㈡ 人民邮电出版社出版的c语言程序设计中的错误有哪些
1. 书写标识符时,忽略了大小写字母的区别。
int main( void )
{
int a = 5;
printf( "%d", A );
return 0;
}
编译器认为 a 和 A 是两个不同的变量名,而显示出错信息。C 语言规定大写字母和小写字母是不同的字符;而有些编程语言是不分大小写的。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2. 忽略了变量的类型,进行了不合法的运算。
int main( void )
{
float a, b;
printf( "%d", a % b );
return 0;
}
% 是求余运算符,a % b 的结果是 a 除以 b 的余数。只有 % 左右两边的操作数都是整型时,才可以进行求余运算。故而上面的程序是错误的,因为 a 和 b 是浮点型变量。
3. 将字符常量与字符串常量混淆。
char c;
c = "a";
这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C 语言规定以 \0
作字符串常量的结束标志,它是由系统自动加上的,所以 "a" 实际上包含两个字符:'a' 和 '\0'。所以把 "a" 赋给字符变量是不行的。
4. 忽略了“=”与“==”的区别。
许多高级语言都使用“=”符号作为关系运算符的“等于”。如 BASIC 程序中可以写:
if ( a = 3 ) then …
但 C 语言中,“=”是赋值运算符,“==”才是关系运算符。如:
if (a == 3)
a = b;
a == 3 是比较 a 是否等于 3;而 a = b; 表示把 b 的值赋给 a。初学者往往会把 a == 3 错写成 a = 3,这样写是符合语法的,但是不符合我们的期望。如果错写成了 a = 3,有些编译器会给出警告。
5. 忘记加分号。
分号是 C 语句中不可缺少的一部分,语句末尾必须有分号。
a = 1
b = 2;
编译时,编译器发现“a = 1”后面没有分号,就会报错。改错时,如果在编译器所说的有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
6. 多加分号。
{
z = x + y;
t = z / 100;
printf( "%f", t );
};
上面代码中,大括号 } 后面的分号(;)是毫无必要的!因为单独一个 ; 也是合法的 C 语言语句,所以 } 后面写了 ; 也是合法的,但是毫无必要!又如:
if ( a % 3 == 0 );
i++;
程序员的本意是如果 3 整除 a,则 i 加 1。但由于 if ( a % 3 == 0 ) 后加了分号,则 if 语句到此结束。不论 3 是否整除 a,程序都会执行 i++; 语句。再如:
for ( i = 0; i < 5; i++ ) ;
{
scanf( "%d", &x );
printf( "%d", x );
}
程序员的本意是先后输入 5 个数,每输入一个数后再将它输出。但由于for () 后加了一个分号,循环体变为空语句 ; 。空语句 ; 执行 5 次后,下面的程序块才开始执行,导致的结果是只能输入一个数并输出它。
7. 使用 scanf 函数时忘记加取址运算符“&”。
int a, b;
scanf( "%d %d", a, b );
这样写是错误的!应该改成 scanf( "%d %d", &a, &b );
8. 输入数据的方式与要求不符。
scanf( "%d %d", &a, &b );
输入时,不能用逗号作两个数据间的分隔符。例如:3, 4 。而要使用空格、回车或者 tab 键作为分隔符。例如:3 4 。如果我们想用逗号(,)来做分隔符,可以这样写:
scanf( "%d,%d", &a, &b );
此时不用逗号而用空格或其它字符是不对的。例如:3:4 。又如:
scanf("a=%d,b=%d",&a,&b);
输入应如以下形式:
a=3,b=4
9. 输出的数据类型与所用格式说明符不一致。
例如,a 定义为整型,b 定义为浮点型
int a = 3;
float b = 4.5;
printf( "%f%d\n", a, b );
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。应该改成:
printf( "%d%f\n", a, b );
10. 输入数据时,企图规定精度。
scanf( "%7.2f", &a );
这样做是不合法的,输入数据时不能规定精度。
11. switch 语句中漏写 break 语句。
例如:根据考试成绩的等级打印出百分制数段。
switch ( grade ) {
case 'A':
printf( "85~100\n" );
case 'B':
printf( "70~84\n" );
case 'C':
printf( "60~69\n" );
case 'D':
printf( "<60\n" );
default:
printf( "error\n" );
由于漏写了 break 语句,当 grade 值为 A 时,printf 函数在执行完第一个语句后会接着执行第二、三、四、五个 printf 函数语句。正确写法应在每个分支后再加上“break;”。例如:
case 'A':
printf( "85~100\n" );
break;
12. 忽视了 while 和 do-while 语句在细节上的区别。
(1) int main( void )
{
int a = 0, i;
scanf( "%d", &i );
while ( i <= 10 ) {
a += i;
++i;
}
printf( "%d", a );
return 0;
}
(2) int main( void )
{
int a = 0, i;
scanf( "%d", &i );
do {
a += i;
++i;
} while ( i <= 10 );
printf( "%d", a );
return 0;
}
可以看到,当输入 i 的值小于或等于 10 时,二者得到的结果相同。而当 i>10 时,二者结果就不同了。因为 while
循环是先判断后执行,而 do-while 循环是先执行后判断。对于大于 10 的数 while 循环的循环体一次也不执行,而 do-while
语句则要执行一次。
13. 定义数组时误用变量。
int n = 6;
int a[n];
C99 以前,数组名后用方括号括起来必须是常量,包括常量表达式。但是在最新的 C99 标准中,上面的代码是正确无误的。如果您的编译器不支持 C99 ,那么上面的代码不能通过编译。
14. 在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。
int main( void )
{
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
printf( "%d", a[10] );
return 0;
}
C 语言规定:定义时如果用 a[10],则表示数组 a 有 10 个元素,其下标值范围为0到9。a[10]不属于上面定义的数组中。对 a[10] 进行赋值可能导致程序崩溃!
15. 在不应加地址运算符 & 的位置加了地址运算符。
char s[100];
scanf( "%99s", &s );
C 语言中,数组名代表该数组的起始地址。因此上面的代码中,s 本身就已经是一个地址了,我们不需要再对它进行取址运算。正确的写法应该是:scanf( "%99s", s );
㈢ 在C语言编程中,出现如下的错误“expected initializer before "int"怎样解决
这种信息只是告诉你在这行 int 以前有语法错误,重新检查编辑即可。
㈣ C语言程序设计语法错误问题
#include<stdio.h>
int main()
{
int data1,data2,data3;
scanf("%d%d",&data1,&data2);/*这里冒号里("")应该只包括占位符(%d);你定义的是(int)dat(e)2,但是取值的是dat(a)2;还有既然你要求值的是data3,他就不能在输入函数scanf()中出现;因为他是要被输出地的; */
data3=data1*data2;
printf("data3=%d",data3); /*data3应在输出函数printf()中,因此他不能出现在上面的函数中;*/
return 0;
}
㈤ C语言 编程后,有错误,怎么查看是那部分出错了!
【编写完代码后直接编译,如果有错误,编译器会自动弹出提示的】
例子如下:
(5)c程序设计语言错误扩展阅读:
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX、LINUX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它高级语言,有一些大型应用软件也是用C语言编写的。
㈥ 关于C语言编程时的错误
我已经测试了,主要是语法错误。在VC++6.0中编译阶段就能得到错误信息。要保证代码正确性,首先代码格式要良好,这样才容易找出错误。
{a[0].score=a[2].score;j=2;}};这句最后的};是多余的。
还有一个逻辑问题。学生姓名是字符串类型,最后一句输出时你却用%c,显然应当用%s,并且将a[j].name[20]修改为a[j].name
最后一个建议:最后一句输出也加上\n
㈦ C语言编程错误
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#defineNUM200
voidinput();
voidrecord();
voidfind();
voidmodify();
intnow_no=0;
structClient
{
charname[20];
intsex;//性别,0表示男,1表示女
intage;
charID_card[20];
intyear;
intmonth;
intdate;
intRoom_ID;
intTel;
intPrice;
charSign[10];
}
Room[NUM];
intmain()
{
intas;
start:printf(" 欢迎使用客房服务系统 ");
do
{
printf(" 1.录入宾客信息 2.客房数,某一天的客房数的统计 3.查询宾客信息 x4.修改宾客信息 5.退出 ");
printf(" 选择功能选项");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
//case1:system("cls");input();break;
//case2:system("cls");record;break;
//case3:system("cls");find;break;
//case4:system("cls");modify;break;
//case5:system("exit");exit(0);
default:system("cls");gotostart;
}
}while(1);
}
㈧ c语言程序设计错误解答
你的算法有问题
你的程序是让两个数从2开始除,(这里的除实际上是求模运算,为了方便解释就先说成除吧)
直到被除数大于或等于这两个数中最小的一个才停止循环
比如你的28,13
是循环到i=13时停止的,并且你的循环范围也有问题,输出会出错
你可以让这两个数从它们之中较小的一个开始除,第一次两个数除后都为0的话就停止循环,得到最大公约数
程序修改如下:
#include<stdio.h>
#include<math.h>
void
main()
{
int
m,n,i,p,max,q,min;
scanf("%d,%d",&m,&n);
if(m>n)
p=n;
else
p=m;
for(i=p;i>0;i--)
if
(m%i==0&&n%i==0)
{
max=i;
break;
}
min=m*n/max;
printf("max=%d
",max);
printf("min=%d
",min);
}
㈨ C语言程序设计,显示一个错误,不知道咋改,求大佬帮忙
报错的原因是:程序执行错误的一行时,不知道fun是什么,因为fun函数是在这一行后面定义的。
两种改法:
把 fun 函数的定义放在 main 函数之前
在 main 函数之前声明 fun 函数,也就是在 #include<stdio.h>下面一行加上
double fun(int m);
即可。
㈩ C语言程序设计语法错误题
#include<stdio.h>
int main()
{
int data1,data2,data3;
printf("please input 2 number:");
scanf("%d%d",&data1,&data2);/*这里冒号里("")应该只包括占位符(%d);你定义的是(int)dat(e)2,但是取值的是dat(a)2;还有既然你要求值的是data3,他就不能在输入函数scanf()中出现;因为他是要被输出地的; */
data3=data1*data2;//这没错,有时候错误在红色区域的上面或下面;
printf("data3=%d",data3); /*data3应在输出函数printf()中,因此他不能出现在上面的函数中;*/
return 0;
}
我看到两个这种类型的题,是同一个人吗;不管了,错类型一样,我直接粘过来了;希望能帮到你,望采纳;