C语言初学者入门讲座

2024-05-17

C语言初学者入门讲座(共7篇)

篇1:C语言初学者入门讲座

C语言是在70年代初问世的,一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。

当代最优秀的程序设计语言

早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。

C语言的特点

C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

C语言版本

目前最流行的C语言有以下几种:

·Microsoft C 或称 MS C

·Borland Turbo C 或称 Turbo C

·AT&T C

这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美,

面向对象的程序设计语言

在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

C和C++

但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。

C源程序的结构特点

为了说明C语言源程序结构的特点,先看以下几个程序。这几个程 序由简到难,表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个C源程序的基本部分和书写格式。main

{

printf(“c语言世界www.vcok.com,您好!n”);

}

main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有,且只能有一个主函数(main函数)。函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数,可在程序中直接调用。

#include

#include

main()

{

double x,s;

篇2:C语言初学者入门讲座

当代最优秀的程序设计语言

早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。

C语言的特点

C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

C语言版本

目前最流行的C语言有以下几种:

·Microsoft C 或称 MS C

·Borland Turbo C 或称 Turbo C

·AT&T C

这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美,

面向对象的程序设计语言

在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

C和C++

但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。

C源程序的结构特点

为了说明C语言源程序结构的特点,先看以下几个程序。这几个程 序由简到难,表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个C源程序的基本部分和书写格式。main()

{

printf(“c语言世界www.vcok.com,您好!n”);

}

main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有,且只能有一个主函数(main函数)。函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数,可在程序中直接调用。

#include

#include

main()

{

篇3:C语言初学者入门讲座

C语言具有许多功能, 程序的表达能力也强, 应用起来很方便, 并且可移植性好, 拥有现代化语言的数据结构, 但随着编程者的很大自由度, 就容易出现错误。一个不熟练的编程人员, 要真正学好C、用好C并不容易, 尤其是初学者往往出了错还不知怎么回事。下面把初学者在学习和使用C语言中容易犯的错误列举出来, 以提高编程效率和正确率。

2 C语言编程中常见错误的分析

2.1 语句书写错误

2.1.1 使用未定义的变量

C语言中对用到的变量要先定义后使用, 以上程序没有对b定义就使用了。

2.1.2 语句未缺少分号

C语言的语句要以分号结束。

2.1.3 忽略了大小写字母的区别

在C语言中要求区分字母的大小写, 大写和小写被认为是不同的字符。

正确程序如下:

2.1.4 复合语句漏掉了花括号

2.2 使用scanf函数的注意事项

2.2.1 从键盘输入数据注意输入的形式

scanf函数在输入数据时, 对于控制字符串中的普通字符要原样输入。例如:scanf (〝a=%d, b=%d, c=%d〞, &a, &b, &c) ;输入时应用如下形式:a=5, b=8, c=2而下面的输入方式都是非法的:5 8 2或5, 8, 2或5:8:2等。

2.2.2 在scanf函数中&符号不正确

其中的两条scanf语句都出现了错误。scanf函数的输入列表要在变量名前加&;如果是在数组中, 数组名就是数组的首地址, 不需要加&。以上的scanf应分别修改成:

scanf ("%s", n) ;scanf ("%f", &a) ;

2.2.3 scanf函数中的格式说明符与输入的数据类型不一致

该程序在编译时没有出错信息, 但运行结果与题意是不符的, 这种错误特别要注意。

2.2.4 输入数据时不能规定精度

例如:scanf (〝%4.2f〞, &a) ;是不合法的。

2.3 混淆运算符号“=”与等于运算符“==”

这种错误往往是不易发现的。假如a=5, b=9, 如果a等于b, 则输出“a equal to b”。如果用下面的语句:if (a=b) printf (〝a equal to b〞) ;是把b的值赋给a, a=9再作判断, a非零为真, 因此输出“a equal to b”是不合题意的。

2.4 循环语句注意事项

2.4.1 循环语句中的死循环

(1) 例1:for (i=1;;i++) sum=sum+i;

for语句中的表达式2省略, 认为表达式2始终为真, 循环无终止地进行下去。因此, 表达式2不能空缺。

(2) 例2:i=1;sum=0;

while (i<10) sum=sum+i;printf (〝%d〞, sum) ;

循环体中没有使循环趋向于结束的语句, 循环控制变量i的值始终不改变, 循环将永不结束。

2.4.2 在switch的分支语句中没有break语句

当cj的值为4时, 输出为ABCD。因为缺少break语句, 执行完printf (〝A〞) ;后接着执行printf (〝B〞) ;printf (〝C〞) ;printf (〝D〞) ;要在所有的case语句后加上“break;”。

2.4.3 注意区别while和do-while语句

如以下程序:

通过运行程序可以知道:当输入的i<=10时, while和do-while语句得到的结果相同。反知, 它们的结果就不同了。因为当i>10时, while一次也不执行循环体, do-while语句则要执行一次循环体。也就是说while循环是先判断后执行循环体, 而do-while循环是先执行循环体后判断。

2.5 数组中的错误

2.5.1 数组的定义与引用方式不正确

C语言规定, 数组定义的形式采用“数组名+[常量表达式]”, 常量表达式中不能是变量和非整型值。以下写法都会造成程序编译时出错:

(1) int b[m];其中m为变量。

(2) int a (7) ;数组引用了圆括孤。

(3) int n[5.0];其中1.0不是正整型常量。

2.5.2 在定义的数组中, “元素个数”不是“数组可用的最大下标值”

例如:int b[5]={1, 2, 3, 4, 5};print (〝%d〞, b[5]) ;

b[5]表示b数组有b[0], b[1], b[2], b[3], b[4]共5个元素, 最大下标值为4。

2.6 指针

2.6.1 指针变量要初始化

例如:char*p, ch;scanf (〝%c〞, p) ;

语句中p是一个指针变量, 要存放一个字符型数据的地址, 变量p没有赋值, 从键盘输入的数据会随机指向某个内存。利用这种指针引用是非常危险的, 甚至会导致系统崩溃。

2.6.2 指针变量的引用方式错误

以下为不合法语句:int*p, a=1;*p=&a;

在说明语句中p前面的“*”是一个指针声明符, 表示是一个整形指针变量, 在第二条语句中p前面的“*”是指针运算符, 也称为“间接引用运算符”, 作用于指针变量, *p表示指针变量p所指向的存储空间, 相当于变量a。

3 总结

这些是初学者编程时常出现的错误, 应该多编程, 多了解C语言的语法, 多加以练习, 错误自然就减少了。

参考文献

[1]谭浩强.C程序设计[M] (第三版) .北京:清华大学出版社, 2005.

[2]谭浩强, 张基温, 唐永炎.C程序设计教程[M].北京:高等教育出版社, 1992.

[3]姜仲秋等.C语言程序设计.南京:南京大学出版社, 1998.

篇4:C语言入门基础教案

教学目标:

一认知目标:了解C语言的特点和C语言的开发步骤

二能力目标:初步了解C程序的组成结构和主函数的作用;

掌握五种基本算术运算符的使用:+、—、*、/、%,了解优先级与结合性;

三情意目标:学习C语言基础上能使用Microsoft Visual C++6.0 进行基本的C程序开发

教学要求:

识记:

计算机程序设计语言的一些必备知识与理论 理解:

理解C程序的组成结构和主函数的作用;

理解C语言等高级程序设计语言的开发过程

理解C语言中各种运算的运算规则,由运算符和相关数据组成表达式的方法;

运用:

能使用printf()函数进行信息的输出;

能编写简单程序

教学重点:

1)计算机程序设计语言的理论知识,语言的分类和特点以及开发过程等; 2)C语言的简介,结构特征和特点等;

3)如何使用Microsoft Visual C++ 6.0进行C语言程序开发; 4)C语言源程序的结构介绍及基本语法的简介; 5)C语言源程序的书写要求;

6)C语言基础:函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等。

教学难点:

如何让学生理解C语言的结构及语法基础还有源程序的书写要求,掌握对函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等

授课方法: 讲授法与演示法相结合计算机程序设计语言基础

一新课导入

大家都听过程序员没?或者是网络上俗称调侃的码农?对,简单讲就是编写计算机代码的工作。在新世纪大家对与计算机相关的软件和产品都不陌生,每个人都使用过计算机软件如微信,QQ等等,那这些软件又是怎么开发出来的呢?简单来讲它们是怎么产生的呢?对,它们都是使用计算机程序编写出来的。今天我们就来学习了解下计算机程序设计语言。

二新课讲授

1计算机程序设计语言介绍及分类 程序概念:程序是由一系列指令组成的,为解决某一具体问题而设计的一系列排列有序的指令的集合。

程序设计语言分为三类:机器语言、汇编语言、高级语言。 机器语言:一台计算机中所有指令集合称为该计算机的指令系统,这些指令就是机器语言,它是一种二进制语言。

优点:面向机器、程序简洁、运行速度快;

缺点:不直观、难懂、难记、难写、难以修改和维护

 汇编语言:使用符号(助记符)来代替机器语言中的二进制代码

优点:质量高、执行速度快、占用内存少

缺点:面向机器,与机器语言基本上一一对应,具有机器语言的缺点

 高级语言:接近自然语言,使用英语单词表达语句,便于理解、记忆和掌握

优点:通用性强,便于理解、记忆和掌握 缺点:不能直接运行源程序,运行速度相对慢

2高级程序设计语言的开发过程

 分析问题、建立模型  表现模型  源程序的编写  程序的编译与连接  程序的测试与调试C语言的特点

① 既有高级语言的程序思想与设计方法,又有低级语言的操作能力; ② 结构化体系

③ 可以直接访问内存的物理地址,丰富的运算符和数据类型 ④ 可移植性强 ⑤ 代码效率高 使用Microsoft Visual C++ 6.0开发C语言程序(1)启动Microsoft Visual C++ 6.0(2)(3)(4)(5)新建项目 新建文件

在出现的文本窗口中输入程序 编译并运行程序 C源程序的结构特征

#include

/*编译预处理,包含标准输入输出文件头文件*/ Int main(void)/*主程序名*/ {

/*表示函数的开头*/ Printf(“Hello,World!n”);

/*函数体*/ Return 0;}

/*表示函数的结束*/

说明:

(1)程序一般用小写字母书写;

(2)C程序是由函数构成的,函数是C程序的基本单位;(3)每个程序必须要有一个main()(只能有一个),称主函数;(4)程序体必须要在{}之间;

(5)每个语句的结尾,必须要有“;”作为终止符;(6)用/*..........*/作注释,//可作行注释;

三归纳小结

本节主要介绍了计算机程序设计语言及分类以及高级程序设计语言的开发过程,重点介绍C语言的特点和使用Microsoft Visual C++ 6.0开发C语言程序的步骤,最后由最简单的C语言源程序来学习了解C语言的重点基本规则。

四 课堂巩固练习

带领学生使用演示如何使用Microsoft Visual C++ 6.0开发环境,并演示简单的C语言源程序整个开发过程步骤。

五作业布置

在电脑上安装Microsoft Visual C++ 6.0软件,并学会新建项目和文件,将helloworld程序编辑运行出来,并练习其他输出语句的程序设计。

六后记

篇5:C语言程序设计入门经典例题

个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do„while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c;printf(“请输入一个加数:n”);scanf(“%d”,&a);printf(“请输入一个被加数:n”);scanf(“%d”,&b);do { printf(“请回答:a+b=”);scanf(“%d”,&c);if(a+b!=c)printf(“请再想一想n”);} while(a+b==c)printf(“回答正确!”);}

2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。

算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100!= 0)||(year % 400 = = 0)或:(!(year % 4)&& year % 100)||!(year % 400)程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1;不闰年:leap=0。#include void main()int year;printf(“请输入4位数年份:”);scanf(“%d”,&year);if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的 printf(“%d是闰年”,year); else printf(“%d不是闰年”,year);}

3、三角形九九表程序:要求选择C实现循环的4种方法(if+go, for语句,while语句,do…while语句)中的一种,比如,最好选择for语句来实现如下形式的“九九表”输出。

#include void main()int a,b,c;for(a=1;a<=9;a++)//纵列表数每循环完一次换行 {for(b=1;b<=9;b++)if(b<=a)printf(“ %d”,a*b);printf(“n”);}}

4、平面等腰三角形: 要求利用C的for循环实现如下平面图形输出。

如图,等腰三角形有6层,则 #include viod main()int a,b,c;//a,b,c分别是层数变量,变量,*变量 for(a=1;a<=6;a++){for(b=6-a;b>=1;b--)printf(“ ”);for(c=1;c<=2*a-1;c++)printf(“*”);printf(“n”);}}

5、平面倒立等腰三角形: 要求利用C的for循环实现如下平面图形输出。

#include viod main()int a,b,c;//a,b,c分别是层数变量,变量,*变量 for(a=6;a>=1;a--){for(b=6-a;b>=1;b++)printf(“ ”);for(c=11;c<=2*a-1;c--)printf(“*”)printf(“n”);}}

6、判素数:要求由用户从键盘输入任一正整数m, 程序输出m是否素数的信息。#include viod main()int m,n;printf(“请输入任一正整数m:”);scanf(“%d”,&m);If(m==0||m==1);printf(“%d不是素数”,m);//0和1既不是素数也不是合数 for(n=2;n

7、计算:1!+2!+3!+...+9!

#include void main(){ int i;long p=1;double s=0.0;for(i=1;i<=9;i++){p*=i;S+=p;} printf(“1!+2!+3!+„+9!=%fn”,s);}

8、计算:1!+3!+5!+...+15!

#include void main()int i;long p=1;double s=0.0;for(i=1;i<=15;i++){p*=i;if(i%2!=0)s+=p;} printf(“1!+3!+5!+„15!=%tn”,s);}

9、计算:2!+4!+6!+...+16!

#include void main()int i;long p=1;double s=0.0;for(i=1;i<=16;i++){p*=i;if(i%2==0)s=s+p;} printf(“2!+4!+6!+„16!=%tn”,s);}

10、利用“比较交换法”对由用户从键盘输入的任意10个整数升序排序。要求:利用C的数组和循环,程序能分别输出排序前后的数组。#include void main(){ int i,s,a[10],t;//数组下标变量i printf(“请输入10个整数:n”);for(i=0;i<=9;i++)scanf(“%d”,&a[i]);//将10个整数分别存入该数组的下标0到9这10个位置中去 for(i=0;i<9;i++){for(s=i+1;s<=9;s++)//a[s]为a[i]的后一位 if(a[i]>a[s]){t=a[i];a[i]=a[s];a[s]=t;}//将数组中的数两两逐个比较换位,实现升序 printf(“排序后的数组为:n”);for(i=0;i<=9;i++)printf(“%d ”,a[i]);}

11、统计:由用户从键盘输入任意10个数,统计其中最大数,最小数及平均值。

#include void main(){ int i,s,a[10],t,sum;double n;printf(“输入任意10个整数:n”);for(i=0;i<=9;i++)scanf(“%d ”,&a[i]);for(i=0;i<=9;i++)printf(“%d ”,a[i]);for(i=0;i<=9;i++){for(s=i+1;s<9;s++)if(a[i]>a[s]){t=a[i];a[i]=a[s];a[s]=t;}//实现10数升序排列 for(i=0,1<=9,i++)sum+=a[i];n=sum/10;printf(“10个数的最大是:%dn 10个数的最小是:%dn 10个数的平均是:%tn”,a[9],a[0],n);}

篇6:C语言初学者入门讲座

· 所需具备的背景知识

· 开发所需的基本环境

· 获得帮助的途径

· 通过一个实例了解基本步骤

Prerequisite 先决条件:

在Linux上编写 C 程序,至少要熟悉以下两方面的基础知识:

1. C语言的编程基础,至少要知道一些基本的语法,控制流程等编程常识。

对常用的标准 C 函数库有常识性的了解。

2. 对Linux/UNIX 的操作有常识性的了解,掌握常用的shell 命令,如 ls, cat, cp, mkdir …etc.

Environment 所需环境:

1. Linux/ Unix 的操作系统,也可以使用windows下的cygwin。

我们这里讨论的都是通过shell命令行进行操作的。那如果进入了图形界面的Linux 怎么办呢?只要打开一个终端命令,就和命令行环境完全一样了(打开开始菜单可以找到终端命令)。

2. 必备的开发工具:

1) 输入程序需要一个编辑器。常用的有 vi , emacs. 在命令行上输入 vi, emacs, … 就可进入编辑环境

关于 vi

关于 EMACS

2) C语言的编译器。常用的是GNU的c语言编译器 gcc(编译 C 程序), g++(编译 C ++程序)。

关于 gcc / g++

关于 makefile >>>>用于简化编译过程

这里有一片入门文章 Linux下C语言编程基础知识,可以先看一下

3) 调试程序的常用工具:gdb.

关于 gdb

Get help获得帮助:

关于 Linux 的文档是非常丰富的,

最快捷,方便,全面的资料就在你的机器里,不要浪费。

在命令行上输入shell命令 man 或者 info:

$man gcc >>>>这个命令可以获得GNU 的C语言编译器的文档。当然,他们是英文的。

关于 man

关于 info

网络上的资源也很多,多得以至于不知道什么才是自己最需要的。关于如何获得有价值的信息

看一下 loveunix 上的相关资源 >>>>

Basic steps 基本步骤:

1. 输入源代码

2. 编译,链接,运行

3. 调试程序

我们从最基本的 hello world 程序开始,实际操作一下:

1. 输入源代码

引用

$ emacs hello.c >>>>进入emacs 编辑器环境#include >>>如果你看不懂这个函数,就去好好的看c语言的书int main(){printf(“Hello World. ”); >>>>Emacs环境下,按下 Tab 键,有自动缩进功能exit(0);}

完成输入后,按住CTRL 键,按下 x, 再按下 c , 最后松开 CTRL。 >>>>程序保留并退出emacs 环境。

2. 编译,链接,运行

引用

$ gcc –o hello hello.c$ ./hello >>>>./ 指明了所执行程序的路径Hello World.$

一个linux平台上的c程序开发已经完成咯

3. 调试

如果要使用 gdb 调试程序,那么在上一步编译的时候,记得加上 –g 选项

引用

$ gcc –g –o hello hello.c$ gdb hello >>>>进入 gdb 调试环境

篇7:C语言初学者入门讲座

1. 查错

(1)如果出现语法错误,在编译的过程中系统就会给出相应的提示信息,但是由于C语言错误信息定位不是特别精确。例如,当提示第5行发生错误时,如果在第5行没有发现错误,从第5行开始往前查找错误并修改之。

(2)一条语句错误可能会产生若干条错误信息,只要修改了这条错误,其他错误就会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即每修改一处错误要运行一次程序。

(3)注意阅读出错信息,很多错误在提示信息中都是很容易识别的。

2. 常见的典型错误及分析

(1)书写标识符时忽略了大小写的区别。

例1:

编译程序出错提示是A是未定义变量。C语言严格区分大小写,对于大写A和小写a,系统会认为是两个不同的变量。很多初学者在书写时遇到像C和c这类大小写比较接近的标识符,常常不留意而造成错误。

(2)分号的处理不当。

例2:

在语句a=10后面缺少了分号,一般而言,C语言每一条完整的语句的后面都是以分号作为结束的,如果缺少,不会通过编译并会给出相应提示。但是,也并不是每一条C语言的语句后面都有分号,当出现了多余的分号,编译系统会通过,但是,程序运行的结果将会大相径庭。

例3:编程求100到1000之间的所有水仙花数并输出。(水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:1^3+5^3+3^3=153)

这个程序的运行结果是1000,原因就在于for语句的括号后面多了分号,因此循环体是一条空语句。

一般而言,像for, if, while小括号后面的语句体只要不是空语句,是不应该加分号的,do-while除外。

(3)使用scanf函数时&符号使用不正确。

例4:

在上述例题中,两条scanf语句的使用都出现了问题。在使用scanf函数进行读入数据的时候,输入列表是要求以变量名前加地址的形式出现的,但是,在数组中,数组名本身就是数组的首地址,所以str前面不再需要地址符号,应分别修改成

(4)变量使用之前未被定义或者定义数组的时候没有给出数组的大小。

例5:从键盘输入n个数,再顺序输出。

C语言在要求做变量定义的时候,不管是针对变量还是数组,其实质都是为了分配存储空间,便于数据的存取。对于变量来说,存储空间的大小是由其数据类型来决定的,但对于数组来说,其存储空间的大小是由其数据类型和元素个数两者共同确定,因此,在定义的时候必须同时指出数组元素的具体个数,否则系统无法计算出存储空间的大小。

对于例5而言,在这种未明确n值到底为多少的情况下,可以采取两种方式来进行解决:其一,使用内存分配函数calloc (n, size)分配一个长度为n,类型为size的连续存储空间,然后再使用指针访问的方式对数据进行读取;其二,在未知n为多大的情况下,尽可能将数组的大小定义的足够大,以确保在使用时不会出现越界。

例如:

(5)数组下标的越界问题。例如,对于有10个元素的数组a[10],在访问时可以使用的数组下标为a[0]-a[9],如果在程序中出现了printf("%dn",a[10]);编译系统不会报错,但是结果的输出是个无法预计的数值。

3. 结语

在使用C语言进行编程的过程中,经常遇到的错误不止这些,如果是语法错误,则根据编译系统出错提示去进行相应查找和修改即可,若非语法错误,那么就需要编程者去检查程序的结构、算法是否出现问题。本文只是针对初学者在编程过程中最容易出现的问题作了举例和分析,希望读者在以后的学习中,善于总结经验,尽量避免类似错误的发生。

摘要:C语言被称为介于低级语言和高级语言之间的一种功能强大的语言, 它在书写上比较自由, 并且除了语法错误, C编译器几乎不作运行时的错误检查, 而是将其留给了程序设计者, 由此导致其逻辑检查的不严格。本文对初学者在学C语言编程过程中容易犯下的一些常见的语法和非语法错误作了分析。

关键词:C语言,编程,错误

参考文献

[1]谭浩强.C语言程序设计.北京:清华大学出版社, 2006.

[2]谭浩强.C语言程序设计与上机题解.北京清华大学出版社, 2006.

[3]康牧, 赵治国.浅谈C语言中指针使用不当的危险性.洛阳师专学报, 2000, 4.

上一篇:慰问活动策划方案下一篇:大学生假期的调查报告