【无标题】

本文详细介绍了C语言的基本概念,如数据类型sizeof的使用、不同数据类型的大小、变量作用域(全局和局部)、常量和枚举的用法,以及字符串处理、数组操作、位运算符和控制结构(如if、while、for和switch)等。
摘要由CSDN通过智能技术生成

一个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日以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值