今天开始学习常量,变量,基本数据类型,printf()函数和scanf()函数,算术运算符。
首先常量:是在程序中保持不变的量
变量:编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需 要显示数据或执行数据操纵。
声明和使用变量
- 声明变量:
Datatype variablename;
数据类型加上变量名;
定义时初始化变量;
Datatype variablename = value;
数据类型加上变量名=数值
- 定义后初始化变量:
variablename = value;
示例
计算长方形的面积
//声明变量:数据类型 变量名;
int width;//长方形的宽
width=10;//为变量赋值
//声明并赋值
int length=50;//长方形的长
int s=width*length;// 面积
printf("长方形的长是%d,宽是%d,面积是:%d\n",length,width,s);
//%d:整形占位符
去掉注释以后练习时写的。
#include <stdio.h>
void main(){
int chang = 500;
int kuan = 200;
int gao = 100;
int ly = 22;
int he = chang * kuan*gao*ly;
printf("长方形的长是%d长方形的宽是%d长方形的总和是%d",chang,kuan,he);
}
变量命名(标识符)
1. 什么是标识符
标识符就是在程序中自定义的一些符号和名称。要跟关键字区分开来:关键字是C语言默认提供的符号,标识符是程序员自定义的
2. 标识符的作用
1) 标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来
2) 其实,标识符的作用就跟人类的名字差不多,为了区分每个人,就在每个人出生的时候起了个名字
3) C语言是由函数构成的,一个C程序中可能会有多个函数,为了区分这些函数,就给每一个函数都起了个名称。函数的名称就是标识符的一种。除了函数,以后还会学到“变量”这个概念,变量的名称也是标识符
命名
命名规则(一定要遵守)
1. 只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成。
2. 严格区分大小写,比如test和Test是2个不同的标识符。
3. 不能以数字开头。
4. 不可以使用关键字作为标识符。
命名规范(也要遵守)
1. 尽量起个有意义的名称,比如一个完整的英文单词,别人一看这个名称就能才能这个标识符的作用。如果不懂英文,你可以下载一个翻译工具,如有道,养成好的习惯,(目前正在努力改正中..)不然会显得比较low...不要起像abcde、sfsdfsdf等这类看起来没有意义的名称,即low又不好记,自己也容易出错。
2. 如果标识符中含有多个单词,可以使用驼峰标识(除开第一个单词,后面每个单词的首字母都是大写):firstName、myFirstName,或者使用下划线_来连接:first_name、my_first_name
不可以使用关键字作为标识符,如果命名以后显示为蓝色或者其他鲜艳的颜色的就不要用来命名了,基本都是有别的用处的。
下面是常见的标识符命名错误
合法标识符 |
非法标识符 |
注释 |
fromNo12 |
from#12 |
标识符中不能使用#符号 |
my_Boolean |
my-Boolean |
标识符中不能使用“-”符号,应使用下划线“_”代替 |
Obj2 |
2ndObj |
标识符不能使用数字开头 |
myInt |
int |
“int”是内建关键字 |
jack_rose |
jack&rose |
符号“&”不能出现在标识符中 |
GUI |
G.U.I |
标识符内部需要出现“.”分隔符 |
基本数据类型
数值类型: 整型:(short,int,long), 非整型 (float,double)
//数值类型就是各种整数,short能容纳的数比较小,int比short大一点,long别另两个都大,大的多,平时int就够用。
//非整形就是各种小数,float能容纳的少点,称为单精度浮点数。double能容纳的多的多,称为双精度浮点数。
非数值型: char
//char是字符类型的,就是字母。
占位符:
每种类型的占位符都不同,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,short的占位符是%s, int的占位符是%d, long的占位符是%ld
float的占位符是%f, double的占位符是%lf, char的占位符是%c。
转换字符串 |
说 明 |
%d |
将参数按整数形式转换输出,对应参数应是int 类型 |
%ld |
将参数按长整数形式转换输出,对应参数应是long 类型 |
%c |
输出一个字符,对应参数应该是一个字符 |
%s |
输出一个字符串,对应参数应该是一个字符串 |
%lf |
将参数按带小数点数形式输出,对应参数应是double 类型,默认情况下精确到 |
示例
//计算圆的面积 float pi=3.14;//圆周率 int r=3;//半径 float s=pi*r*r; printf("圆的半径%d,圆周率%f,面积是:%f\n",r,pi,s); //%f:单精度浮点float占位符 |
练习
#include <stdio.h>
void main(){
float pi = 3.14;
int r = 22;
float he = pi*r*r;
printf("圆的半径%d圆周率%f圆的面积%f\n",r,pi,he);
}
printf()函数和scanf()函数:
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
scanf()函数是C语言中的一个输入函数,一般用于获取printf()函数的数值。
示例:
int bottom,height;
printf("请输入三角形的底边长:");
scanf("%d",&bottom);//将用户输入的值赋值给bottom变量 : &:取地址
printf("请输入三角形的高:");
scanf("%d",&height);//将用户输入的值赋值给height变量
double s=bottom*height/2;
printf("三角行的面积为:%7.2lf",s);//%lf:double的占位符 l7.2f:七位有效数字,精确到小数点后2位
练习:
int gao,di;
printf("请输入三角形的高;");
scanf("%d",&gao);
printf("请输入三角形的底;");
scanf("%d",&di);
double as=gao*di/2;
printf("三角形的面积是%lf",as);//千万不能忘记所有的符号!
算术运算符:
二元运算: +,-,*,/,%(取模或求余)//两个数的预算如1+1=2
一元运算符:
++num,--num,num++,num-- //一个数的运算,如++6=7。++num和num++的区别是前者先自加再走下一条指令,后者先走下一条指令再自加。
--和++相同。
示例:
int num1 = 10;
int num2= ++num1+num1--;
printf("num2=%d",num2);//打印结果22
printf("num1=%d",num1);//打印结果10
表达式 |
如何计算 |
结果 (num1=5) |
num2 = ++num1; |
num1 = num1 + 1; num2 = num1; |
num2 = 6; num1 = 6; |
num2 = num1++; |
num2 = num1; num1 = num1 + 1; |
num2 = 5; num1 = 6; |
num2 = --num1; |
num1 = num1 - 1; num2 = num1; |
num2 = 4; num1 = 4; |
num2 = num1--; |
num2 = num1; num1 = num1 - 1; |
num2 = 5; num1 = 4; |
小练习:通过中间变量实现变量交换
int num1,num2;
int temp;//中间变量
printf("请输入的num1的值");
scanf("%d",&num1);
printf("请输入的num2的值");
scanf("%d",&num2);
printf("交换前num1=%d,num2=%d\n",num1,num2);
temp=num1;
num1=num2;
num2=temp;//通过中间变量实现交换
printf("交换后num1=%d,num2=%d\n",num1,num2);
自己的练习:
int num1,num2,num3;
printf("输入一个数");
scanf("%d",&num1);
printf("再来一个数");
scanf("%d",&num2);
printf("变身前num1=%d,num2=%d\n",num1,num2);
num3=num1;
num1=num2;
num2=num3;
printf("变身后num1=%d,num2=%d\n",num1,num2);
类型转换
• 自动类型转换
• 原则:把表示范围小的类型的值转换到表示范围大的类型的值就可以自动转换。把大的转换成小的就得用下面的强制转换。
• short à int
à
long à
float à double
• 强制类型转换
• 语法:(类型名) 变量或数值
• 例如:
int a = 5, b = 3;
float qu = float(a) / b;
getchar()和putchar():getchar()和printf()效果相同,但不如printf()效果强大,putchar()和scanf()效果相同,同样的不如scanf()效果强大。
示例: fflush(stdin)等同刷新,在这个例子中没有 fflush(stdin)的话就完全不行,用户输入的数据储存在缓存区,如果不用fflush清空缓存区的话就没办法在获取新的数据。
char a,b; printf("请输入第一个字符:"); a=getchar();//获取输入字符 fflush(stdin); printf("请输入第二个字符:"); b=getchar();//获取输入字符 fflush(stdin); putchar(a);//输出字符 putchar(b); putchar("\n"); |
自己的小练习:
char a,b;
printf("输入一个字母:");
a = getchar();
fflush(stdin);
printf("再输入一个字母:");
b = getchar();
fflush(stdin);
putchar(a);
putchar(b);
putchar("\n");
*/
char a,b;
printf("输入一个字母:");
scanf("%c",&a);
fflush(stdin);
printf("输入另一个字母:");
scanf("%c",&b);
fflush(stdin);
printf("a=%c,b=%c\n",a,b);
课后作业:根据用户输入的底和高计算梯形的面积(精确到小数点后两位)。
#include <stdio.h>
void main(){
//首先获取上下底及高的数值,然后进行运算。
double sdi,xdi,gao,he;
printf("输入上底长度;");
scanf("%lf",&sdi);
printf("输入下底长度;");
scanf("%lf",&xdi);
printf("输入高度;");
scanf("%lf",&gao);
he = (sdi+xdi)*gao/2;
printf("梯形的面积是;%7.2lf",he);
}
转换字符串 |
说 明 |
%d |
将参数按整数形式转换输出,对应参数应是int 类型 |
%ld |
将参数按长整数形式转换输出,对应参数应是long 类型 |
%c |
输出一个字符,对应参数应该是一个字符 |
%s |
输出一个字符串,对应参数应该是一个字符串 |
%f |
将参数按带小数点数形式输出,对应参数应是double 类型,默认情况下精确到 |
C语言学习第二章的更多相关文章
-
oracle学习 第二章 限制性查询和数据的排序 ——03
这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7 怎样使用转义(escape)操作符 ...
-
Java基础知识二次学习-- 第二章 基础语法与递归补充
第二章 基础语法与递归补充 时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...
-
最小正子序列(序列之和最小,同时满足和值要最小)(数据结构与算法分析——C语言描述第二章习题2.12第二问)
#include "stdio.h" #include "stdlib.h" #define random(x) (rand()%x) void creat_a ...
-
Asp.Net MVC4 + Oracle + EasyUI 学习 第二章
Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...
-
Ruby学习-第二章
第二章 类继承,属性,类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name,description都被Treasure继承 2.以下三种方 ...
-
C#高级编程 (第六版) 学习 第二章:C#基础
第二章 基础 1,helloworld示例: helloworld.cs using System; using System.Collections.Generic; using System.Li ...
-
C语言进阶学习第二章
本章重点记录指针的各种概念: 1.地址与内容 2.非法的赋值 3.NULL指针:NULL指针作为一个特殊的指针变量,表示不指向任何东西,在对指针进行解引用操作之前,首先必须 确保它并非NULL指针. ...
-
Struts2框架学习第二章——Struts2下的HelloWorld
本章要点 — Struts 2的下载和安装 — 纯手工创建一个Web应用 — 纯手工创建一个Struts 2应用 — 实现Struts 2的Action — 配置Struts 2的Action — ...
-
C语言学习第九章
学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的 ...
随机推荐
-
windows编程:资源和播放声音
要播放声音,要附加项:winmm.lib,然后包含头文件:#include <mmsystem.h> 播放声音用PlaySound函数,只能播放midi和wav波形文件. #define ...
-
使用MVVM-Sidekick开发Universal App(二)
上一篇文章已经建立了基本的实体类,并且搞定了多语言的问题,以后在app里用字符串的时候就可以从资源文件中取了.现在继续进行. 一.添加一个页面 CurrencyExchanger首页是一个货币兑换的列 ...
-
成员变量的隐藏,方法的覆盖,super关键字
成员变量的隐藏:当父类和子类有相同的成员变量时,即定义了与父类相同的成员变量时,就会发生子类对父类变量的隐藏.对于子类的对象来说,父类中的同名成员变量被隐藏起来,子类就会优先使用自己的成员变量,父类成 ...
-
mysql修改表、字段、库的字符集
在一次导入数据表(MYISAM)的经历:复制过来的表打开后中文出现乱码,肯定是字符集出现了不致的问题,所以从原数据库导出.sql文件,修改其中的创建表的语句,加入字符集DEFAULT CHARSET= ...
-
POJ1365 - Prime Land(质因数分解)
题目大意 给定一个数的质因子表达式,要求你计算机它的值,并减一,再对这个值进行质因数分解,输出表达式 题解 预处理一下,线性筛法筛下素数,然后求出值来之后再用筛选出的素数去分解....其实主要就是字符 ...
-
T-SQL 控制流语句
批处理: 一个批处理段是由一个或者多个语句组成的一个批处理,之所以叫批处理是因为所有语句一次性被提交到一个SQL实例. 批处理是分批提交到SQL Server示例,因此在不同的批处理里局部变量不可访问 ...
-
C语言深度剖析---const关键字(转载)
const是constant的缩写,是恒定不变的意思.被const修饰的值,是只读变量. 1.const修饰只读变量,具有不变性 #include <stdio.h> int m ...
-
poj 1056 IMMEDIATE DECODABILITY 字典树
题目链接:http://poj.org/problem?id=1056 思路: 字典树的简单应用,就是判断当前所有的单词中有木有一个是另一个的前缀,直接套用模板再在Tire定义中加一个bool类型的变 ...
-
Jenkins结合.net平台综合之权限修正和文件排除
笔者在发布项目的时候遇到这样一个问题,第一次发布的时候成功发布,然后再次发布失败.但是这个问题很快就排除了,这里提出来是为了帮助遇到这个问题的小伙伴,以顺利避开坑.之所以会这样是因为我们在设置权限的时 ...
-
接口自动化&#160;[授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishou ...