关于C语言程序的问题

作者&投稿:靳吉 (若有异议请与网页底部的电邮联系)
在C语言编程中应该注意哪些问题~

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 "stdio.h"
int main()
{
printf("Hello World!
");
return 0;
}
中的

printf("Hello World!
");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d
",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!
");

中的;改成中文的分号;

运行一下程序,看有什么结果?




调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。



第五步、研究典型的C语言程序,提高程序设计能力


C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.

#include int main(){ int a,b,c,d,e; for(d=100;d<=999;d++){ a=d/100%10; b=d/10%10; c=d%10; e=a*a*a+b*b*b+c*c*c; if(d==e){ printf("%d
",d); } } return 0;}

C语言中允许使用反斜杠来进行字符转义,反斜杠称为转义字符,其后允许跟8进制数、16进制数、和其他字符。规定如下:

  1. 后跟8进制数,不能有8以上的数,最多三个

  2. 后跟16进制数,以x开头,最多两个

根据以上信息,判断

a='\';  错误,紧跟斜杠的是被转义的,所以,第二个单引号被转义后,导致语句不完整

b='\xbc'; 正确

c='\0xab' 错误  

d='\023'; 正确

A 不对  B不对  C不对  D正确,选D



A说的对,'\'不是一个完整的字符。

BD是正确的

A会导致程序出错


为什么C语言编写的程序运行时闪一下就没了?
在主函数的末尾,添加一行system("pause")命令,这将暂停程序的执行,使窗口保持打开状态。这样,当你再次运行程序时,它将不再立即关闭,而是停留在屏幕上,直到你手动关闭它。通过这样的修改,你就可以成功解决C语言程序运行时一闪即逝的问题,使其能够稳定地运行。记住,确保正确处理程序的生命周期管理...

C语言程序结果小问题
100 30 50 全局变量x被赋值30作用域为从定义位置开始到程序结束。语句块定义的x被赋值100作用域为从定义位置开始到语句块结束。两个x作用域重叠,但在语句块中定义的变量会屏蔽外部的变量。所以传入sub()函数的x是100。100>50?100:50 的结果是100。因此第一个输出是100。而语句块变量作用域只在...

关于c语言程序设计的问题求大神帮忙!万分感谢!
答:编制并运行程序的“四步曲”让我们用VC6先来编制一个最简单的程序,其功能是向屏幕上输出一个字符串“Hello World”。程序虽小,但与编制运行大程序的整个过程是相同的,都包含如下所谓的“四步曲”:(1)编辑(把程序代码输入,交给计算机)(2)编译(成目标程序文件.obj)编译是把高级语言变成计算机...

C语言程序运行程序出现问题 为什么排序后数组元素都变了
排序程序哪里访问了数组外的元素呢,这里,在insert函数中,for循环,当i=num-1时,j>=num-i-1;也就是j>=0;当j等于0时,arr[j-1]就等于arr[-1],就访问到数组外的元素了.解决办法也很简单,把insert函数中,for-j循环中的 j>=num-i-1;改成j>num-i-1; 去掉等于号就行了.完整的C语言程序...

关于c语言程序方面的问题
1)c=a ,等于4,这个没问题吧。2)d=b; unsigned的取值范围是(0---65535),它不能表示负数。但在计算机中负数都以补码的形式存在,补码是原码按位取反后再加1,例如-3,它的原码3,二进制表示为(16位,和操作系统有关)0000000000000011,按位取反后位1111111111111100,再加1变成...

C语言程序设计中应注意哪些问题
这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。 注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!! 注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!

C语言程序设计有关问题!
1: 要是main函数返回值是int型的,那就要return 0或者其他数字。要是是void main(){}的话,就不用填,或者return退出。2:你的1E2是浮点数,所以是100.0。 要是是整形的话,就是100了 3:是“1.23450E+2”而不是“1.2345E+2”的原因是浮点数可以精确小数点后5位。要是只想输出1.2345...

C语言程序问题,求详解
include<stdio.h>main(){ int x=1,y=2,z=3; if(x>y){if(y<z) printf("%d",++z); else printf("%d",++y);}printf("%d\\n",x++);}if(y<z)else 是一个语句 如果if(x>y)为真 才执行括号里面。所以没有输出z和y的值 只执行了一个输出函数 printf("%d\\n",x++);这个...

C语言编程序新手问题
你的scanf("%d%d",&x,&y); 这一句改为scanf("%d %d",&x,&y);就好了!输入的时候两个数之间要用空格隔开!运行结果看我的截图!

