01学习指导-单元1程序设计基础概述

发布时间 : 星期日 文章01学习指导-单元1程序设计基础概述更新完毕开始阅读

对“较低”的类型进行提升。

【示例】有如下说明语句 int i; float a; long k;

则表达式 10+'D'+i*a-1/k的类型为float型,而表达式10+'D'+i*a-1.0/k的类型为double型。

三、常见问题

1.把scanf、printf等误认为是系统关键字

解析:对于初学者往往将scanf、printf等系统库函数的名字误认为是系统关键字,在VC++环境中编辑代码时,系统关键字将呈蓝色(系统默认为蓝色,可在tools(工具)->options(选项)->Format(格式)选项卡中的colors(颜色)中选择keyword项,确定前景色来修改)。既然scanf、printf等系统库函数的名字不是系统关键字,就可以作为用户定义标识符使用,但建议不要作为户定义标识符使用。

2.书写标识符时,忽略了大小写字母的区别

解析:C语言的标识符区分大小写字母,而在编辑程序时初学者往往容易把小写字母输入成大写字母或把大写字母输入成小写字母,而且有些字母的大小写之间又很难区分。这就要求在输入时,注意大小写字母的切换,养成一个好的习惯。

【示例】程序段 int p=3; printf(\

编译程序把p和P认为是两个不同的标识符,而显示出错信息'P' : undeclared identifier('P':未说明的标识符)。

3.在编辑程序时,遗漏空格或分号

解析:C语言中关键字与关键字之间,关键字与用户标识符之间等都要有空格,如果不加空格就将出现语法错误。

【示例】inta,b;//int与a之间无空格,有语法错误

C语言中分号是C语句中不可缺少的组成部分,语句结尾必须有分号,如果语句结尾没有分号,就将出现语法错误。

【示例】 a=1

b=2

编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看上一行是否漏掉了分号。

4.将西文符号输入成中文符号

解析:在编辑程序时,经常出现将西文符号输入成中文符号的错误。产生错误的原因是,当需要输入中文时,将西文状态切换为中文状态,中文输入结束后,忘记切换回西文状态,结果输入了中文符号。

int a;

printf(\请输入一个整数”);//右引号、右括号、分号都是中文符号 scanf(\

printf(\是整数%d的平方。”,a*a,a);// 右引号、逗号都是中文符号 5.将解决某一问题的程序代码都写在主函数中

解析:将解决某一问题的程序代码都写在主函数中来实现是可以的,但建议不要这样做,养成良好的编程习惯。因为,这样不能体现C语言的模块化程序设计的思想,特别当一个问题比较大时,所有代码都放在主函数中将给人们阅读、理解和调试程序带来困难,造成不必要的麻烦,程序的结构也不够清晰。

模块化程序设计的思想是将一个大的应用问题按功能分解成若干个小的模块,每一个小的模块具有结构清晰、功能单一、接口简单(一个入口一个出口)的特点,在C语言中,每一个小的模块就是一个函数。

6.函数定义、声明、调用相混淆

解析:函数定义应包含函数头和用一对花括号括起来的函数体,且在函数头的结尾不能有分号,函数定义用来给出如何实现该函数所要完成功能的具体算法;

函数声明与函数定义中的函数头相同,只是需在结尾加一个分号,所以函数声明是一个语句,用来通知编译系统所定义函数的一些必要信息,包括函数名、返回值类型、参数个数及每个参数的类型,一般应放在主调函数的说明语句部分;

函数调用在书写时应包含被调函数名、一对圆括号、圆括号里面写对应实参,函数调用应写在主调函数中,通过函数调用具体完成被调函数的功能。

【示例】在本单元的【例1-1】求两个整数和的程序中, 1. #include

2. int Sum(int x,int y);//函数声明 3. int main()

4. { 5. 6. 7. 8. 9. 10. 11. }

12. int Sum(int x,int y)//以下是函数定义 13. { 14. 15. 16. 17. }

第12至17行是函数Sum的定义;第2行是函数声明;第8行中的Sum(a,b)是函数调用,求变量a,b中存放的两个整数的和。

7.字符的表示与八进制整型常量的表示方法混淆

解析:八进制整型常量必须以数字0开头,由8进制数码组成;而字符的三位八进制数表示是用单撇号括起来的以反斜杠“\\”开头,后跟1到3位8进制数码,这1到3位8进制数码不必以数字0开头,这一点初学者往往容易混淆。

【示例】程序段 char ch1,ch2,ch3;

ch1='\\65'; //不必以数字0开头,’\\65’代表的是字符’5’ ch2=065; //065为八进制整型常量,ch2的值是字符’5’ ch3=65; //65为十进制整型常量,ch3的值是字符’A’ 8.斜杠“/”与反斜杠“\\”混淆

解析:初学者容易把斜杠“/”与反斜杠“\\”混淆,斜杠“/”在C语言中是除法运算符,而反斜杠“\\” 在C语言中用于转义字符的开头。

【示例】程序段 int a=5,b=2,c;

c=a\\b; //将除法运算符/写成了\\,编译出错

printf(\将转义字符\\n写成了/n,编译无错也无警告 9.变量未定义就开始使用

int z; z=x+y; return z; int a,b,s;

printf(\请输入两个整数:\scanf(\

s=Sum(a,b);// Sum(a,b)是函数调用 printf(\两个整数和是:%d\\n\return 0;

解析:初学者在编写程序时,经常出现变量未定义就开始使用的现象,导致编译不能通过。切记,程序中用到的每一个变量必须“先定义,后使用”。

【示例】程序段 int a=2,b=3;

c=a+b; //变量c未定义 printf(\

10.参加求余运算%的运算量的数据类型错误

解析:求余运算%要求参加运算的两个运输量必须都是整型数据,其他类型的数据要想进行求余运算需要进行强制类型转换。

【示例】程序段 int a,b=5; float c=3;

a=b%c; //变量c的类型错误 11.将字符串常量赋给字符变量

解析:字符常量是用一对单撇号括起来的单一字符,在内存中占一个字节,可以赋给字符变量;字符串常量是用一对双撇号括起来的字符序列,每个字符在内存中占有一个字节,包括字符串结束标志,一个字符串在内存中需要占有多个(大于等于2)字节,而字符变量只有一个字节的存储空间,所以,不能将一个字符串赋给字符变量。

即字符变量只能存放一个字符,而不能存放字符串。 【示例】程序段 char ch;

ch=\将字符串赋给字符变量是错误的 12.误认为自增自减运算不能用于实型变量

解析:在自增(++)、自减(--)运算符的一侧可以是整型变量,也可以是有左值的表达式,还可以是实型变量(实型变量是由左值的表达式)。

【示例】下面程序的输出结果是:3.600000。 int main() {

double x=2.6;

++x;//实型变量作自增运算 printf(\return 0;

联系合同范文客服:xxxxx#qq.com(#替换为@)