C语言基础(一)

目的:掌握用C语言编程的基本技能
内容: 1. 注释的使用
   2. #include的作用
   3. main函数的使用
   4. printf函数格式化输出
   5.scanf函数格式化输入
   6.C语言基本数据类型
   7.变量
   8. 运算符
   9.循环:if
   10.工资计算实战
   11.年龄转换实战

注释的使用

  1. //注释内容 单行注释:注释内容较简短且为一行的情况下使用
  2. /* 注释内容 */ 多行注释:注释内容较多且为多行的情况下使用
  3. / ** 注释内容 */ 文档注释(用于生成开发者文档):java语言特有的注释,其中的注释内容可以被JDK提供的工具javadoc所解析,生成一套能够以网页形式体现程序的说明文档

#include的作用

  1. include---宏 用来导入头文件。如果系统已经提供某些功能的实现,只需要使用include将这些功能所在的头文件导入进来
  2. < > 用来导入系统提供的类库,如:stdio.h stdlib.h math.h string.h
    " " 用来导入自己定义的头文件,如:calculate.h
  3. include  编译器首先从系统的类库里面去查找这个头文件,如果没有,再到自己的文件中查找,否则报错

main函数的使用

  1. main函数=代码块=完成特定功能,所有程序的入口都是main函数
  2. int返回值,用来记录当前程序的运行状态,0:正常结束 资源自由分配,非0: 1 异常结束 没收资源
  3. int argc:参数个数 argument count;char* argv[ ]:每个参数组成的字符串数组


    main函数的使用

printf函数格式化输出

  1. printf输出语句,用来让终端输出数据
  2. 打印常量字符串:printf("hello world");
  3. 转义字符:\n表示回车换行,从当前位置移到下一行的开头;\r表示回车,从当前位置移到本行的开头;\t表示水平制表符,从当前位置移到下一个tab位置


    printf函数格式化输出

scanf函数格式化输入

  1. scanf输入语句,用来向终端输入数据
  2. 当用户在终端输入数据时,数据会被存放到缓冲流,scanf用于在缓冲流中找到数据并将其放入到给定的位置
  3. 放入到给定的位置就是保存输入的数据,保存数据需要用到变量,我们只需要把数据送到对应变量的地址就可以存储该数据,并通过该变量使用该数据。所以使用&获得变量pwd的地址
int pwd=0;
  scanf("%d",&pwd);
  printf("pwd=%d\n",pwd);
  1. 利用如下格式可一次性输入两条数据
int num1,num2;
  scanf("%d %d",&num1,&num2);
  printf("%d %d\n",num1,num2);
  1. 注意:不要在scanf里随便写内容,scanf函数中" "里的内容是用来控制用户输入格式的。如下,此时输入数据必须按rose+数据的格式,才可以将数据送入到变量中
int pwd=0;
  scanf("rose%d",&pwd);
  printf("pwd=%d\n",pwd);

C语言基本数据类型

1.首先明确, C语言并没有具体规定哪个基本类型应该有多少字节数,而且这个与OS、编译器有关

  1. 虽然16位、32位或者64位的机子各种类型并不一样,但有几条规则(ANSI / ISO制定):
  • short 至少占用2个字节
  • int 建议为一个机器字长,32位环境下为4个字节,64位环境下为8个字节
  • short 的长度不能大于int,long 的长度不能小于int
  1. 基本数据类型参考:
  • char 字符,如:'a','d'
  • short 短整型
  • int 整型,如:1,67
  • long 长整型
  • float 单精度浮点数,如:1.5,78.0
  • double 双精度浮点数
    可自己使用 printf("%d\n",sizeof(int)); 测试具体的数据
  1. 控制输出格式:
  • %md:要求输出字段宽度为m,右对齐,不够左端补空格,大于m按实际输出,如%3d
  • %0md:要求输出字段宽度为m,右对齐,不够左端补0,大于m按实际输出,如%02d
  • %m.nd:要求输出字段宽度为m,右对齐,后面n个位置当作小数,没有的补0,最前面m-n个没有的补空格,如%3.2d
  1. 注意:
  • C语言中printf输出float和double都可以用%f,而double型数据还可以用%lf
  • scanf当中,若是对双精度的变量赋值,必须是%后跟lf;printf当中可以用%f也可以用%lf
  • printf()只会看到双精度数,printf的%f格式总是得到double,所以在printf()中使用%f和%lf的输出显示效果是一样的
  • 对于变量来说,double类型比float类型的精度要高。double精度更高是指它存储的小数位数更多,但是输出默认都是6位小数。如果你想输出更多小数,可以自己控制,比如%.10lf就输出10位小数

