大一期末--------c语言基础梳理回顾

注解:本文章按照c语言(谭浩强版)课本,梳理。仅仅应对考试知识框架梳理,不能提供深入学习使用

程序设计和c语言:

                1.1970年代 c语言 由贝尔开发的高效可移植的编程语言

                2.1980年代 由一些国家对c语言对不同编译器进行国标准化

                3.1990年代 c语言进一步升级,增加面向对象的特性

                4.至今,进一步优化

                主要知识点:

                5.一个c语言程序是由一个或多个源程序文件组成

                        预指令:预处理指令对源代码进行处理,并不是真正的c语句

                        全局声明:在函数外声明函数或变量;使函数可以在其他地方使用

                        函数定义:实现某些重复的方法,提高复用性.

                6.函数是c程序的主要组成部分,程序从main函数开始执行

                7. 函数包括两部分:函数头部 和 函数体 

                8.程序要求计算机的操作由c语句实现

                9.数据声明和语句结束后面需要添加分号

程序化程序设计方法的思想:

                1.模块化:程序分成多个函数,每个函数程序不同功能,便于维护,结构清晰

                2.自上而下:从整体到局部,设计整体结构程序,再逐一细化功能。

                3.循序,选择和循环程序

                4.数据抽象和封装:数据封装在函数体内,只暴露接口给外面调用;

                5.模块间的通信:通过传递参数和返回值,进项交换。

