C语言专业总结(二)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: C语言专业总结(二)

(6)标准库函数


注意:(里面的   *变量名   是指针,里面存放的是一个内存地址值,后面会详讲,大致了解下即可,不用死记下来)


常用标准库函数如 stdio.h,math.h,string.h,ctype.h.stdlib.h,system.h


1、stdio库:主要功能是输入输出操作,包括文件输入输出,标准输入输出。


输出函数: int puts(const char* str) 把一个字符串写出到标准输出


int printf(char *format,args,…) 把args,…的值以format指定的格式输出到标准输出设备,输出字符的个数


用\0替换为\n换行符


输入函数:char gets(char str)从标准输入读一行数据知道换行符才结束


FILE fopen(char filename,char *mode) 以mode指定的方式打开名为filename的文件,返回值:成功,返回文件指针(文件信息区的起始地址),否则返回NULL


将\n替换为\0


2、ctype库


ps:以下几个表格来自于网上资料


调用字符函数时,要求在源文件中包下以下命令行:


\ #include

函数原型说明

功能

返回值

int isalnum(int ch)

检查ch是否为字母或数字

是,返回1;否则返回0

int isalpha(int ch)

检查ch是否为字母

是,返回1;否则返回0

int iscntrl(int ch)

检查ch是否为控制字符

是,返回1;否则返回0

int isdigit(int ch)

检查ch是否为数字

是,返回1;否则返回0

int isgraph(int ch)

检查ch是否为ASCII码值在ox21到ox7e的可打印字符(即不包含空格字符)

是,返回1;否则返回0

int islower(int ch)

检查ch是否为小写字母

是,返回1;否则返回0

int isprint(int ch)

检查ch是否为包含空格符在内的可打印字符

是,返回1;否则返回0

int ispunct(int ch)

检查ch是否为除了空格、字母、数字之外的可打印字符

是,返回1;否则返回0

int isspace(int ch)

检查ch是否为空格、制表或换行符

是,返回1;否则返回0

int isupper(int ch)

检查ch是否为大写字母

是,返回1;否则返回0

int isxdigit(int ch)

检查ch是否为16进制数

是,返回1;否则返回0

int tolower(int ch)

把ch中的字母转换成小写字母

返回对应的小写字母

int toupper(int ch)

把ch中的字母转换成大写字母

返回对应的大写字母


3、string.h 字符串处理函数库

函数原型说明

功能

返回值

char strcat(char s1,char *s2)

把字符串s2接到s1后面

s1所指地址

char strchr(char s,int ch)

在s所指字符串中,找出第一次出现字符ch的位置

返回找到的字符的地址,找不到返回NULL

int strcmp(char s1,char s2)

对s1和s2所指字符串进行比较

s1<s2,返回负数;s1= =s2,返回0;s1>s2,返回正数

char strcpy(char s1,char *s2)

把s2指向的串复制到s1指向的空间

s1 所指地址

unsigned strlen(char *s)

求字符串s的长度

返回串中字符(不计最后的'\0')个数

char strstr(char s1,char *s2)

在s1所指字符串中,找出字符串s2第一次出现的位置

返回找到的字符串的地址,找不到返回NULL


4、math.h 数学库

函数原型说明

功能

返回值

说明

int abs( int x)

求整数x的绝对值

计算结果

double fabs(double x)

求双精度实数x的绝对值

计算结果

double acos(double x)

计算cos-1(x)的值

计算结果

x在-1~1范围内

double asin(double x)

计算sin-1(x)的值

计算结果

x在-1~1范围内

double atan(double x)

计算tan-1(x)的值

计算结果

double atan2(double x)

计算tan-1(x/y)的值

计算结果

double cos(double x)

计算cos(x)的值

计算结果

x的单位为弧度

double cosh(double x)

计算双曲余弦cosh(x)的值

计算结果

double exp(double x)

求ex的值

计算结果

double fabs(double x)

求双精度实数x的绝对值

计算结果

double floor(double x)

求不大于双精度实数x的最大整数

double fmod(double x,double y)

求x/y整除后的双精度余数

double frexp(double val,int *exp)

把双精度val分解尾数和以2为底的指数n,即val=x*2n,n存放在exp所指的变量中

返回位数x0.5≤x<1

double log(double x)

求㏑x

计算结果

x>0

double log10(double x)

求log10x

计算结果

x>0

double modf(double val,double *ip)

把双精度val分解成整数部分和小数部分,整数部分存放在ip所指的变量中

