开学以来,从学习什么是程序、程序设计语言到了解C语言的基本框架,再到学习用C语言写一下简单的程序,已经对编程有了一个大致的认识。
下面是一些在学习中总结的经验与在学校与解答是常见的错误:
- scanf忘记加取址符,这个问题很常见,而且编译时不会有问题,很多同学在最初编程时都经常犯错。
- 初始化。这个问题经常会没有意识到,因为有些程序在运行时,变量本身在电脑中储存的值就是1或者0,因此程序运行没有出错。
例如:
#include<stdio.h>
int main()
{
int n;
int product;
scanf("%d",&n);
for(int i=1;i<=n;i++){
product*=i;
}
printf("%d",product);
return 0;
}
这个代码在运行时的确答案正确,因为电脑中product的值本身就为1,但如果换一台设备就有可能是错的,虽然是一个很小的细节,但也是非常重要的。尤其是对变量一上来就使用a++,a+=,a*=这类的运算。
3. 因为在数学学习上养成的惯性,我们有时会理所应当的认为数字与字母写在一起就是相乘,例如2a,会默认为它是2*a,所以在写程序时,忘掉了*号,导致错误。
4. 判断。在C语言中=与==是两种完全不同的意思。一定要注意条件判断时==不要写成=。例如a=b与a==b,前者是把a 的值赋给b,后者是判断a与b的值是否相同,为关系运算,其结果只有两种可能:true(1) or false(0)。因此在做if语句或者while循环的条件时,对于t!=0可以直接简写成if(t)和while(t)。
5. 有关于条件判断。不等式条件判断不可以连写,例如a<=b<=c,应该写成啊a<=b&&b<=c。(ps.=赋值可以连等a=b=c=0)
6. 标识符的命名。只能包含数字、字母、下划线,不能以数字开头,不能时C语言中的关键字,例如int if goto等等。
7. switch语句中,每个case语句后的break要记得加上,不然会执行接下来的case语句。
8. 整数和浮点数。*和/两种运算,当符号两边数字均为int 类型时,结果是int不会是double,若需要结果为浮点数则改变运算数字的类型或*1.0
9.
一些小tips:
(1)运用for循环,for(i=0;i<N;i++),i=0开始而不是i=1,在以后运用数组时会方便很多。
(2)运用变量t=0和t=1的转换简化判断
#include<stdio.h>
int main()
{
int x,y,result,t=1;
char c;
scanf("%d %c %d",&x,&c,&y);
switch(c){
case '+':result=x+y;break;
case '-':result=x-y;break;
case '*':result=x*y;break;
case '/':result=x/y;break;
case '%':result=x%y;break;
default:printf("ERROR");t=0;break;
}
if(t)
printf("%d",result);
return 0;
}