一个c语言,有且仅有一个main函数
ctrl+F5 快速输出
sizeof-关键字-操作符-计算类型或者变量所占空间的大小
bit 比特位
byte 字节 8bit、
mb 1024kb
gb 1024mb
tb1024tb
pb 1204tb
#include <stdio.h>
int main() {
printf("%d\n",sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
{
int age = 20;
double weight = 75.3;
age = age + 1;
weight = weight - 10;
printf("%d\n", age);
printf("%lf\n", weight);
return 0;
}
%d 整形
%f 浮点型
{}外部定义的是全局变量
{}内部定义的是局部变量
当局部变量和全局变量冲突的情况下,局部优先
scanf是输入函数
{
int a = 0;
int b = 0;
int sum = 0;
scanf_s("%d %d", &a, &b);
sum = a + b;
printf("sum=%d\n", sum);
}
局部变量的作用域:就是变量所在的局部范围;
全局变量的作用域: 整个工程
执行性的代码必须放到{}内
变量的生命周期:变量的创建和销毁之间的时间段
局部变量的生命周期:进入局部范围生命开始,出局部范围生命周期结束
全局变量的生命周期:程序的生命周期;
c语言的常量:
字面常量
const修饰的常变量
被const修饰的就是常变量,具有常属性(不能被改变的属性)
#define 定义的标识符常量
枚举常量
可以一一列举的常量
枚举常量默认从零开始
enum sex
{
//这种枚举类型的变量的未来可能取值
//
MALE = 3,//赋初值
FEMALE,
SECRET
};
int main()
{
enum sex s = MALE;
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
}
2024/3/4以上
字符串就是一串字符-用双引号括起来的一串字符
字符数组-数组是一组形同类型的元素
字符串在结尾的位置隐藏了一个\0字符
\0是字符串的结束标志
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c','\0'};
//求下面字符串的长度
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));//随机值
//int len = strlen("abc");
//printf("%d\n", len);
return 0;
转义字符,转变了它原来的意思(书上第40页)
2024/3/5
选择语句
int main()
{
int input = 0;
printf("加入比特:>\n");
printf("那你要好好学习吗(1/0)?>:");
scanf_s("%d", &input);
if (input == 1)
printf("好offer\n");
else
printf("卖红薯\n");
return 0;
}
while循环
int main()
{
int line = 0;
while (line < 10000)
{//line描述循环的动作
printf("写代码:%d\n",line);
line++;
}
if (line == 10000)
{
printf("好offer\n");
}
}
int Add(int x,int y )
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int num1= 0;
int num2= 0;
scanf_s("%d%d", &num1, &num2);
int sum = Add(num1, num2);
printf("%d\n", sum);
}
数组-一组相同类型的元素的集合
10个整形1-10存起来
数组是用下标来访问的
int main()
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i = 0;
while(i<10)
{
printf("%d", arr[i]);
i++;
}
}
//char ch[5]={'a','b','c'};//不完全初始化,剩余的默认为0
3月6日以上
位操作符
&按位与
|按位或
^按位异或
a+b +有两个操作数,双目操作符
单目操作符:只有一个操作数
0就是假,非零就是真
!把假变成真,把真变成假
#include <stdio.h>
int main()
{
int a = 10;
//sizeof是一个操作符
// 不是函数
//计算类型或者变量的大小
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(a));
}
int main()
{
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));//计算的是数组的总大小,单位是字节
printf("%d\n", sizeof(arr[0]));
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", sz);
}
整数在内存中储存的是补码~
一个整数的二进制表示有3种:
原码
反码
补码
-1:负数的计算:
10000001(原码)
111111110(反码)
111111111(补码)
正整数:原码,反码,补码相同
int main()
{
int a=0;
printf("%d\n", ~a);
//按位取反
//~按(二进制)位取反,把所以二进制中的1变成0,0变成1
return 0;
}
int main()
{//强制类型转换
int a = (int)3.14;
printf("%d\n", a);
}
&&逻辑与
||逻辑或
!非
三目运算符
int main()
{
int a = 0;
int b = 3;
int max=0;
if (a > b)
max = a;
else
max = b;
max = a > b ? a : b;
printf("%d\n", max);
}
逗号表达式
int main()
{
int a = 0;
int b = 3;
int c=5;
int d= (a = b + 2, c = a - 4, b = c + 2);
//逗号表达式,是从左往右依次计算的
//整个表达式的结果是最后一个表达式的结果
printf("%d\n", d);
return 0;
}
【】下标引用操作符
()函数调用操作符
2024/3/7以上
void main()
{
int c, s;
float p, w, f, d;
printf("请输入每公里运费(元/吨*公里),货物重量(吨),运费里程(公里):");
scanf_s("%f,%f,%d", &p, &w, &s);
if (s >= 3000)
c = 12;
else
c = s / 250;
switch (c) {
case 0:d = 0;
break;
case 1:d = 2;
break;
case 2:
case 3:d = 5;
break;
case 4:
case 5:
case 6:
case 7:d = 8;
break;
case 8:
case 9:
case 10:
case 11:d = 10;
break;
default:printf("输入的里程有误!\n");
}
f = p * w * s * (1-d/100.0f);
printf("应缴纳运费%15.4f\n,f");
}
switch函数
1,分析需要哪些函数
2,是否有输入
#include <stdio.h>
int main()
{
float y, r = 2.54;//计算英寸和厘米的转换
int flag;
printf("请输入数据、换算标志(1.英寸,2.厘米→英寸):");
scanf_s("%f,%d,", &y, &flag);
if (flag == 2 || flag == 1)
{
if (flag == 1)
printf("%10.2f英寸=%10.2f厘米", y, y * r);
else
printf("%10.2f厘米=%10.2f英寸", y, y / r);
}
else
printf("输入数据有误!\n");
}
判断是否是闰年(未解决)
int main()
{
int year = 0;
printf("判断是否是润年,请输入年份:");
scanf_s("%d", &year);
if (year % 4 == 0)
{
if (year % 100 != 0);
if (year % 400 == 0);
}
if(year)
printf("%d年不是闰年。\n", year);
else
printf("%d年是闰年。\n", year);
}
(未解决)
#include <stdio.h>
int main()
{
int profit;
int grade;//利润等级
double salary = 500;//基本工资
printf("输入利润:");
scanf_s("%1d", &profit);
grade = profit / 100;
if ("profit <= 100")
grade = profit * 0.1;
else
if ("profit>100&&profit<=400")
grade = profit * 0.15;
else
if ("profit>400&&profit<=500")
grade = profit * 0.2;
else
grade = profit * 0.25;
printf("salary=%.2f\n", salary);
}
switch函数case,break
#include <stdio.h>
int main()
{
int profit;
int grade;//利润等级
double salary = 500;//基本工资
printf("输入利润:");
scanf_s("%1d", &profit);
grade = profit / 100;
switch (grade) {
case 0:break;
case 1:salary += profit * 0.1; break;
case 2:case 3:
case 4:salary += profit * 0.15; break;
case 5:
case 6: case 7: case 8:
case 9:salary += profit * 0.2; break;
default:salary += profit * 0.25;
}
printf("salary=%0.2f\n", salary);
}
3月9日以上
#include<stdio.h>
int main() {
int s = 0;//s用来存放累加和,初始值为0
int i = 1;//i用来存放累加次数,初值为1表示第一次相加
while (i<=100){
s = s + i;//把数i累加到s里面
i++;
}
printf("s=%d\n",s);
}
循环体结构由四个部分组成,初始化部分,判断部分,循环体部分和迭代部分
n的阶乘 n*(n-1)*(n-2)*.......*3*2*1
编程思路
1、需要哪些变量
2、判断哪些变量需要输入(若有:可以加一个提示语句)
3、根据题意选择合适的结构解决问题:
(1)若需要重复执行某种操作 循环结构
循环做题
根据题目的要求确定循环条件
循环语句是什么
循环变量的初值怎么确定
迭代部分的语句一定要加上
当到循环
#include<stdio.h>
int main() {
double f = 1.0;
int i = 1,n;//初始化部分
printf("请输入一个整数:\n");
scanf_s(" % d", &n);
while(i<=n){//判断部分
f = f * i;//循环体部分
i++;//迭代部分
}
printf("%d!=%le", n, f);
}
直到循环
#include<stdio.h>
int main() {
int n = 1, total = 0;
do {
total = total + n;
n++;
} while (n <= 100);
printf("total = % d",total);
}
3月10日(距离专升本48天)
for循环表达式
表达式一:初始化循环变量(只求一次)
表达式二:循环条件
表达式三:修改循环控制变量的值(每循环一次,修改一次)
while ,do while 与for 相互转换时:循环条件不同;循环体一般是相同的;
for循环,先执行表达式一,且执行一次
然后判断,表达式二,是否成立?若成立,执行循环体(再执行表达式三);若不成立,跳出循环;
int sum=0;
//对于固定的循环次数n;
//定义i=1 循环条件:i<=1;
//定义i=0 循环条件:i<n;
#include <stdio.h>
int main(){
int k, s = 0;
for (k = 1; k <= 100; k++) {
s*= k;
}
printf("sum = % d,s");
}
十一日没怎么学
3月12日以上