忙碌的周一如期而至,带着她的“安比”,夏日的大雨,来得快也去得快——就像编程刚写好代码,就出来了一堆error,成就感被瞬间浇灭,还好改错也是蛮有趣的。
回到代码上
今天讲的是C语言的基本程序结构。
基本的三种结构在这就不赘述了,我只写写我这几课的收获。
首先贴几个tips
first :switch语句,“break;”!!!对初学者来说,这是最常见也最简单的错误,该语句使得switchcase的选择性的得以发挥,当然根据具体功能与分类,不加有时也是必须的;
secend:switch之default的应用,简而言之除case代码选中的几个有效点之外,所有的输入都会用到default,起到“垃圾箱”的作用;
third:根据具体程序的要求,可以灵活使用整除,取余运算符对大量类似数据进行简化,从而使case的数量大大减少,当然要不影响应有的功能性;
forth:for语句的原理。一个完整的for语句,有三个表达式,1是该程序的入口,无论如何都会先执行一次,也仅执行一次,表达式2是该语句的选择模块,每过一个循环进行继续循环与否的判定,满足条件则进行花括号内具体操作,表达式3起到计数功能。总而言之一个for语句在满足条件下会按以下方式循环:表达式1→表达式2→功能模块→表达式3→表达式2。。。。。直到表达式2不成立或者break语句之类的控制语句。
差不多就是这些,下面贴一下练习的小程序:
main()
{int i=1,j=0,m=1,n=2;
switch(i++)
{
case 1:
m++;
n++;
case 2:
{
switch(++j) // switch 语句嵌套
{
case 1:
m++;
case 2:
n++;
}
}
case 3: m++;n++;break;
case 4: m++;n++;
}
printf("m=%d,n=%d\n",m,n);
}
最后m,n,j,i的值是多少?
#include <stdio.h>
int main()
{
char op;
float a,b;
scanf("%f%c%f",&a,&op,&b);
switch(op)
{
case '+':
printf("=%5.2f\n",a+b);
break;
case '-':
printf("=%5.2f\n",a-b);
break;
case '*':
printf("=%5.2f\n",a*b);
break;
case '/':
if(0 == b)
{
printf("b = 0\n");
}
else
{
printf("=%5.2f\n",a/b);
}
break;
default:
printf("op is error\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int num;
scanf("%d",&num);
int i;
int count = 0;
for(i = 2;i < num;i++)
{
if(0 == num % i)
{
count++;
}
}
if(0 == count)
{
printf("True : %d\n",num);
}
else
{
printf("False : %d\n",num);
}
return 0;
}
emmmmmmm。。。。
还有一点福利送给鼓励和关注我的小伙伴。
关于scanf命令所用的缓存空间,该语句实际执行代码是默认被写在头文件stdio.h中的,stdio,字面意思,std=标准的,i=in=输入,o= out=输出,所以这个头文件包含的都是“标准输入输出命令”。回到正题,scanf生成的缓冲区(阻塞),是在运行到该命令的时候创建?还是只要一个程序里用到了scanf命令,就会在开始运行程序的时候给与一个空间?答案显然是后者。
王屋,太行,唯愚公者,方能子孙不殆,移石开山;代码,命令,诸君共勉,才可精益求精,止于至善!