我的c语言程序出现下面问题怎么办
首先:给你一个建议,C程序尽量不要用中文命名和不要用中文路径,这样或许会带给你不必要的麻烦。你可以用英文缩写,或者用传说中的汉语拼音……你这样贴出来ERROR信息,别人只能断章取义……好,我就断章取义一把:1)F:\\vc++安装文件\\MyProjects\\大奖赛现场统计\\统计源程序代码.cpp(51) : error ...

馆陶县13856954224: 关于C语言的6个问题 -
矣奇龙胆: 事实上,您问的问题比较泛,如果结合使用的编译器类型和具体例子来问会比较好些.下面也只是泛泛而谈.1、域宽小于实际宽度时,通常输出结果以实际宽度为准,如果需要以域宽来输出,那么实际结果需要截断.比如将结果以实际宽度输出到某个字符数组中,再截断.2、默认的域宽为8位,精度为6位.3、精度说明大于实际精度时,输出补余;小于实际精度时,输出截断.4、FLOAT的最大精度是10的负44次方;DOUBLE的最大精度是10的负323次方.5、整型数据的符号位出现在最高字节的最高位;浮点型数据则出现在字节中间的某个位上.不明白什么叫如何处理符号位?6、多余的小数位是截断和舍入取决于不同的编译环境.应当结合自己使用的编译环境做一下测试即可明白.

馆陶县13856954224: 有关C语言编程的问题
矣奇龙胆: 这么写就可以了: 在最前面加上#include<stdlib.h> 然后在main()函数最后加上: system("pause"); 这样运行完毕之后就不会自动退出,而会等待你确认 比如,这么写一个程序(用于计算从1到n的连加和): #include<stdio.h> #include<...

馆陶县13856954224: 有关c语言编程的问题 -
矣奇龙胆: 要有通用性的话建议把各个功能写成函数,方便调用和重用.至于界面美观和操作性就要看你制作界面的程度了

馆陶县13856954224: 关于C语言的程序问题
矣奇龙胆: 恩 书上说不提倡用goto语句是因为如果用那个循环的话会导致逻辑有点乱 用在这里还是不错的 另外 菜单你是用SWITCH之类的做的吧?直接做成函数,在菜单函数里调用其他函数,主函数设置一个循环调用菜单函数就可以了~~

馆陶县13856954224: 关于C语言编程的一些问题
矣奇龙胆: 一些小问题. 帮你改正了. 你看看加粗的部分 #include <stdio.h> void main() { int f(int x); int a,b; scanf("%d",&a); b=f(a); printf("%d",b); } int f( int x ) { int c,sum = 0;if ( x < 10 ) sum = x; else { for( x; x; x=x/10 ) //条件错了.{ c=x%10;//sum=0; //每次循环都将sum置0了. //x=x/10; //for的步长就是x/10 sum=sum+c; } }return(sum); }

馆陶县13856954224: 关于C语言的问题~~~ -
矣奇龙胆: getchar()函数是从输入缓冲区中读取数据,同理putchar()也是,也就是说程序执行时,你被允许输入一串数据,它们都会保存在缓冲区中,然后这两个函数分别依次从中读取.所以实际效果是字符串. 如...

馆陶县13856954224: 关于C语言的问题,新手,勿喷 -
矣奇龙胆: while (c=getchar()!='\n')改为:while ((c=getchar())!='\n') /* c=getchar() 两端加个“运算优先级要高于 “=”故先计算 getchar() !=...

馆陶县13856954224: 关于C语言的问题... -
矣奇龙胆: C语言是一种计算机程序设计语言.它既有高级语言的特点,又具有汇编语言的特点.它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不 依赖计算机硬件的应用程序.因此,它的应用范围广泛. C是结构...

馆陶县13856954224: 关于C语言的问题?
矣奇龙胆: n=i=2,++i,i++的值为多少 这个主要考察++前缀和++后缀该题求的结果是i++的值为多少 ++前缀表示先加1 再求值 ++后缀则相反 先求值 后加1所以答案是3a=(3*5,a+4); 这个主要是考察 ,运算符逗号运算符的顺序是自左向右,逐一执行,最后得到的表达式的值为最右边表达式的值所以执行顺序为3*5,a+4(3*5得到了执行,但是对于最终表达式求值无意义)所以printf输出为14另外发了链接,如果还是不太清楚,可以看看 http://deshunfan.blog.163.com/blog/static/3424410120101054494688/

馆陶县13856954224: 关于C语言的编程小问题
矣奇龙胆: #include <stdio.h> void main() { float array[10]; float max,min; float count=0; int num=0; float aver1,aver2; for(int i=0;i<10;i++) { scanf("%f",&array[i]); } max=min=array[0]; for(int i=1;i<10;i++) { if(max<array[i]) { max=array[i]; } if(min>array[i]) { min=...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网