C learning_3(上)

简介: C learning_3

1.字符串


"hello world!"
//字符串 - 一串字符
//字符 - 键盘输入的任何一个值


    这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。 注:下图中字符串的结束标志是一个'\0'的转义字符。在计算字符串长度的时候'\0'是结束标志,不算作字符串的内容。

#include<stdio.h>
#include<string.h>
int main()
{
  //字符串 - 一串字符
  //字符 - 键盘输入的任何一个值
  char arr1[] = "abc";//[a] [b] [c] [\0]
  char arr2[] = { 'a','b','c'};//[a] [b] [c] ......
  char arr3[]= { 'a','b','c','\0'};//[a] [b] [c] [\0]
  //打印字符串 - %s     //输出结果
  printf("%s\n", arr1); //abc
  printf("%s\n", arr2); //abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘟bc - ?\
  无字符串的结束标志 - '\0' - 从而出现这样的随机值
  printf("%s\n", arr3); //abc - 加入'\0'就不会出现错误了
  //strlen - 库函数 - 求字符串的长度
  //从给定的地址,向后数字符,直到遇到'\0'结束,'\0'不统计在内
  printf("%d\n", strlen(arr1));//3
  printf("%d\n", strlen(arr2));//35 - 随机值
  printf("%d\n", strlen(arr3));//3
  return 0;
}


2.转义字符


假如我们要在屏幕上打印一个目录: c:\code\test.c 我们该如何写代码?

#include <stdio.h>
int main()
{
    // \t - 制表符  \n - 换行符
    printf("c:\code\test.c\n");
    // ??) 三字母词
    printf("(are you ok??)");
    return 0;
}


实际上程序运行的结果是这样的:

1.c:code  est.c
2.(are you ok]


为什么呢?因为这些字符存在特殊的意义,所以不能直接打印,从而我们就需要转义字符进行转义,这样我们才能输出我们想要表达的值。


当我们改变一下程序:将特殊含义字符前面加 \

#include <stdio.h>
int main()
{
    // \t - 制表符  \n - 换行符
    printf("c:\\code\\test.c\n");
    // ?// 三字母词
    printf("(are you ok\?\?)");
    return 0;
}


此时程序运行的结果是这样的:

c:\code\test.c
(are you ok??)


这样就是我们想要的结果啦。


接下来介绍一下C语言常用的转义字符

\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd d d d表示1~3个八进制的数字。 如: \130 表示字符X
\xdd d d表示2个十六进制数字。 如: \x30 表示字符0


这里我们介绍一下/ddd和/xdd

#include<stdio.h>
int main()
{
  //八进制 130 - 十进制 88 - 对应的ASCII码为 X
  printf("%c\n", '\130');// X
  //十六进制 x31 - 十进制 49 - 对应的ASCII码为 1
  printf("%c\n", 'x31');// 1
  return 0;
}


现在让我们来看看自己是否学会了!!!

#include <stdio.h>
int main()
{
    //问题1:在屏幕上打印一个单引号',怎么做?
    //问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
  printf("%d\n", strlen("c:\test\x22\129\test.c"));
  return 0;
}

值为多少呢? ---15


这里有一个坑\129里面的9并不是八进制,所以算两个字符。


3.注释


       1. 代码中有不需要的代码可以直接删除,也可以注释掉

       2. 代码中有些代码比较难懂,可以加一下注释文字


注释有两种风格:


       C语言风格的注释 /*xxxxxx*/ 缺陷:不能嵌套注释

       C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行

#include<stdio.h>
int main()
{
  //以 // 开头的注释是属于C++的注释风格
  //注释
  //int a = 0;
  //以 /**/ 开头的注释是属于C语言的注释风格 - 不能嵌套
  /*int a = 0;*/ 
  return 0;
}


4.选择语句


       1.if -- else if -- else 语句

       2.switch -- case -- break 语句

//if - else语句
#include <stdio.h>
int main()
{
    int coding = 0;
    printf("你会去敲代码吗?(选择1 or 0):>");
    scanf("%d", &coding);
    if(coding == 1)
   {
       prinf("坚持,你会有好offer\n");
   }
    else
   {
       printf("放弃,回家卖红薯\n");
   }
    return 0;
}
//switch - case - break
#include<stdio.h>
int main()
{
    int coding = 0;
    printf("你会去敲代码吗?(选择1 or 0):>");
    scanf("%d", &coding);
    switch (coding)
    {
    case 1:
        printf("坚持,你会有好offer\n");
        break;
    case 0:
        printf("放弃,回家卖红薯\n");
        break;
    }
}


5.循环语句


       1.for语句

       2.while语句

       3.do ... while语句

//for语句
#include <stdio.h>
int main()
{
    printf("好好学习\n");
    int line = 0;
    for(line = 0;line <= 20;line++)
    {
        printf("我要继续努力敲代码\n");
    }
    if (line > 20)
        printf("好offer\n");
    return 0;
}
//while语句
#include <stdio.h>
int main()
{
    printf("好好学习\n");
    int line = 0;
    while (line <= 20)
    {
        line++;
        printf("我要继续努力敲代码\n");
    }
    if (line > 20)
        printf("好offer\n");
    return 0;
}
//do ... while语句
#include <stdio.h>
int main()
{
    printf("好好学习\n");
    int line = 0;
    do
    {
        printf("我要继续努力敲代码\n");
        line++;
    } while (line <= 20);
    if (line > 20)
        printf("好offer\n");
    return 0;
}


6.函数


       函数可以理解为一个模块的代码,单独实现一个功能。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int Add(int x, int y)
{
  int z = x + y;
  return z;//z的类型是整型int,返回也为int
}
int main()
{
  //函数可以理解为一个模块的代码
  //单独实现一个功能
  int a = 0;
  int b = 0;
  int sum = 0;
  //输入
  scanf("%d %d", &a, &b);
  sum = a + b;
  sum = Add(a, b);
  //输出
  printf("%d\n", sum);
  return 0;
}


这里我们来看这段代码,求两个数的和,我们采用了直接求和、函数求和两种方法,单凭本程序看,函数求和的写法比直接求和的方法的代码行数明显增多,这里肯定有疑问为什么还要使用函数的方法呢?在这里我们格局要放大,当未来程序特别复杂,某个功能的实现代码量比较多的时候,我们需要多次使用该代码,但是我们总不能每次都写这个功能的代码,这样会使程序量变大,此时,就体现了函数的功能,我们只需要调用该函数就行,非常简洁。


7.数组


当我们要存储一个班上100多位学的成绩,我们该怎么存储呢?此时肯定有人说:肯可以定义一百个变量,存储每个同学的成绩,这种方法确实可以,但是如果我们有1000位,10000位同学的时候呢?这种每个同学都定义一个变量去存储成绩,必然会耗费大量的时间去写我们的代码,那有什么简便方法吗?C语言就为我们提供了数组的定义,它可以定义一组相同类型元素的集合。

#include<stdio.h>
int main()
{
  int score1 = 90;
  int score2 = 91;
      .
      .
      .
  //这样存储显然太麻烦
  //数组 - 可以保存一组相同数据类型的集合
  //整型数组
  int scores[10] = { 90,91,92,93,94,95,96,97,98,99,100 };
  //用数组的方式非常容易的存储了10位同学的成绩
  //字符数组
  char name[10];
  return 0;
}

C learning_3(下):https://developer.aliyun.com/article/1424323

相关文章
|
4月前
|
机器学习/深度学习 传感器 自然语言处理
Deep Learning
【6月更文挑战第7天】
36 2
|
4月前
|
机器学习/深度学习 数据采集 人工智能
Supervised Learning
【6月更文挑战第7天】
40 2
|
机器学习/深度学习 算法 决策智能
【5分钟 Paper】Deep Reinforcement Learning with Double Q-learning
【5分钟 Paper】Deep Reinforcement Learning with Double Q-learning
106 0
|
5月前
|
存储 编译器 C语言
C learning_2
C learning_2
|
5月前
|
编译器 C语言
C learning_1
C learning_1
|
5月前
|
算法 C语言 数据安全/隐私保护
C learning_6
C learning_6
|
5月前
|
存储 API 数据安全/隐私保护
C learning_7
C learning_7
|
5月前
|
存储 安全 程序员
C learning_5
C learning_5
|
5月前
|
存储 算法 Unix
C learning_8
C learning_8
|
5月前
|
存储 缓存 安全
C learning_4
C learning_4