数据类型和数据的输入输出

                算法+数据结构=程序

                算法特点:

                                1.有穷性 操作有限 2.确定性:每一步都是正确的 3.有0或多个输入

                                4.有一个或多个输出   5.有效性:每一步都可以执行,并且得到确定结果

                常量:值不能改变的量

                                1.整型常量 eg.1000 ,0 

                                2.实型常量(实数,浮点数) eg. 12.5

                                3.字符常量  eg:‘5’,‘e’,‘?’

                                4.字符串常量: “hello”  

                                5.符号常量:用#define指令 ,指定一个符号 ,指定一个常量

                                                      #define PI 3.1415

                                ASCII表常用: A-65  a-97  0-48

                                转义字符:\n 换行  \t 缩进   \\ 一个  \0 空字符 

                变量:值可以改变的量;使用前需要声明数据类型和名称
                常变量:定义的变量前面加  const 
                表识符:表示程序实体(变量,函数等)的名字

                                规则:

                                        1.可以大小写,下划线

                                        2.不能数字开头

                                        3.区分大小写

                                        4.不能关键字

                关键字:有特定含义的保留字

                数据类型:

                                整型数据:

                                                int  4字节

                                                short int  2字节

                                                long int 4字节

                                                long long int 8字节

                                                不带符号:

                                                unsigned

                                字符数据:

                                                char 1字节

                                                字符有时可以表示整型

                                浮点型数据:

                                                float 4字节

                                                double 8字节

                               数据类型的转换:

  • 图中横向箭头表示必定的转换,如 char 型、short 型数据必定先转换为 int 型,float 型数据在运算时将先转换成 double 型,以提高运算精度(即使是两个 float 型数据相加,也要转换成 double 型,然后再相加)
  • 图中纵向箭头表示当经过横向的转换后,进行运算的数据类型仍然不同时的转换方式。在不同数据类型的转换过程中,类型转换顺序并不是按箭头方向一步一步的转换,可以没有中间类型转换。例,in t型与 double 型数据进行运算,先将 int 型的数据直接转换成 double 型,然后再进行两个同类型(double型)数据的运算
     
  • 转换只会影响表达式的运算结果类型,并不改变原变量的定义类型,并且其数据值也不会发生任何改变     (声明左值类型需要与右值类型保持一致
  • 赋值运算符两边的运算对象类型不同时,也要发生类型转换,转换的规则是:把赋值运算符右边表达式的类型转换为左边变量的类型(如果声明左边数据类型比右边表达式数据类型还要大
  • 原文链接:https://blog.csdn.net/m0_74102736/article/details/129890527

                                     强制数据类型转化:(数据类型)表达式       

                数据的输入输出:

                                printf格式化输出数据

                                                        1.格式字符:d,i表示有符合的十进制整数

                                                        2.u格式符:用于输出无符号的十进制整数

                                                        3.f格式符:用于输出浮点数

                                                                              - %m.nf:m表示数据占几位,n表示输出几位小数,四舍五入,-表示左对齐,+表示右对齐。

                                                        4.c格式符:输出字符

                                                        5.s格式符:输出字符串0000000000000000000000000000000000000000000000000000

                                                        6.p格式符:输出指针地址

                                scanf格式化输入数据:

                                                        注意输入规范:

                                                                        如果一个scanf输入多个数据:

                                                         分隔方式:1.输入时,给定特定的东西,结束前一个读取

                                                                           2.输入时,使用空格,enter,tab结束前一个读取

                                                           一个%结束:1.读取空格,tab,enter

                                                                                 2.读取指定长度             

#include<stdio.h>
int main() {
	int a,b,c,d,e,f,g,h;
	scanf("%d,%d",&a,&b); //输入时用逗号(,)分隔 
    scanf("%d %d".&a,&b);
	scanf("%d%d",&c,&d);  //输入时用空格分隔
	scanf("%d%d",&e,&f);  //输入时用回车分隔
	scanf("%d%d",&g,&h);  //输入时用tab键分隔
	printf("a=%d,b=%d\n",a,b);
	printf("a=%d,b=%d\n",c,d);
	printf("a=%d,b=%d\n",e,f);
	printf("a=%d,b=%d\n",g,h);
	return 0;
}

                                          字符输入输出函数:

                                                                       putchar  输出一个字符

                                                                                        eg.putchar(65) putchar(a)                                                                                       getchar  输入一个字符                                                                                                                                        eg.  char a;

                                                                                                a=getchar();                                                                                                                                                     

数组:

               数组定义:长度必须为常量

               数组初始化

               数组访问

                一维数组

                二维数组

                字符数组:

                                字符数组定义:

                                字符数组初始化:

                                字符数组访问:

char str1[]="hello";
//访问单个字符
char firstchar=str1[0];
//修改单个字符
str[0]='h';
printf("%s",str);

//遍历字符
int len=sizeof(str)/sizeof(str[0]);

for(int n=0;n<len-1;n++){

    printf("%c",str[i]);
}

                     

                                字符数组结束标志:

                                         c语言以 '\0' 结束。

                                字符数组输入输出:

                                          用%c  %s

//逐个输入
char str[20];
int i;
printf("请输入字符串");

for(i=0;i<20;i++){
    scanf("%c",str+i);
    if(str[i]=='\n'){
        str[i]='\0';//将换行字符换成空字符
        break;
    }
}
//整个输入
char str1[20];
printf("请输入字符串");
scanf("%s",str1);


//整个输出
printf("%s",str);
//逐个输出
for(i=0;str[i]!='\0';i++){
    printf("%c",str[i]);
}

                                处理字符数组的函数

                                        puts函数------输出字符串函数:将字符串以\0结束的输出

                                        gets函数------输入字符串函数:从终端输入一个字符串到字符数组,并得到一个返回值,错误为null;成功为字符串                        

char str[]="hello \n China";
puts(str);


char str[100];
gets(str);

                                        strcat(字符数组1,字符数组2);//  把字符串2连接到字符串1的后面                                            strcpy,strncpy函数----字符串复制

                                                        strcpy(字符串1,字符串2)

                                                        strncpy(字符串1,字符串2,复制的字符数)结尾没有\0

char destination[20]='hello';
char source[]="world";

strcat(destination,source);




char str1[10],str2[]="china";
strcpy(str1,str2);

                                                        strcmp(字符串1,字符串2) 比较字符串;相同则返回0

                                                        strlen函数:测字符串长度的函数  不包括("\0")

函数:

          C语⾔要求,在程序中⽤到的所有函数,必须“先定义,后使⽤”

           值传递:实参和形参间的数据传递 再调⽤函数过程中,系统会把实参的值传递给被调⽤函数的形参。 或者说,形参从实参得到⼀个值。该值再函数调⽤期间有效,可以参加该函数中的运算

        地址传递:地址作为参数

        static变量:静态变量,使变量作用到整个程序结束;即函数内改变会持续到别的函数内

指针:

        指针赋值:

int a = 5;
int *p = &a;

        指针作为函数参数传递地址    

#include <stdio.h>
// 函数原型,参数为指针变量
void changeValue(int *ptr);
int main() {
 int a = 5;
 printf("函数调⽤前的值:%d\n", a);
 
 // 调⽤函数,传⼊指针变量a的地址
 changeValue(&a);
 
 printf("函数调⽤后的值:%d\n", a);
 
 return 0;
}
// 函数定义,通过指针修改变量的值
void changeValue(int *ptr) {
 // 解引⽤指针,修改变量的值
 *ptr = 10;
}-----

           指针引用数组:区别 指针可以改变指向来改变地址,数组名不能改变。

                                     用法:指针可以通过++和--来指向数组的位置

        指针引用字符数组

结构体:

        关键词:struct

struct 结构体名
{
 成员列表;
};
struct Student
{
 char name[50];
 int age;
 float gpa;
};

        结构体调用和修改:

#include <stdio.h>
struct Student {
 char name[50];
 int age;
 float gpa;
};
int main() {
 struct Student student1;
 
 // 设置学⽣的信息
 strcpy(student1.name, "Tom");
 student1.age = 20;
 student1.gpa = 3.5;
 
 // 打印学⽣的信息
 printf("姓名:%s\n", student1.name);
 printf("年龄:%d\n", student1.age);
 printf("平均成绩:%f\n", student1.gpa);
 
 return 0;
}

        结构体数组:

struct 结构体名
{
 成员列表
} 数组名 [数组⻓度];
struct Point {
 int x;
 int y;
} points[3];

        结构体指针:

typedef struct {
 int x;
 int y;
} Point;
Point p1;
Point *ptr = &p1;
ptr->x = 3;
ptr->y = 5;

        指针调用:箭头 或 (*指针名)

文件操作:

         文件:在C语⾔中,⽂件是⼀种⽤于存储和读取数据的抽象概念。
        文件表示组成:1、⽂件路径 2、⽂件名主⼲ 3、⽂件后缀

        D:\CC\temp\file.dat ⽂件路径:D:\CC\temp ⽂件名主⼲:file ⽂件后缀:.dat

        文件缓冲区:

                                从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才⼀起送到 磁盘去。 如果从磁盘向计算机读⼊数据,则⼀次从磁盘⽂件将⼀批数据输⼊到内存缓冲区中(充满缓冲区) 然后再从缓冲区逐个地将数据送到程序数据区(给程序变量

      文件指针类型

                以指向⼀个已经打开的⽂件,通过该指针可以对⽂件进⾏读取、写⼊、移动指针位置

                声明: File *fp;

                使用:fp=fopen("文件名","使用方式")

                                fopen函数打开文件

                                fclose函数关闭文件:

                                                                1.释放资源 2.保存文件 3.刷新缓冲区

                

#include <stdio.h>
int main() {
 FILE *fp;
 // 使⽤ "r" 模式打开⽂件,以只读⽅式打开
 fp = fopen("example.txt", "r");
 if (fp == NULL) {
 printf("⽆法打开⽂件 example.txt\n");
 return 1;
 }
 // ⽂件操作...
 // 关闭⽂件
 fclose(fp);
 // 使⽤ "w" 模式打开⽂件,以写⼊⽅式打开
 fp = fopen("output.txt", "w");
 if (fp == NULL) {
 printf("⽆法打开⽂件 output.txt\n");
 return 1;
 }
 // ⽂件操作...
 // 关闭⽂件
 fclose(fp);
 // 使⽤ "a" 模式打开⽂件,以追加⽅式打开
 fp = fopen("log.txt", "a");
 if (fp == NULL) {
 printf("⽆法打开⽂件 log.txt\n");
 return 1;
 }
 // ⽂件操作...
 // 关闭⽂件
 fclose(fp);
 return 0;
}

                                文件字符读写:

                                                        1.fgetc函数

                                                                调用:fgetc(fp)从fp指向的文件读入一个字符

                                                                返回值:成功,返回读取字符,失败EOF 即 -1

                                                        2.fputc函数

                                                                 调用:fputc(ch,fp)把字符ch写到fp所指向的文件夹种

                                                                返回值:成功,返回输出字符,失败返回EOF 即-1

                                文件字符串读写:

                                                        1.fgets函数

                                                                调用:fgets(str,n,fp)从fp指向的文件读入一个长度为n-1的字符串存放道字符数组str种

                                                                 返回值:读成功,返回地址str,失败返回null

                                                        2.fputs函数

                                                                调用:fputs(str,fp)把str的字符串写道fp指向的文件中

                                                                返回值:成功,返回0;失败返回非0值

#include <stdio.h>
#include <stdlib.h>
// 函数:写⼊⽂件
void writeFile(const char* filename, const char* content) {
 FILE* file = fopen(filename, "w");
 if (file == NULL) {
 printf("⽆法打开⽂件\n");
 return;
 }
 fputs(content, file);
 fclose(file);
}
// 函数:读取⽂件
void readFile(const char* filename) {
 FILE* file = fopen(filename, "r");
 if (file == NULL) {
 printf("⽆法打开⽂件\n");
 return;
 }
 char buffer[100];
 while (fgets(buffer, sizeof(buffer), file) != NULL) {
 printf("%s", buffer);
 }
 fclose(file);
}
int main() {
 const char* filename = "example.txt";
 const char* content = "你好,世界!";
 writeFile(filename, content);
 printf("成功写⼊⽂件\n");
 printf("读取到的⽂件内容:\n");
 readFile(filename);
 return 0;
}

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值