- 有的编程语言,源代码经过编译后形成目标代码,但是这样的目标代码不能直接在CPU上执行,而是需要由一个仿真器程序来解释执行。这样的执行方式是解释执行。
- 函数名main前面的void或者int表示的是函数类型,也决定了返回值(通过函数中的return语句返回的值)的类型。
当函数类型为int时,函数类型为“整型”,必须返回一个int类型的数据,可以是0可以是100000,只要是int类型的就可以。 当函数类型为void类型,即函数类型为“空类型”,那么函数不能提供返回值,只能写“ return; ”或者不写return语句。而不能返回一个int型或其他类型的数据。
if else
if(exp1)
st1;
else if(exp2)
st2;
else
st3;
- 在if或else后总是用{};
- if(exp)后不加分号;
- exp判断条件里0或1;
- 单一接口:条件输出最好判断完最后再输出;
- 级联的if-else if(else对齐)
switch语句
switch(控制表达式)
{
case 常量:
语句
……
case 常量:
语句
……
default:
语句
……
}
- 控制表达式只能是整数型的结果;
- 常量可以是常数,也可以是常数计算的表达式;
- case决定开始,break决定结束,无break会顺序执行;
计算之前先保存原始的值,后面可能会有用(定义中间变量) 过程:变量—>算法—>流程图—>程序
- 随机数 rand()
- sum、count都是整数,在输出sum/count时,可以写成1.0*sum/count
整数的分解
一个整数是由1至多位数字组成的, 如何分解出整数的各个位上的数字, 然后加以计算 . 对一个整数做%10的操作, 就得到它的个位数; . 对一个整数做/10的操作, 就去掉了它的个位数; . 然后再对2 的结果做%10 , 就得到原来数的十位数了; . 依此类推。
for循环
- (初始条件;循环继续的条件循环;循环每轮的动作)
- for(;条件;)==while(条件)
Dev C++中C语言不能使用For(int i=0;;)的声明
不允许直接在for(; ; )中声明变量
原因:C99标准以前的C标准是不支持临时变量在for循环中定义的
解决方法: 1.先声明变量后使用 int i; for(i=0; ; ) 2.在Dev C++中设置 step1 工具->编译选项->编译器选项卡中,在"编译时加入以下命令"复选框前打钩,里面输入命令 -std=c99在这里插入图片描述 step2 工具->编译选项->代码生成/优化选项卡中,在C编译器->支持所有ANSI C标准上选NO在这里插入图片描述 参考资料 https://blog.csdn.net/artechtor/article/details/1788699
循环类型选择
有固定次数 | for循环 |
---|
必须执行一次 | do while 循环 | 其他情况 | while循环 |
break和continue只能对其所在的那层循环做 质数(素数)定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 1不是素数
接力break
#include<stdio.h>
int main()
{
int x;
int one,two,five;
int exit=0;
scanf("%d",&x);
for(one=1;one<x*10;one++){
for(two=1;two<x*10/2;two++){
for(five=1;five<x*10/5;five++){
if(one+two*2+five*5==x*10){
printf ("可以用%d个1角加%d个2角加%d个5角得到%d元\n",one ,two, five, x);
exit=1;
break;
}
}
if (exit) break ;
}
if (exit) break ;
}
return 0;
}
goto
#include<stdio.h>
int main()
{
int x;
int one,two,five;
int exit=0;
scanf("%d",&x);
for(one=1;one<x*10;one++){
for(two=1;two<x*10/2;two++){
for(five=1;five<x*10/5;five++){
if(one+two*2+five*5==x*10){
printf ("可以用%d个1角加%d个2角加%d个5角得到%d元\n",one ,two, five, x);
goto out;
}
}
}
}
out:
return 0;
}
|