《C语言》初学者笔记

《C语言程序设计》上机实验指导手册.doc 《C语言程序设计》综合训练项目任务书.doc 各个上机作业.docx 综合项目祖业.docx

1.0表示正常,-1表示异常  换行\n  排版代码键位“alt F8”
2.变量的本质就是内存中一段存储空间。变量的初始化就是变量的赋值。
3.释放不是清空,而是把使用权限分配给其他程序。用填充数字来提醒没有初始化。
4.定义变量:数据类型 变量名=要赋的值(数据类型 变量名 变量名=要赋的值)程序=算法+语言
5.八进制前加0,十六进制前加0X。字母A-F表示十六进制。在汇编中:在数字后加B表示二进制,加O表示八进制,加D表示十进制,加H表示十六进制。4
%X或%x或%#X表示以十六进制输出;%O表示以八进制输出。
6.单个字符用单引号表示,字符串用双引号表示。浮点数可以用传统写法和科学计数法。“A”正确,表示了‘A’和‘\0’的组合。
7.整数是以补码的形式转化为二进制代码存储;实数是以IEEE754标准转化为二进制代码存储;字符的本质实际也是与整数存储方式相同。
8.字节就是存储数据的单位,并且是硬件所能访问的最小单位。一个字节=8位(比特);1K=1024字节
9.%c输出字母,%f输出小数。ASCII不是一个值,而是一种规定,规定了不同的字符是用哪个整数值去表示。
10.scanf()输入函数,printf()输出函数
printf()输出函数的四种用法:
①printf("字符串");
②printf(“输出控制符”,输出参数);
③printf(“输出控制符1 输出控制符2。。。”,输出参数1,输出参数2。。。);输出控制符与输出参数的个数必须一一对应。
④printf("输出控制符 非输出控制符",输出参数);
输出控制符包括:%d,%ld,%f,%lf,%c,%x,%X,%#x,%#X(推荐使用),%O,%S
scanf()输入函数的两种用法:
①scanf(“输入控制符”,&输入参数);
②scanf(“非输入控制符 输入控制符”,&输入参数);非输入控制符必须原样输入。
while((ch=getchar())!='\n')
continue;
11.%取余数(算数运算符)!=不等于(关系运算符)==等于 逻辑运算符:!(非)&&(并且)||(或)算数>关系>逻辑> 赋值
除法的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,没有小数部分;被除数和除数中只要有一个或两个都是浮点型数据,商也是浮点型,有小数部分。取余的运算对象必须是整数,结果是余数,取余数的符号与被除数相同。
真&&假:假    假&&真:假     真||假:真   假||真:真
&&左边的表达式是假,右边的表达式肯定不会执行。
||左边的表达式是真,右边的表达式肯定不会执行。
+=2(i=i+2)
自增:前自增++i
          后自增i++
异同:都使i的值加1;前自增整体表达式的值是i+1之后的值,后自增整体表达式的值是i+1之前的值。
为什么会出现自增:代码更精炼;自增的速度更快
自减 
三目运算符 A?B:C等价于if(A) B;else C;
逗号表达式 (A,B,C,D)从左到右执行,最终表达式的值是最后一项的值。i(j++,++j,j+2,j-3)最后两项没有把值赋给j
位运算符:
&按位于(二者二进制代码每一位都与)  &&逻辑与(值只能1或0,真或假) 二者含义完全不同
| 按位或 ||逻辑或
~ 按位取反
^ 按位异或 相同为0,不同为1
<< 按位左移 i<<1表示把i所有二进制位左移一位(二进制相当于乘二除二)比*速度快
>> 按位右移
通过位运算符,我们可以对数据的操作精确到每一位。
12.流程控制是程序代码执行的顺序。分为:顺序执行,选择执行,循环执行。
选择执行(if,switch)定义:有选择的执行某些代码。
if:1.if最简单的用法
           if(表达式)
              语句
