
1先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2按照《C语言程序设计入门学习六步曲》进行上机练习。
3在上机练习时要养成良好的编程风格。C语言的编程风格
4积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。
5及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。
6从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。
7 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。
出现问题原因清楚了,那么如何学习呢请你看C语言学习六步曲
在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。
第一步、验证性练习
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。
2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。
例如:将最简单的Hello World!程序
#include "stdioh"
int main()
{
printf("Hello World!\n");
return 0;
}
中的
printf("Hello World!\n");
中的Hello World!改成你的姓名,运行一下程序,看有什么变化?
再如求1+2+3+100的和的程序
#include <stdioh>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?
找出程序结果变化的原因,就加深了对C语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。
第四步、增强程序的调试能力
在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!
注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。
例如,将Hello World程序中语句
printf("Hello World!\n");
中的;改成中文的分号;
运行一下程序,看有什么结果?
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。
即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。
第五步、研究典型的C语言程序,提高程序设计能力
C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。
计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?
解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力
C语言源程序既不是应用软件也不是系统软件
它就是文本文件
如果要变成可执行文件,需要编译、链接
在不同的系统,例如Unix和Windows,生成的可执行文件是不同的,在Windows中,生成的可执行文件后缀为exe
但是,源代码是一样的,只是各自系统的编译器不同
实际上,编译器将文本形式的源程序翻译成机器能识别的机器序列,简单说就是0111001111
具体的建议了解低级语言和高级语言的历史
第一章 程序设计的基本概念
第一节 C语言的发展历史与特点
第二节 程序与程序设计
第三节 算法与算法的描述
第四节 C语言的上机 *** 作
思考题与习题
第二章 C语言程序设计基础
第一节 C语言的程序结构
第二节 数据类型
第三节 运算符与表达式
思考题与习题
第三章 C程序控制结构
第一节 C程序的三种基本控制结构
第二节 顺序结构
第三节 选择结构
第四节 循环结构
思考题与习题
第四章 数组
第一节 数组与数组元素的概念
第二节 一维数组
第三节 二维数组及多维数组
第四节 字符串与字符数组
思考题与习题
第五章 指针
第一节 指针与指针变量的概念
第二节 指针变量的定义和引用
第三节 指针变量与数组
思考题与习题
第六章 函数
第一节 函数的定义
第二节 函数的嵌套调用
第三节 数组作为函数参数
第四节 指针与函数
第五节 变量的使用范围与存储类别
第六节 不同文件中的函数使用
思考题与习题
第七章 编译预处理
第一节 宏定义
第二节 文件包含
第三节 条件编译
思考题与题
第八章 结构体与共用体
第一节 结构体基础
第二节 结构体数组
第三节 结构体指针
第四节 链表
第五节 位段
第六节 共用体
第七节 枚举类型与自定义类型
思考题与习题
第九章 文件
第一节 文件概述
第二节 文件的打开与关闭
第三节 文件的读/写
第四节 文件的定位
思考题与习题
第十章 程序设计方法
第一节 程序设计的基本概念
第二节 结构化程序设计方法
第三节 程序效率
第四节 程序设计风格
思考题与习题
附录
附录A C语言实验
附录B 标准ABSII码表
附录C C语言中的关键字
附录D 运算符的优先级与结合性
C语言程序设计题型分值分布如下:
1 单选题总共40道,每道题一分,其中基础知识共10道,总计40分;
2 程序填空题一般2到4道,看难度给分,总计18分;
3 程序改错题一般2到4道,看难度给分,总计18分;
4 程序设计题1道,根据答出步骤给分,答出越多分越高直至满分,总计24分。
拓展知识(考试内容):
1 C语言程序结构
明白如何运用main函数以及其他基础函数,会构建程序。知道源文件的书写格式,能看懂函数开始或结束的标志,能对基础程序注释且明白其作用。
2 数据类型与运算
了解C的数据类型与定义方法,熟知C表达式类型且会基本运用。知道C运算符的种类与优先级,懂得数据类型之间如何转换运算。
3 基础语句
懂得表达式语句、复合语句以及空语句,会调用输入输出函数,能根据要求正确写出输入输出格式的语句。
4 选择结构语句
熟练掌握if语句以及switch语句的用法,懂得选择结构如何进行嵌套。
5 循环结构语句
熟练掌握for语句、while或do-while语句、continue语句及break语句的使用方式,了解如何嵌套循环结构语句。
6 数组的定义与运用
会对基本的一维、二维数组定义,能初始化数组并会引用,掌握字符串与数组的运用。
7 函数
能对库中的函数进行基本调用,且熟知常用函数的作用及写法。知道函数的定义方法、类型与返回值,了解形参与实参的概念以及局部变量与全局变量的区别。
8 指针
了解地址与指针变量的概念,会基本运用指针,通过指针引用各类数据。
9 结构与联合
了解typedef的用法,会对结构体以及共同体进行定义与引用,可以通过链表对数据进行删除、插入以及输出。
#include <stdioh>
#include <stdlibh>
#include <stringh>
#define MAX_NUM 50
#define MAX_LINE 256
struct student {
char name[10];
float math;
float chinese;
float eng;
float aver;
char grade;
};
const char student_file = "studenttxt";
const char grade_file = "gradetxt";
int init(struct student s, int n);
int fun(struct student s[], int n);
void sort(struct student s, int n);
void display(struct student s, int n);
void save_student(struct student s, int n, const char file);
void load_student(const char file);
int main(int argc, char argv[])
{
int num = 0;
struct student st[MAX_NUM];
num = init(st, MAX_NUM);
printf("\n等级为D的人数: %d\n", fun(st, num));
save_student(st, num, student_file);
sort(st, num);
save_student(st, num, grade_file);
display(st, num);
printf("\n所有学生信息\n");
load_student(student_file);
printf("\n排序后的学生信息\n");
load_student(grade_file);
return 0;
}
/ 初始化 /
int init(struct student s, int n)
{
int num = 0, i = 0;
if (0 == s || 0 >= n || MAX_NUM < n)
return 0;
printf("请输入学生数量[不大于50]: ");
fflush(stdout);
scanf("%d", &num);
while (0 >= num || n < num)
{
fflush(stdin);
printf("无效的参数,请输入学生数量[不大于50]: ");
fflush(stdout);
scanf("%d", &num);
}
for (i = 0; i < num; ++i)
{
printf("请输入第%d个学生的信息: ", i + 1);
fflush(stdout);
scanf("%9s %f %f %f", s[i]name, &s[i]math, &s[i]chinese, &s[i]eng);
fflush(stdin);
}
return num;
}
/ 计算平均成绩并统计等级为D的人数 /
int fun(struct student s[], int n)
{
int i = 0, cnt = 0;
if (0 == s || 0 >= n || MAX_NUM < n)
return 0;
for (i = 0; i < n; ++i)
{
s[i]aver = (s[i]math + s[i]chinese + s[i]eng) / 30;
if (70 <= s[i]aver && 85 > s[i]aver)
s[i]grade = 'B';
else if (60 <= s[i]aver && 70 > s[i]aver)
s[i]grade = 'C';
else if (60 > s[i]aver)
s[i]grade = 'D';
else
s[i]grade = 'A';
if ('D' == s[i]grade)
++cnt;
}
return cnt;
}
/ 降序排列 /
void sort(struct student s, int n)
{
int i = 0, j = 0;
struct student tmp;
if (0 == s || 0 >= n || MAX_NUM < n)
return 0;
for (i = 0; i < n - 1; ++i)
{
for (j = 0; j < n - 1 - i; ++j)
{
if (s[j]aver < s[j + 1]aver)
{
tmp = s[j];
s[j] = s[j + 1];
s[j + 1] = tmp;
}
}
}
}
void display(struct student s, int n)
{
int i = 0;
if (0 == s || 0 >= n || MAX_NUM < n)
return 0;
printf("所有学生的信息如下: \n");
for (i = 0; i != n; ++i)
{
printf("%d name[%s] math[%1f] chinese[%1f] eng[%1f] aver[%1f] grade[%c]\n",
i + 1, s[i]name, s[i]math, s[i]chinese, s[i]eng, s[i]aver, s[i]grade);
}
}
/ 保存学生信息到指定文件 /
void save_student(struct student s, int n, const char file)
{
int i = 0;
FILE fp = 0;
char buf[MAX_LINE] = {0};
if (0 == s || 0 >= n || MAX_NUM < n || 0 == file)
return 0;
if (fp = fopen(file, "w"))
{
for (i = 0; i != n; ++i)
{
sprintf(buf, "%s %1f %1f %1f %1f %c\r\n",
s[i]name, s[i]math, s[i]chinese, s[i]eng, s[i]aver, s[i]grade);
fwrite(buf, 1, strlen(buf), fp);
memset(buf, 0x00, MAX_LINE);
}
fclose(fp);
}
}
/ 加载指定文件中的信息 /
void load_student(const char file)
{
char buf[MAX_LINE] = {0};
FILE fp = 0;
if (0 == file)
return ;
if (fp = fopen(file, "r"))
{
while (fgets(buf, MAX_LINE, fp))
printf("%s", buf);
fclose(fp);
}
}
通过对这一课题的设计和实现,我对Micosoft Visual C++环境进行了深一步的了解,并逐渐开始熟练Micosoft Visual C++环境的工作界面,以及对每一个快捷键的熟悉。并认识到,熟悉这些快捷键,极为便捷编写程序,但是还要更加熟悉。 编程时要养成良好的风格,注意相同内容的缩进和对齐。这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。 通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。 这个程序设计主要涉及到了C语言中的结构体、指针及文件 *** 作等内容,只有充分掌握了C语言中的结构体、指针及文件 *** 作等内容,才有可能组织好这些代码,使之符合运算逻辑,得到理想的结果。 善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际 *** 作必将成为我们人生旅途上一个非常美好的回忆! 回顾起此次课程设计,至今仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍。 同时,在老师的身上我学得到很多实用的知识,在此表示感谢!同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
以上就是关于C语言程序设计中应注意哪些问题全部的内容,包括:C语言程序设计中应注意哪些问题、C语言开发应用程序_C语言程序设计与应用、c语言程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)