int main()新标准中是int 而非void
一个c程序中只有一个主函数,main是唯一入口
printf();
return 是函数的返回值,函数类型不同,返回值也不同
良好规范
1、一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行;2、函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;
3、括号要成对写,如果需要删除的话也要成对删除;
4、当一句 可执行 语句结束的时候末尾需要有分号;
5、代码中所有符号均为英文半角符号。
(半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字
,.?'! ……这些是半角的
,。?‘! ……这些是全角的
全角是中文的标点.半角是英文的吧.
在电脑编程语言中,只能用半角,不能全角.计算机只支持半角)
C语言注释方法有两种:
多行注释: /* 注释内容 */
单行注释: //注释一行
C 语言规定,标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字符必须是字母或下划线。在使用标识符时还有注意以下几点:
(1)标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。
(2)标识符是严格区分大小写的。例如Imooc和imooc 是两个不同的标识符。
(3)标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。
(4)标识符不能是C语言的关键字。想了解更多C语言关键字的知识,请查阅WIKI。
变量名和标识符的命名规范完全相同。%d在后面会有详细讲解
注意:在定义中不允许连续赋值,如int a=b=c=5;是不合法的。
变量的赋值分为两种方式:1.先声明再赋值 2.声明的同时赋值
printf("小明身高%f%c\n", height, unit);注意%f%c中间没有逗号
以上是直接常量 无需声明
还有一种符号常量
#define 标识符 常量值 常量是不可改变的 防止他人的篡改 符号常量的标示符一般习惯使用大写字母,变量的标示符一般习惯使用小写字母,加以区分。
#include <stdio.h>
#define POCKETMONEY 10 //定义常量及常量值
int main()
{
// POCKETMONEY = 12; //小明私自增加零花钱对吗? 不注销掉是不对的 因为常量不可更改
printf("小明今天又得到%d元零花钱\n", POCKETMONEY);
return 0;
}
自动类型装换 字节小的可以向字节大的转换 但是反之不可以 遵守ASCALL码
#include <stdio.h>
int main()
{
char c = 'a';
int n = c; //将c赋值给n
float f = c ; //将c赋值给f
double d = c ; //将c赋值给d
printf("%d\n",n);
printf("%f\n",f);
printf("%lf\n",d);
return 0;
}
强制类型转换
在使用强制转换时应注意以下问题:
1、数据类型和表达式都必须加括号,如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
2、转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
3、强制转换后的运算结果不遵循四舍五入原则。
#include <stdio.h>
int main()
{
double num = 2.5; //定义浮点型变量num并赋值为2.5
printf("num的整数部分是%d\n",(int)num);
return 0;
}
除法运算中注意:
如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000。
取余运算中注意:
该运算只适合用两个整数进行取余运算,如:10%3 = 1;而10.0%3则是错误的;运算后的符号取决于被模数的符号,如(-10)%3 = -1;而10%(-3) = 1。
注:C语言中没有乘方这个运算符,也不能用×,÷等算术符号。
#include <stdio.h>
int main()
{
int x = 0;
printf("x=%d\n",x++);
printf("x=%d\n",++x);
return 0;
}
%取余和/除法谁在前面先算谁
分析:定义整型变量a并赋值为3,a += 5;这个算式就等价于a = a+5; 将变量a和5相加之后再赋值给a
注意:复合运算符中运算符和等号之间是不存在空格的。
==是相等 =是赋值 !=是不等
计算机看不懂 1<x<7 应该x>7 && x<100;
&& || !
不低于 是 >=
三目运算符
表达式1?表达式2:表达式3;
先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。
//输出y小编就打车回家了,输出n小编就不能打车回家
printf("%c\n",money>cost?'y':'n');
判断是否是闰年:被4整,若是整数年要能被400整除
if
if else if
if else if else
#include <stdio.h>
int main()
{
int score = 7200;
//完善一下代码
if(score>=10000)//因为一个括号打成全角了 找了半天
{
printf("钻石玩家");
}
else if(score>=5000)//不需要<10000的判断条件
{
printf("白金玩家");
}
else if(score>=1000)
{
printf("青铜玩家");
}
else
{
printf("普通玩家");
}
return 0;
}
题目明显是多个条件判断,用多重if-else语句更加直观而且比较省代码量
多重 if
else if
else if
else
嵌套
if
{
if()
{}
else
{}
}
else
{}
while循环
使用while语句应注意以下几点:
1、while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。
2、一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。
3、循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。
100以内函数之和含100
do-while
do
{
执行;
}
while();//这里的分号不能忘;while在}外面
for循环
使用for语句应该注意:
1、for循环中的“表达式1、2、3”均可可以缺省,但分号(;)不能缺省。
2、省略“表达式1(循环变量赋初值)”,表示不对循环变量赋初始值。如:
3、省略“表达式2(循环条件)”,不做其它处理,循环一直执行(死循环)。如:
4、省略“表达式3(循环变量增量)”,不做其他处理,循环一直执行(死循环)。如:
注:死循环可以使用后面即将讲到的break解决
5、表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。如:
for(sum=0;num<=10;num++)
6、表达式1和表达式3可以是一个简单表达式也可以是多个表达式以逗号分割。如:
for(sum=0,num=0;num<=10;num++,sum++)
7、表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
8、各表达式中的变量一定要在for循环之前定义。如:for(int sum=0...)就是错的,因为要提前定义
那对于随用随定义的c++来说呢???????
//获取三位数字num百位上的数字
hd =num/100;
//获取三位数字num十位上的数字
td =(num-hd*100)/10 ;//或 td=num%100/10
//获取三位数字num个位上的数字
sd =(num-hd*100-td*10) ;//OR num%10
//水仙花数的条件是什么?
while、do-while和for三种循环在具体的使用场合上是有区别的,如下:
1、在知道循环次数的情况下更适合使用for循环;
2、在不知道循环次数的情况下适合使用while或者do-while循环,如果有可能一次都不循环应考虑使用while循环,如果至少循环一次应考虑使用do-while循环。
但是从本质上讲,while,do-while和for循环之间是可以相互转换的