功能:如果表达式为真,执行语句;不成立,不执行。
2.if的范围问题:if默认只能控制一个语句的执行或不执行。如执行多个语句,需用{}括起来。
3.if...else...的用法
4.if...else if...else...的用法
5.C语言对真假的处理:非零是真,零是假;真是1表示,假是0表示
6.if举例——求分数的等级
#include<stdio.h>
int main()
{float score;
printf("请输入您的成绩\n");
scanf("%f",&score);
if(score>=0&&score<60)
printf("不及格\n");
else if(score>=60&&score<80)
printf("良好\n");
else printf("优秀\n");
 return 0;
 } 
两个数字互换
#include<stdio.h>
 int main()
{int i=3;
int j=5;
int t; //定义临时变量
t=i;
i=j;
j=t;
printf("%d,%d\n",i,j);
 return 0;
}
三个数中取最大值
#include<stdio.h>
int main()
{int a,b,c;
int t;
printf("请输入三个数字,以空格作为间隔\n");
scanf("%d %d %d",&a,&b,&c);
if(a<b)
{t=a;
a=b;
b=t;
}
if(a<c){
 t=a;
 a=c;
 c=t;
}
if(b<c){
 t=b;
 b=c;
 c=t;
}
printf("%d\n",a);
printf("最大值如上所示\n");
 return 0;
}
7.if的常见问题解析
①空语句的问题
13.循环
定义:某些代码会被重复执行
分类:
for:for和if的嵌套使用(所有能被3整除的相加)
#include<stdio.h>
int main()
{int i;
int sum=0;
for(i=3;i<=12;++i)
{
 if(i%3==0)
 sum=sum+i;
}
printf("sum=%d i=%d\n",sum,i);
 return 0;
}
强制类型转化
例子:1+1/2=1/3+...+1/100的和
#include<stdio.h>
int main()
{int i;
float sum=0;
for(i=1;i<=100;++i)
{
 sum=sum+1.0/i;
}
printf("sun=%f",sum);
 return 0;
 } 
格式:(数据类型)(表达式)
功能:
sum=sun+(float)(1/i);//这样是不对的
更简单的写法:sum=sum+1.0/i;
浮点数存储所带来的问题
float和double都不能保证可以精确的存储一个小数
举例:如何判断一个数浮点型变量X是否为0
if(|x-0.000001|<=0.000001)
是0;
else
不是0;
循环中更新的变量不能定义成浮点型。
求1到100的问题。
#include<stdio.h>
int main()
{int i;
int cnt=0;
int cnt1=0;
int cnt2=0;
int sum1=0;
int sum2=0;
int sum=0;
float avg=0;
for(i=1;i<101;++i)
{
 if(i%2==1)
 {
  sum1=sum1+i;
  ++cnt1;
 }
 else
 {
  sum2=sum2+i;
  ++cnt2;
 
 }
 
}
sum=sum1+sum2;
cnt=cnt1+cnt2;
avg=1.0*sum/cnt;
printf("奇数个数=%d\n",cnt1);
printf("奇数和=%d\n",sum1);
printf("偶数个数=%d\n",cnt2);
printf("偶数和=%d\n",sum2);
printf("avg=%f\n",avg);
 return 0;
}
多层for循环的嵌套使用
while:
①执行顺序:while(表达式) 语句;
②与for的相互比较:可以相互转换,但for的逻辑性更强,更不容易出错,推荐使用for。
③举例:
for(1,2,3)
A;
等价于:
1;
while(2)
A;
3;

输入一个数字,并且判断该数字是否为回文数。
#include<stdio.h>
int main()
{int val;
int m;
int sum=0;
printf("请输入需要判断的数字\n");
scanf("%d",&val);
m=val;
while(m)
{
 sum=sum*10+m%10;
 m/=10;
}
if(sum==val)
printf("yes\n");
else
printf("no\n");
 return 0;
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值