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<stdio.h>  编译器首先从系统的类库里面去查找这个头文件,如果没有,再到自己的文件中查找,否则报错

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 <stdio.h>

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 <stdio.h>
//输入年龄 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岁的转换

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容