学习笔记day1

c语言

1.1开发环境

VMware:虚拟机(模拟计算机)

linux_env:镜像文件

Terminal

用户和系统进行交互的一个工具

Is

列出当前目录下的文件

vi编辑器的使用

vi专门用来写代码的工具

vi hello.c  //如果hello.c存在就打开,不存在就新建

命令行模式、底行模式转为插入模式:

  • i:进入插入模式,在光标所在位置前面开始新增资料

  • I:从光标所在列的第一个非空白字符前面开始插入资料

  • o:在光标所在列新增一列并进入插入模式

  • O:在光标所在列新增一列并进入编辑模式

  • a:从光标所在位置后面开始新增资料

  • A:从光标所在列最后面的地方开始新增资料

vi hello.c          //新建一个c文件
//helloworld文件
gcc hello.c     //编译文件 生成可执行文件
./a.out //运行可执行文件

vi文件操作指令

  • :q 结束编辑退出vi

  • :q!不保存编辑过的文档

  • :w 保存文档,其后可加要保存的文件名

  • :wq 保存文档并退出

  • :zz 同上

  • :x 同上

vi的删除/修改与复制

  • 剪切

  • nx 剪切从光标所在的字符开始的n个字符

  • ncb 剪切光标所在的n个单词

  • ncw 剪切光标所在的n个单词

  • c$ 剪切从光标所在的字符到行尾的所有字符

  • ndd 剪切自光标所在行开始的n行,如果不够则到字符段截止为止

  • 复制

  • y$ 复制从光标所在的字符到行尾

  • nyy 复制下n行

  • 粘贴

  • p 将缓冲区内的字符粘贴到光标所在位置

  • u 撤销

C语言注释

//单行注释

/*...*/多行注释

C语言变量

变量定义及输出

int a;//定义一个变两
int a = 100;//定义并赋初值
#include<stdio.h>
int main()
{
   int a = 100;//定义整数
   printf("a is %d\n",a);//输出小数
}
#include<stdio.h>
int main()
{
   float b = 1.02;//定义小数
   printf("b is %f\n",b);//输出小数
   retern 0;
}

数值转换

数的表示形式

  • 2进制

  • 8进制 在c语言中0开头表示8进制

  • 10进制 0x开头表示16进制

  • 16进制

输入语句

#include<stdio.h>
int main()
{
   int num1,num2,result;
   scanf("%d%d",&num1,&num2);
   result = num1%num2;
   printf("result is %d\n",result);
   return 0;
}

求和

#include<stdio.h>
int main()
{
   int a,b,c;
   scanf("%d%d%d",&a,&b,&c);
   int sum = a+b+c;
   printf("sum is %d",sum);
   return 0;
}

求平均值

#include<stdio.h>
int main()
{
   float a,b,c;
   scanf("%d%d%d",&a,&b,&c);
   float average = (a+b+c)/3.0;
   printf("average is %f\n",average);
   return 0;
}

逻辑表达式

  • == 相等

  • != 不相等

  • >

  • <

  • >=

  • <=

例子:输入一个数,判断此数是不是0

#include<stdio.h>
int main()
{
   int a;
   scanf("%d",&a);
   if(a==0)
  {
       printf("yes\n");
  }
   else
  {
       printf("no\n");
  }
   return 0;
}

例子:

  1. 显示:“please input a number”

  2. 用户输入

  3. 判断用户输入的数是不是>90

     

#include<stdio.h>
int main()
{
   printf("please input a number\n");
   int a,*p;
   float b;
   char str[10]="";
   scanf("%s",str);
   if(strchr(str,'.')==NULL)
  {
       sscanf(str,"%d",&a);
       p=&a;
  }
   else
  {
       sscanf(str,"%d",&a);
       p=&b;
  }
   
   

       
}

 

练习:用户输入一个整数,判断这个数是不是偶数,如果是偶数,打印evev,如果是奇数打印odd

继续:如果是偶数判断这个数的一般是不是偶数

#include<stdio.h>
int main()
{
   int a;
   scanf("%d",&a);
   if(a%2!=0)
  {
       printf("odd\n");
  }
   else
  {
       printf("even\n");
       if((a/2)%2!=0)
      {
           printf("a/2 is odd\n");
      }
       else
      {
           printf("a/2 is even\n");
      }
  }
   return 0;
}
//函数写法?
#include<stdio.h>
int isevev(int a)
{
   if((a/2)%2!=0)
      {
           printf("odd");
      }
       else
      {
           printf("even");
      }
}
int main()
{
   int a;
   scanf("%d",&a);
   isevev(a);
   isevev(a/2);
   return 0;
}

//作业:

  1. 判断一个数是否满足条件: a) 是7的倍数 b) 不是3的倍数 如果满足,输出yes,不满足输出no

  2. 计算某一时间的下一秒(笔试编程题) 20 59 59 下一秒 21:00:00 要求,如果用户输入了错误的时间,退出 25点退出, 61秒退出

          ```c
        #include<stdio.h>
        int main()
        {
            int a,b,c;
            scanf("%d%d%d",&a&b&c);
            if(a<24)
            {
                if(b<60)
                {
                    if(c<60)
                    {
                        c++;
                    }
                    else
                    {
                        return 0;
                    }
                }
                else
                {
                      return 0;
                }
            }
            else
            {
                return 0;
            }
            if(c>=60)
            {
                c=0;
                b++;
            }
            if(b>=60)
            {
                b=0;
                a++;
            }
            if(c>=24)
            {
                a=0
            }
            if(a<10)
            {
                printf("0%d",a);
            }
            else
            {
                printf("%d",a);
            }
            printf(":");
            if(b<10)
            {
                printf("0%d",b);
            }
            else
            {
                printf("%d",b);
            }
            printf(":");
            if(c<10)
            {
                printf("0%d",c);
            }
            else
            {
                printf("%d",c);
            }
            return 0;      
        }
        ```

     

#include<stdio.h>
int a;
double b;
int if_even()
{
   int *p;
   scanf("%s",str);
   if(strchr(str,'.')==NULL)
  {
       sscanf(str,%d,&a);
       p=&a;
       break;
  }
   else
  {
       continue;
  }
}
int main()
{
   while(1)
  {
       char str[];
       scanf("%s",str);
       if_even(str[])
  }
}

 

Gcc概述

gcc编译流程

  1. 预处理

  2. 编译

  3. 汇编

  4. 链接

语法:gcc[option|filename]

option

-E:可以使编译器在预处理阶段结束时就停止编译

-S:能使编译器在进行完编译之后就停止

编译流程分析

  1. 预处理阶段

  • gcc-E-o [目标文件] [编译文件]

  • .i文件为经过预处理的c原始文件

  • 将头文件加入到.c文件中形成.i文件

  1. 编译阶段

  • 检查代码的规范性、是否有语法错误

  • 把代码翻译成汇编语言

  • 将.i程序翻译成.s汇编语言原始程序

  1. 汇编阶段

  • 将汇编语言转化为二进制目标代码

  1. 连接阶段

  • 连接系统函数库

  •  

上一篇:C语言基础-网络相关函数


下一篇:CSS笔记day1