C语言学习总结

C语言学习总结

一、C语言基础
  1. 特点:结构化、高效、可移植、面向过程
  2. 程序结构
c 复制代码
#include <stdio.h> // 预处理指令
int main() {       // 主函数入口
    printf("Hello, World!");
    return 0;      // 返回值
}

二、数据类型
类型 说明 示例
int 整型 int a = 10;
float 单精度浮点型 float b=3.14;
double 双精度浮点型 double c=5.0;
char 字符型 char d='A';

例题1 :计算圆的面积(使用float

c 复制代码
#include <stdio.h>
int main() {
    float r = 5.0;
    float area = 3.14159 * r * r;
    printf("Area: %.2f", area);
    return 0;
}

答案Area: 78.54


三、运算符
  1. 算术运算符+, -, *, /, %
  2. 逻辑运算符&&, ||, !
  3. 自增/自减i++, ++i

例题2:求整数各位和

c 复制代码
#include <stdio.h>
int main() {
    int num = 123, sum = 0;
    while(num > 0) {
        sum += num % 10;
        num /= 10;
    }
    printf("Sum: %d", sum); // 输出6 (1+2+3)
    return 0;
}

四、控制结构
  1. 条件语句
c 复制代码
if (score >= 60) {
    printf("Pass");
} else {
    printf("Fail");
}
  1. 循环语句
c 复制代码
for(int i=0; i<5; i++) {
    printf("%d ", i); // 输出0 1 2 3 4
}

例题3:判断闰年

c 复制代码
int year = 2024;
if ((year%4==0 && year%100!=0) || year%400==0) {
    printf("Leap year");
} else {
    printf("Not leap year");
}

答案Leap year


五、函数
c 复制代码
// 函数声明
int add(int a, int b);

int main() {
    printf("%d", add(3,5)); // 输出8
    return 0;
}

// 函数定义
int add(int a, int b) {
    return a + b;
}

例题4:交换两个变量值(指针实现)

c 复制代码
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x=10, y=20;
    swap(&x, &y);
    printf("x=%d, y=%d", x, y); // x=20, y=10
    return 0;
}

六、数组与指针
  1. 一维数组
c 复制代码
int arr[5] = {1,2,3,4,5};
printf("%d", arr[2]); // 输出3
  1. 指针与数组
c 复制代码
int *p = arr;
printf("%d", *(p+2)); // 输出3

例题5:反转数组

c 复制代码
int arr[] = {1,2,3,4,5};
int n = sizeof(arr)/sizeof(arr[0]);
for(int i=0; i<n/2; i++) {
    int temp = arr[i];
    arr[i] = arr[n-1-i];
    arr[n-1-i] = temp;
}
// 结果:5 4 3 2 1

七、结构体
c 复制代码
struct Student {
    char name[20];
    int age;
};

int main() {
    struct Student s1 = {"Alice", 20};
    printf("%s: %d", s1.name, s1.age);
    return 0;
}

八、文件操作
c 复制代码
FILE *fp = fopen("test.txt", "w");
fprintf(fp, "Hello File!");
fclose(fp);

常见问题总结

  1. 未初始化指针int *p; *p=10;(错误)
  2. 数组越界int arr[3]; arr[3]=5;(错误)
  3. 内存泄漏 :忘记使用free()释放动态内存

综合例题

题目:动态创建数组存储学生成绩,计算平均分

c 复制代码
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n, *arr, sum=0;
    printf("输入学生人数:");
    scanf("%d", &n);
    
    arr = (int*)malloc(n * sizeof(int));
    
    for(int i=0; i<n; i++) {
        printf("输入第%d个成绩:", i+1);
        scanf("%d", &arr[i]);
        sum += arr[i];
    }
    
    printf("平均分:%.2f", (float)sum/n);
    free(arr);
    return 0;
}

相关推荐
最贪吃的虎几秒前
我的第一个 RAG 程序:从 0 到 1,用 PDF 搭一个最小可运行的知识库问答系统
人工智能·python·算法·机器学习·aigc·embedding·llama
421!几秒前
C语言学习笔记——10(结构体)
c语言·开发语言·笔记·stm32·学习·算法
Lufeidata2 分钟前
go语言学习记录-入门阶段2
学习·microsoft·golang
不只会拍照的程序猿2 分钟前
《嵌入式AI筑基笔记04:python函数与模块01—从C的刻板到Python的灵动》
c语言·开发语言·笔记·python
计算机学姐2 分钟前
基于SpringBoot的在线课程学习网站
java·vue.js·spring boot·后端·学习·spring·intellij-idea
1104.北光c°7 分钟前
Leetcode146 LRU缓存的三种写法 【hot100算法个人笔记】【java写法】
java·开发语言·笔记·算法·leetcode·hot100·lru缓存
6Hzlia10 分钟前
【Hot 100 刷题计划】 LeetCode 239. 滑动窗口最大值 | C++ 优先队列与单调队列双解法
数据结构·算法·leetcode
Dovis(誓平步青云)10 分钟前
《QT学习第一篇:QT的概述与安装、信号与槽》
开发语言·qt·学习·功能详解
2301_7890156211 分钟前
C++11新增特性:列表初始化&左值引用&右值引用&万能引用&移动构造&移动赋值&引用折叠&完美转发
c语言·开发语言·c++·c++11