返回小数部分

double pow(double x,double y)

计算xy的值

计算结果

double sin(double x)

计算sin(x)的值

计算结果

x的单位为弧度

double sinh(double x)

计算x的双曲正弦函数sinh(x)的值

计算结果

double sqrt(double x)

计算x的开方

计算结果

x≥0

double tan(double x)

计算tan(x)

计算结果

double tanh(double x)

计算x的双曲正切函数tanh(x)的值

计算结果


5、stdlib.h


字符串转换


double atof (const char*);


int atoi (const char*);
long atol (const char*);
double strtod (const char*, char**);
long strtol (const char*, char**, int);


unsigned long strtoul (const char*, char**, int);


随机数


内存管理


环境接口:


void abort (void);
void exit (int);
int atexit (void (*)(void));


int system (const char*);
char getenv (const char);



2.控制语句


1.顺序结构(我们之前打的代码都是顺序结构的)


2.分支结构(读者可以自寻一些题目来做或看书上的)


(1)if语句


主要是用来判断一些事务的


下列代码中,if(){}语句一定要有,其他都可有可无,视情况而定

#include <Stdio.h>
int main() {
  if(条件){
  //条件为真执行此条语句
  //条件为假执行else if
  }
  else if (条件){
  //条件为真执行此条语句
  //条件为假执行下条else if
  }
  else if (条件){
  //条件为真执行此条语句
  //条件为假执行else
  }
  else{
  //执行语句
  //结束
  }
}

下面我们用一个简单例子详细说明

#include <Stdio.h>
int main() {
    int n;
    scanf("%d",&n);
  if(n){//这单独一个n是什么意思呢,其实等同与if(n!=0),也就是n不等于0,n不等于0的时候执行这if里面的代码 
        //不止是if语句可以这样,while,dowhile循环都可以这样,for循环这样用的比较少
        printf("n不等于0~"); 
  }
  else if(n==1){//这里是个陷阱
  //如果n等于1,那么n是不等于0的,那肯定就属于if里面的条件了,所以直接在if语句那就被截断了
  //这个else if语句也就当然是执行不出来的 
    printf("n等于1");
  }
  else{
  //上面if语句条件n不等于0,这里else你可以看成汉语的否则的意思,如果上面n不等于0,就执行if里面的代码,否则就执行else里面的代码 
    printf("CSDN");
  }
}

示例1:
输入:1
输出: n不等于0~


示例2:
输入:45
输出:n不等于0~


示例3:
输入:0
输出:CSDN


(2) switch()语句


解析:


基础架构

#include <Stdio.h>
int main() {
    int a;
    scanf("%d",&a);
  /*switch(表达式){  //表达式的值只能时整型,字符型和枚举型
        case 常量表达式1: //常量表达式值的类型必须与表达式值的类型相同,如,a时int类型,常量的值也要时int类数据
            语句1; //这里语句不止可以跟一条,还可以增添任意条语句在语句1之后
            break; //break时退出当前循环,即退出switch语句.
            //如果没有break语句,就会一直执行下去,比如下面去掉所有break,就会有a=1a=2a=3a=1这种结果.
        case 常量表达式2:
            语句2;
            break;
        case 常量表达式n:
            语句n;
            break;
        default://default语句最多出现一次,位置最好是放在末尾,便于阅读
            语句n+1;
    }*/
    switch(a){
        case 1:
            printf("a=1");
            break;
        case 2:
            printf("a=2");
            break;
        case 3:
            printf("a=3");
            break;
        default:
            printf("a的值:%d",a);//如果a不是1,2,3就输出这条语句
    }
}

3.循环结构(do ..while , while,for )循环体内可以有若干条语句


(1)do..while循环


(先执行循环体部分一次,再进行判断是否满足下次循环的条件)

#include <Stdio.h>
int main() {
    int a = 0;
    int b = 10;
    /*do{
        循环体;
    }while(条件);*/
    do{
        a++;
        b--;
    }while(a<10);
    printf("%d %d",a,b);//结果:10 0
}

解析:先执行一遍,a和b--,在判断a是否超过10,如果超过10则退出,执行printf语句.若没有超过则继续a和b--,直到a超过10


(2)while循环


(先进行判断是否满足条件,如果满足条件,则执行循环体内容,直到不满足条件为止,如果刚开始就不满足条件,则直接跳过while循环)