变量

  1. 变量是程序可操作的存储区的名称;变量的类型决定了变量存储的大小;变量的名称可以由下划线、字母、数字组成,它必须以字母或者下划线开头。简单来说,变量就是用来记录数据的。
  2. 变量的声明:没有分配内存空间,使用的时候才会分配,如 int a;
  3. 变量的定义:立刻为我们分配内存空间 赋初值,如 int a = 0;
  4. 变量的使用:
int num1,num2;
  scanf("%d %d",&num1,&num2);
  printf("%d %d\n",num1,num2);
  1. bool类型的变量(需要导入stdbool.h),其值:非零即真(1),零为假(0)
bool status=-3;//false
  printf("%d\n",status);//结果是1    

运算符

  1. 算术运算符:
  • + 
  • - 
  • * 
  • / 取整
  • % 取余
  • ++ 自增运算符,整数值加1
  • -- 自减运算符,整数值减1
    注意:a++是先赋值后运算,++a是先运算后赋值
  1. 逻辑运算符:
  • &&  ,如果两个操作数都非零,则条件为真
  • ||  ,如果两个操作数有任意一个非零,则条件为真
  • *  ,逆转操作数的逻辑状态
  1. 关系运算符
  •  == 检查两个操作数的值是否相等,如果相等则条件为真
  •  != 检查两个操作数的值是否相等,如果不相等则条件为真
  •  > 判断左操作数的值是否大于右操作数的值,如果是则条件为真
  •  < 判断左操作数的值是否小于右操作数的值,如果是则条件为真
  •  >= 判断左操作数的值是否大于或等于右操作数的值,如果是则条件为真
  •  <= 判断左操作数的值是否小于或等于右操作数的值,如果是则条件为真
  1. 赋值运算符
  • = C=A+B表示将A+B的值赋给C
  • += C += A相当于C = A + C
  • -= C -= A相当于C = A - C
  • *= C *= A相当于C = A * C
  • /= C /= A相当于C = A / C
  • %= C %= A相当于C = A % C

循环:if

  1. if语句的形式:C语言把任何非0和非null的值假定为true,把0或null假定为false


  2. 问号表达式(也称之为三目运算符):
    (表达式1)?(表达式2):(表达式3),如果表达式1成立则执行表达式2,否则执行表达式3


a > b ? s = a + b : s = a - b

这里的例子:如果a>b,那么s的值为a+b,否则s的值为a-b

  1. 逗号表达式:
    将两个及以上的式子连接,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值
    例如:(1+2,3+5)称为逗号表达式,其求解过程先1+2,后3+5,整个表达式的值为8
  int temp = 1;
  if(temp--,temp){
      printf("temp是1"); 
  }else{
      printf("temp是0");
  }
  
  //输出结果:temp是0 

工资计算实战

#include 

int main(){
  int salary = 0;//记录工资
  int tax = 0;//税 
  
  //接收输入
  printf("请输入工资:"); 
  scanf("%d",&salary);
  
  //开始计算 
  if(salary <= 5000){
      
  } else if(salary > 5000 && salary <= 8000){
      tax= (salary - 5000)*0.1;
  } else if(salary > 8000 && salary <=10000){
      tax = (salary - 8000)*0.15 + 3000*0.1;
  } else{
      tax = (salary - 10000)*0.2 + 2000*0.15 + 3000*0.1;
  }
  
  //输出工资 
   printf("到手工资:%d",salary -tax);
   return 0;
}

年龄转换实战

#include 
//输入年龄 20
//your age is twenty; 

int main(){
  int age = 0;
  
  //保存个位数 21%10 = 1 
  char* gewei[] = {"","one","two","three","four","five","six","seven","eight","nine"}; 
  //保存10-19
  char* temp[] = >{"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","ninet>een"};
  //保存十位 
  char* shiwei[] = {"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; 
  
  printf("请输入年龄:");
  scanf("%d", &age);
  
  char *name;//保存每次取出的字符串 
  if(age < 10){
      //直接访问各位数数组
      name = gewei[age];
  }else if(age >= 10 && age <= 19){
      //获取个位数  
      int index = age % 10;
      name = temp[index];
  } else{
      //获取个位数 
      int g = age % 10; 
      //获取十位数 
      int s = age / 10;
      //取出对应的单词
      int sString = shiwei[s-2];
      int gString = gewei[g];
      
      printf("your age is %s-%s\n"
      ,sString,gString); 
      
      //程序还未运行完毕就提前结束
      return 0; 
  } 
  
  printf("your age is %s\n",name);
   
  return 0;
}

注:仅用于1~99岁的转换

你可能感兴趣的:(C语言基础(一))