Possible use of 'xxxxxx' before definition 检查:
w 变量引用前是否已经赋值 w 是否输入时忘记使用地址符
在其它语言中输入时只需写出变量名即可,而C语言中要求指明向哪个地址标识的单元送值,因此要在输入的变量前加上符号\。
Possible incorrect assignment w 检查是否把赋值号当等号使用了
在if、while、do-while语句语句的条件表达式中,经常遇到关系运算符\等于\,应该用\表示,如果使用if (a=b) ?,则编译程序将(a=b)作为赋值表达式处理,即将b的值赋给a,然后a判断的值是否为0,如果不为0,则作为\真\;若为0,则作为\假\。这时会发生本警告。
Statement missing ; 检查:
w 语句是否缺少\;\
分号是C语句不可缺少的一部分,表达式语句后应有分号,如果语句后没有分号,则把下一行也作为上一行的语句的一部分,这就出现语法错误。有时编译系统指出某行有错,但在该行上未发现错误,此时应该检查上一行是否漏掉分号。复合语句的最后一个语句也必须有分号。
Misplaced else 检查:
w else语句是否缺少与之匹配if的语句 w 前面if语句是否出现语法错误 w 是否在不该加分号的地方加了分号 例如:if (a= =b) ; printf(\else
printf(\
本意为当a==b时输出a,否则输出b。但由于在if (a==b)后加了分号,因此if语句到此结束,则else语句找不到与之配对的if语句。 w 是否漏写了大括号 例如: if (a>b) t=a;a=b;b=t; else ?;
If(While、Do-while)statement missing ( If (While、Do-while)statement missing ) 检查: w 括号不配对
Function definition out of place 检查:
w 函数定义位置是否有错
函数定义不能出现在另一函数内。
w 函数内的说明是否有类似于带有一个参数表的函数开始
例如,在函数中定义数组时误用了圆括号,就会被误认为是一个函数定义。
Size of structure or array not known 检查:
w 表达式中是否出现未定义的结构或数组 w 定义结构或数组的语句有错
如:数组的定义要求用方括号,如果是二维数组或多维数组在定义和引用时必须将每一维的数据分别用方括号括起来,即定义二维数组a[3,5]是错误的,而应用a[3][5]。
Lvalue required 检查:
w 赋值号左边是否是一个地址表达式
赋值号左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间接指针和数组分量。如: main( ) {char str[6]; str=\?}
在编译时出错。因为str是数组名,代表数组首地址。在编译时对数组str分配了一段内存单元,因此在程序运行期间str是一个常量,不能再赋值。应该把char str[6]改为char *str。
Constant expression required 检查:
w #define 常量是否拼写错 w 数组的大小是否是常量
Type mismatch in redeclaration of \检查:
w 原文件中是否把一个已经说明的变量重新说明为另一类型。 w 一个函数被调用后是否有被说明为非整型 main() {
float a,b,c; /*定义三个整型变量*/ scanf(\输入两个整数*/
c=max(a,b); /*调用max函数,把函数值赋给c*/ printf(\输出c的值*/ }
float max(x,y) /*定义函数max*/ float x,y; /*说明形参x,y为整型*/ {
float z; /*函数内说明语句,定义z*/
if (x>y) /*当x>y时把x赋给z,否则把y赋给z*/ z=x;
else z=y;
return(z); /*返回z值*/ }
上面的程序在编译时产生出错信息,因为max函数是实型的,而且是在main函数后才定义。改正的方法一是在main函数中增加一个对max函数的说明,二是将max函数的定义位置调到main函数之前。
实验一 C程序的编辑、编译、连接和运行
[实验目的]
1. 熟练地进入tc编辑界面,熟练地输入和修改源程序。 2. 掌握C程序的编译、连接和运行的过程。 3. 掌握和理解C程序的结构。 4. 掌握tc主菜单中常用菜单的功能。
[实验内容] 1. 将两个数互换输出 实验步骤与要求: (1)将两个数定义为整型; (2)用赋值法对两个变量赋值; (3) 编译、连接、运行此程序。 测试数据 (1) 123,456
(2)-8766,-45
注意:互换时要设第三个变量,且类型与这两个变量相同。 2. 从键盘输入两个整数,然后输出两数中的较大值。
程序参阅课本
测试数据 (1) 2345,7890
(2)-9876,-4555
3.整数a的值为32767,b的值为a+1,编程输出b的值。 注意:b的类型应为哪种类型。 5. 编程求下列式子的值
1-1/2+1/3-1/4+1/5???+1/99-1/100 参考程序如下: main() {int n; float s1,s2; clrscr(); s1=0;s2=0;n=1 do
{s1=s1+1/n; n+=2;
}while (n<=99); n=2; do
{s2=s2+1/n; n+=2;
}while(n<=100);
printf(“the result is %f\\n”,s1-s2); getch();} [要求]
1. 总结实验中在编辑、编译、连接、运行等各环节中所出现的问题及解决方法。
2.提交实验报告,每个程序都要跟算法和程序清单。
实验二 顺序结构程序设计
[实验目的]
1.进一步掌握C程序的编辑、编译、连接和运行的过程。 2.熟悉顺序结构的程序设计方法。 3.熟练使用C的各种表达式。 4.熟练掌握输入、输出函数的使用。
[实验内容]
1. 输入x,y,编写程序求z=x+|y|的值。 实验步骤与要求:
(1)程序中用scanf函数输入x和y的值,请分析以下两个语句 scanf(“%f%f”,x,y); scanf(“%f%f”,&x,&y);
哪一个是正确的,分别运行之,分析程序运行结果。
如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。 2. 编写输入三角形的三边长a、b、c,求三角形面积area的程序。 实验步骤与要求:
(1)输入前要加提示语句。
(2)输出结果前要有必要的文字说明。 (3)输入一组数据3,4,5,观察运算结果。
(4)输入另外一组数据3,4,8,观察运算结果,分析这个运算结果是否有效。
[问题讨论]
小结上机各个环节所出现的错误及解决的办法。
实验三 选择结构程序设计
[实验目的]
1. 进一步掌握关系表达式和逻辑表达式的使用。 2. 熟悉选择结构程序设计。 3. 熟练使用if语句进行程序设计。 4. 使用switch语句实现多分枝选择结构。
[实验内容]
1.用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days。 实验步骤与要求: (1)有变量定义为整型。 (2)输入前要加提示语句。
(3)输出结果前要有必要的文字说明。 说明:
(1)闰年的条件是:year能被4整除但不能被100整除,或者year能被400整除。 (2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。
2.编写程序,输入三角形三边 a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。 实验步骤与要求:
(1) 输入一组数据3,4,8,观察程序运行结果,并与实验二中程序2做比较 (2) 另外再输入几组数据进行测试: 3,4,5 3,3,3 3,3,5
(3)如果程序有误,可采用“跟踪打印”的调试方法,确定错误的出处。 3.编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。 奖金 税率 a<500 0.00 500≤a<1000 0.05 1000≤a<2000 0.08 2000≤a<5000 0.10 5000≤a 0.15 实验步骤与要求:
(1) 用if语句编程,自变量和函数值均为双精度类型 (2) 用scanf函数输入奖金数a,输出结果采用以下形式: a=具体值 rate=税率值 tax=应缴税款 profit=实得奖金数 (3) 分别输入a=280,512,1000,4250,5100,运行该程序 (4) 用if~else if语句和switch语句编程,其它同上。
[问题讨论]
对于多分枝选择结构何时使用if语句的嵌套,何时使用switch语句?
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库c语言上机指导(2)在线全文阅读。
相关推荐: