① c语言程序设计基础叶文珺版答案
初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。
出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】
特别提醒:在使用本方法之前一定要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。
第一步、验证性练习
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。 单击此处查看【C语言的编程风格】
使用《Turbo C/C++ for Windows 集成实验与学习环境》软件可以很方便地看着软件集成的《C语言入门教程》输入练习其中的程序例题。具体使用方法参见软件帮助部分。
初学者最容易犯的错误是:
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。
2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹配、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。
例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的printf("Hello World!\n");中的Hello World!改成你的姓名,运行一下程序,看有什么变化?
再如求1+2+3...+100的和的程序
#include <stdio.h>
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语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。
第四步、增强程序的调试能力
在《Turbo C/C++ for Windows 集成实验与学习环境》集成的教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!
注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!
例如,将Hello World程序中语句printf("Hello World!\n");中的;改成中文的分号;运行一下程序,看有什么结果?
C语言的错误信息的形式:(下面例子是的Turobo C2.0错误信息,如图1)
错误 文件名 行号 冒号 错误内容
↓ ↓ ↓ ↓ ↓
Error E:\WinTc\WinTc\frist.c 5 : Function call missing) in function main
C语言的错误信息的形式:(下面例子是Visual C++6.0 错误信息,如图2)
文件名 行号 冒号 错误代码 冒号 错误内容
↓ ↓ ↓ ↓ ↓ ↓
e:\wintc\wintc\frist.c ( 5 ) : error C2143 : syntax error : missing ')' before ';'
软件集成了高校教学用的最多的两个编译器Visual C++6.0和Turbo c 2.0,支持C、标准C、C++、标准C++、WINDOWS C程序的编辑、编译、和调试。软件根据用户输入程序的类型智能选择编译器,不用使用者干涉。
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。 即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就是差别。
第五步、研究典型的C语言程序,提高程序设计能力
经过上述过程的学习,我们已经学会了C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后就可以研读别人编写C语言经典程序,看懂别人是如何解决问题的,学习解决问题的方法和程序设计技巧,提高自己的程序设计能力。
在软件中有50多个典型的源程序,研究它的实现方法,提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言程序设计的能力。
C语言课程设计的目的:是让学生综合利用所学的C语言知识,解决一些接近实际问题题目,提高程序设计和调试较大程序的能力,为进一步进行软件开发打下坚实的基础。
最后送C语言初学者一句话来共勉:首先要相信自己是有能力学好C语言的,然后不惜一切代价把这种能力表现出来,你就成功了。做任何事,何尝不是这样呢?兴趣是学习C语言的最大动力,学习方法给你指明努力的方向,让你事半功倍。如果你感觉对你有帮助的话,请回帖支持,让更多的朋友知道它,谢谢支持!!!
② c语言编程水手分椰子问题,我自己写了一段程序,答案不对
这道题我也想了很久,看了网上很多方法都是直接给出公式算,我自己找了下这个问题的规律,用迭代和逆向递推的方法解决了这个问题,具体代码如下:(程序附有注释,建议大家动笔画画图,看看不同水手个数的情况是怎么样的,这样就可以理解了)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
intn;//水手个数
printf("Inputn(1<n<=5): ");
scanf("%d",&n);
//增加程序的健壮性
if(n>1&&n<=5)
printf("y=%d ",Coconu(n));
else
printf("Error! ");
system("pause");
}
intCoconu(intn)
{
inti;//内层循环变量
intj=1;//外层循环变量,
ints;//原来椰子的个数
intr;//迭代变量
do//第一层循环:增加最后一名水手平均分完之后的每一份椰子数,从1开始(1最小)
{
r=j*n+1;//最后一名水手总的椰子数
//第二层循环:利用迭代及反向递推的方法求出原先的椰子数
for(i=n-1;i>0;i--)
{
//在迭代过程中,如果逆向递推出现不能整除的情况,则跳出循环。(因为椰子必须是整个的)
if(r%(n-1)!=0)
break;
//迭代
s=(r/(n-1))*n+1;
r=s;
}
j++;
}while(i!=0);//i=0则表示完成了循环,整个循环完成s才是最终的原先的椰子个数
returns;
}
③ C语言二树叶子结点
这个画一下就知道了。
第一层 度为2的一个
第二层 2个
总计五个度为2 的,那么第三层就是2个度为2 的节点 另外两个为叶子节点。
第四层,4个叶子节点。
总计6个。
这个是不存在度为1 的情况。
事实上,度为1的节点个数,不影响叶子节点个数的。
④ 芜湖学编程哪个机构最好,孩子十岁,想学C语言,不知道哪个机构靠谱点儿
十岁的先学scratch或者python,Java也行啊.
C不是特别友好,不建议一开始就学,容易枯燥
网上看看教程就行了,报班就算了.
⑤ 学习C语言简单吗
学习任何一门语言都是不容易的,但是只要坚持有恒心,最后一定会有所成功。
设计语言中也是有[1] “单词”,“语法”,“语义”三部分组成,其中跟人类语言一样,“单词”“语法”是基础,而为达到交流的目的“语义”是整个程序设计语言的重点。当然相对人类语言(以英语为例)而言程序设计语言(以C语言为例)显然要有简单得多的组成,所以这里我们要首先确立自己对学好程序设计语言的信心。
1、基础, C语言的单词是由26个英文字母、数字(0,1,2……9)、运算符以及其他特殊符号组成,所以相比而言学习C语言是多么的幸福。
“语法”,在英语中是如常见构词法、时态、常用句型、特殊用法、固定用法等等(呵呵,不是语言专家如有兴趣可以参考英语语法书籍),仅拿构词法来说动词后面加er就变成名词(work-worker),名词后面加y就变成形容词(wind-windy)等十多种变换还要记忆些特殊变换,复杂且繁琐,假如算上时态、句型等那就更复杂了。在C语言中也同样也存在有语法,比如标识符、常量、表达式、数据定义、函数定义、变量初始化、语句构成、预处理命令等大致8种语法,如标识符[2]可由字母、数字以及下划线组成,且必须以字母或下划线开头,区分大小写,另外在不同的编译器中字符数目有不同的规定,一般为7个字符。不过这里有些可能会被忽略的就是书写格式,在C语言中书写格式也是需要被注意的,因为格式也可以当作C语言的语法项目,如语句是以分号‘;’作为结束的标志的而不是以换行作为结束标志.
综上所述要学好一门程序设计语言首先就要象学习英语一样先熟记至少要熟悉这门语言的“单词”和“语法”然后才能谈得上使用,俗话说“万丈高楼平地起”,学好C语言的必要前提就是先打下坚实的C语言基础.
2、重点
“语义”即语句的意思、含义。同人类语言一样,程序设计语言最重要的目的还是“交流”,所以写一段没有任何作用的代码就如同说一句没有任何意思的话是没有意义的,在这一点上两者是共同的,至于在其他某些方面两者也有惊人的相似之处,不过与人类语言相比,程序设计语言毕竟是与计算机交流,交流对象计算机与人类的不同也决定了程序设计语言与人类语言还是有所区别,甚至可以说是存在巨大的“鸿沟”,这也就是学习程序设计语言的重点。
首先明确,即要在与计算机交流时“语义”必须明确,否则计算机将无所适从,因此作为交流工具的程序设计语言的“语义”也必须是能够明确无二义的。其次正确,包括正确的输入以及正确的逻辑。由于计算机
输入测试用例也能够完全正确,看看源程序,其中增加了一个标志位便把所有的情况给考虑进去了,相比前一个程序,程序2就是直白的描述了解题的思路,而程序3看起来好象不好理解但似乎更能满足“天才程序员”的欲望,这也就是编程时使用的一些小技巧。
总体比较三个程序,可以说类似程序1的错误——逻辑错误是我们程序员比较容易犯的,也是在编程调试过程中最费时间的,至于语法错误编译器可以很快的给我们找出错误的地方程序2逻辑正确但相比程序1思路要更难想到,程序3思路不但正确而且还在编程的过程中使用了一些编程技巧,所有这些开阔的逻辑思路(解决问题),快速的调试方法及过程(发现错误).
3、两者之间的关系
综合上面的叙述,我们把编程看成程序设计语言的“单词”“语法”“明确的语义”“正确的语义”四个部分,可以看出前面三个部分是几乎所有的程序设计语言自身所具有的,“单词”“语法”不同的程序设计语言有所不同,但如果你仔细观察所有的程序设计语言,可以分成几类,而且有很多地方也有相通的地方,有点象一通百通的味道,这也就是为什么很多有经验的程序员可以在很短的时间就能熟悉其他语言的原因。最后“正确的语义”包括开阔的,正确的逻辑思路以及发现并纠正错误的能力则是属于我们自己的,这也是我们区别于其他人的地方,这些都需要在经常性的编程实践中去积累去开阔,所以是所应该关注的重中之重。
书本是纲领,我们首先要熟悉一门语言的粗枝大叶,在编程的过程中不至于老是去翻书查找一门语言的基本语法,比如说函数的传递方式,函数调用的一些特点,这样不仅非常浪费时间而且一直困扰于语法中使得自己有种身缘“庐山”中的那种非常迷茫的感觉。因此编程实践同样不可少,编程实践不仅可以“让语义正确”即开阔编程思路,发现错误(调试),累计编程技巧,而且可以在编程过程中熟悉这门语言,熟悉这门语言的细节部分,但也请记住这些细节虽然重要,但也仅仅是细节。当然光看书,光有理论那也是不行的,有“纲领”而没有“章程”,有“纲领”而没有实施那同样也是没用的,毕竟实践是检验真理的唯一标准,实践过程中给理论修枝剪叶。
总得来说熟悉一门程序设计语言的语法是编程实践的先行,而编程实践是可以更好促进对程序设计语言基本语法知识的理解和熟悉。
⑥ 芜湖地区国家计算机二级C语言考试地点在芜湖吗
当然!你在哪里报名就在哪里考试!
我也正打算报名!可就是不知道在哪里报名,在高校内,我又不认识路,唉郁闷!
希望那个你能一次过,记得要在本月27号前报名,因为截至日期是6月27日
⑦ 芜湖学习C语言
C 很多编程培训的单位都有培训的 但是还是要靠自己去琢磨拉 .
⑧ C语言求叶子结点数的方法
/*二叉树遍历时遇到没有孩子分支的情况下就算做一个叶子即可!*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagBTree {
int data;
struct tagBTree * left;
struct tagBTree * right;
} BTree;//end struct BTree
BTree * CreateLeaf(int number)
{
BTree * l = (BTree*)malloc(sizeof(BTree));
l->data = number;
l->left = 0;
l->right = 0;
return l;
}//end CreateLeaf
void append(BTree ** root, int number)
{
BTree * t =0;
if (!root) return ;
t = *root;
if (!t) {
*root = CreateLeaf(number);
return ;
}//end if
while(t) {
if(number == t->data ) return ; //ignore plicated elements.
if(number < t->data ) {
if(!t->left ) {
t->left = CreateLeaf(number);
return ;
}//end if
t = t->left ;
}else{
if(!t->right ) {
t->right = CreateLeaf(number);
return ;
}//end if
t = t->right ;
}//end if
}//end while
}//end append
int global_leaves = 0;
void PrintLeaf(const BTree * root)
{
if (!root) return ;
if (root->left ) PrintLeaf(root->left );
printf("%d\t", root->data);
if (root->right ) PrintLeaf(root->right );
if(!root->left && !root->right ) global_leaves ++;
}//end printLeaf
void PrintTree (const BTree * root)
{
global_leaves = 0;
printf("[\t");
PrintLeaf(root);
printf("]\n");
printf("total leaves: %d\n", global_leaves);
}//end printTree
BTree * global_root = 0;
int main(void)
{
int x = 0;
printf("Enter some numbers ended with 0:");
do {
scanf("%d", &x);
append(&global_root, x);
}while(x);
PrintTree(global_root);
return 0;
}//end main
⑨ 全国二级C语言考试难不难,通过率为多少
1、C语言二级考试是比较基础的国家认证的考试,虽然考察的是基础,但是参加考试的往往都是新手,因此可以说并不简单,特别是C语言,本身并不容易懂,因为C语言几乎融合了所有计算机专业基础学科的内容。
2、通过率,每年都不一样,而且参考通过率没有任何意义。
3、如果只是为了拿证,不建议考二级C语言证,如果是计算机专业的,那必须得细致的学习,自己多做练习,多去参考别人的源码,总结而来,即多读和多写。
4、附上二级C语言考试的主要内容:
一、C语言程序的结构
1. 程序的构成,main函数和其他函数。
2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。
3. 源程序的书写格式。
4. C语言的风格。
二、数据类型及其运算
1. C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。
2. C运算符的种类、运算优先级和结合性。
3. 不同类型数据间的转换与运算。
4. C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。二级各科考试的公共基础知识大纲及样题见高等教育出版社出版的《全国计算机等级考试二级教程——公共基础知识(2013年版)》的附录部分。
三、基本语句
1. 表达式语句,空语句,复合语句。
2. 输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1. 用if 语句实现选择结构。
2. 用switch语句实现多分支选择结构。
3. 选择结构的嵌套。
五、循环结构程序设计
1. for循环结构。
2. while和do-while循环结构。
3. continue语句和break语句。
4. 循环的嵌套。
六、数组的定义和引用
1. 一维数组和二维数组的定义、初始化和数组元素的引用。
2. 字符串与字符数组。
七、函数
1. 库函数的正确调用。
2. 函数的定义方法。
3. 函数的类型和返回值。
4. 形式参数与实在参数,参数值的传递。
5. 函数的正确调用,嵌套调用,递归调用。
6. 局部变量和全局变量。
7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
八、编译预处理
1. 宏定义和调用(不带参数的宏,带参数的宏)。
2. “文件包含冶处理。
九、指针
1. 地址与指针变量的概念,地址运算符与间址运算符。
2. 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。
3. 用指针作函数参数。
4. 返回地址值的函数。
5. 指针数组,指向指针的指针。
十、结构体(即“结构冶)与共同体(即“联合冶)
1. 用typedef 说明一个新类型。
2. 结构体和共用体类型数据的定义和成员的引用。
3. 通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。
十一、位运算
1. 位运算符的含义和使用。
2. 简单的位运算。
十二、文件操作
只要求缓冲文件系统(即高级磁盘I/ O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。
1. 文件类型指针(FILE类型指针)。
2. 文件的打开与关闭(fopen,fclose)。
3. 文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf 函数的应用),文件的定位(rewind,fseek函数的应用)。
⑩ c语言难么
c语言相对来说,在大学里面作为基础课程是比较难得,如果只是为了考试,多做题目得分不是很难,但是如果应用,这个牵扯到好多相关信息,比如线代矩阵,数据结构,算法,当然还有比如常用的傅里叶级数相关的高数。所以如果工作用的比较熟练的,还是不容易的。,特别是c语言中的数组与指针,链表这一块,还是有难度的,而且是重点。
C语言也是C++的重要基础,如果C语言熟练的话,C++的课程切人肯定不难。