#include <Stdio.h>
int main() {
    int a = 0;
    int b = 10;
    /*do{
        循环体;
    }while(条件);*/
    /*while(条件){
        循环体;
    }*/
    while(a<5){
        a++;
        b--;
    }
    printf("%d %d",a,b);//结果:5 5
}


(3)for循环


(最好用于循环次数确定的情况)

#include <Stdio.h>
int main() {
    int a = 0;
    /*
    do{
        循环体;
    }while(条件);
    */
    /*
    while(条件){
        循环体;
    }
    */
    /*
    for(表达式1;条件1;表达式2){
      循环体;
    }
    */
    int count = 0;
    for(int i = 1;i<=10;++i){
      a++;
        count++;
      printf("第%d次a为%d\n",count,a);//从 第1次a为1 一直到 第10次a为10 
    }
}
注意!   int i=1,这一句定义i,可以放在循环体外定义,如果要这样定于i,你就要用c99的特性,devc++中要在工具-编译选项-中点击编译时添加以下命令,加入 -std=c99即可


解析:


我们这里确定了循环次数,即循环10此,每次加1,所以可以用for循环,当然其他循环也是可以的,视情况而定.
i为1时满足条件i<=10,再执行循环体,循环体执行完之后,再执行++i,判断是否满足条件i<=10,满足继续循环体.


总结:1.先声明一个循环变量还构造一个循环


2.再就是条件->循环体->表达式2->条件->循环体->表达式2之间的循环了


3.i超出条件时就可以退出了


(4)关键字


(1)break;

#include <Stdio.h>
int main() {
  int count = 0;
  for (int i = 1; i <= 5; ++i) {
    for (int j = 1; j <= 5; ++j) {
      printf("%d\n", count);
      count++;
    }
    if (count == 10) {
      printf("到10就退出了~");
      break;
    }
  }
}

结果:


0
1
2
3
4
5
6
7
8
9
到10就退出了~


解析:即可以看到退出的是最外层的for循环,当count为10的时候就执行if判断语句了,此时break是退出最外层的for循环.


(2)continue;


continue一般用于循环跳出一次(即此次循环不执行,直接执行下一次的循环),并且在continue语句之后的语句都不会执行了

#include <Stdio.h>
int main() {
  int count = 0;
  for (int i = 1; i <= 15; ++i) {
    count++;
    if (count == 10) {
      printf("碰到10了继续下一次for j循环~\n");
      continue;
    }
    printf("%d\n", count);
  }
}


结果:


1
2
3
4
5
6
7
8
9
碰到10了继续下一次for j循环~
11
12
13
14
15


解析:此时可以看到当count为10的时候,就会执行if语句的内容,并且不执行之后的语句了

目录
相关文章
|
机器人 Linux C语言
C语言, C++ IO 总结. 一篇文章帮你透析缓冲区存在的意义, C, C++ IO的常见用法
C语言, C++ IO 总结. 一篇文章帮你透析缓冲区存在的意义, C, C++ IO的常见用法
C语言, C++ IO 总结. 一篇文章帮你透析缓冲区存在的意义, C, C++ IO的常见用法
|
存储 自然语言处理 算法
C语言学习前五章思维导图式总结(超详细,复习必备)
C语言学习前五章思维导图式总结(超详细,复习必备),源文件在 process  on(在线流程图)上面,同名,需要多多支持。
1074 1
C语言学习前五章思维导图式总结(超详细,复习必备)
|
算法 C语言
C语言第五章:循环结构程序设计总结。(超详细)
C语言第五章:循环结构程序设计总结。(超详细)
410 0
C语言第五章:循环结构程序设计总结。(超详细)
|
存储 人工智能 C语言
C语言第二章 数据类型,运算符和表达式总结【完美补充文字版】(超级详细)
C语言第二章 数据类型,运算符和表达式总结【完美补充文字版】(超级详细)
529 0
C语言第二章 数据类型,运算符和表达式总结【完美补充文字版】(超级详细)
|
存储 编译器 C语言
C语言专业总结(六)
C语言专业总结(六)
88 0
|
存储 编译器 C语言
C语言专业总结(五)
C语言专业总结(五)
72 0
|
搜索推荐 编译器 C语言
C语言专业总结(四)
C语言专业总结(四)
79 0
|
机器学习/深度学习 算法 编译器
C语言专业总结(三)
C语言专业总结(三)
102 0
|
存储 编译器 C语言
C语言专业总结(一)
C语言专业总结(一)
84 0
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3