1102--C语言基础(实操) C语言的基本开发流程+标识符+数据类型+运算符+流程控制(顺序结构、选择结构、循环结构)+练习题

C语言的基本开发流程

编辑源代码-->编译-->链接-->执行

    .c                  .obj       .exe

  • 预处理

头文件展开、宏替换、删除注释、处理条件编译

gcc:gnu(开源计划) c compiler(编译器)

gcc -E main.c -o main.i

  • 编译

将代码翻译成汇编指令,逐行进行语法检查

gcc -S main.i -o main.s

  • 汇编

将汇编文件编译成机器码文件(二进制文件)

gcc -c main.s -o main.o

  • 链接

生成符号表、链接库文件

gcc main.o -o main.exe

  • 一步登天:gcc main.c -o main.exe

标识符

简述

标识符:变量名、函数名

保留字:系统已经占用的关键字

关键字:C语言中预定的具有特定含义的词,也称保留字。共有32个。

标识符:用来标识变量、符号常量、数组、函数的名字

组成:

  1. 只能由英文字母、数字和下划线组成         
  2. 第一个字符不能是数字(防止他是16进制数字),只能是字母或下划线

分隔符:有逗号和空格两种

逗号一般分割变量或参数,空格用于分割单词

命名规则
  1. 不能与关键字同名
  2. 不能以数字命名 
  3. 见名知意
  4. 不能与关键字同名
  5. 区分大小写
命名规范

匈牙利命名  tree_hei

驼峰命名:

  • 小驼峰  treeHei
  • 大驼峰  TreeHei

数据类型

数据类型

占据内存大小

数据范围

格式字符

int(整型)

4字节

+21亿~-21亿

%d

short(短整型)

2字节

-32768 ~ + 32767

%hd

long(长整型)

8字节

+21亿~-21亿

%ld

long long

8字节

-2^63(-9.2233720368548e+18) ~ 2^63-1(9.2233720368548e+18)

%lld

float(单精度型)

4字节

-3.4x10

-38 ~ 3.4x10

38

%f、%e、%a

double(双精度型)

8字节

-1.7x10

-308 ~ 1.7x10

308

%f、%e、%a

long double

8字节

-1.7x10

-308 ~ 1.7x10

308

%lf、%le、%la

char(字符型)

1字节

-128~127

%c

格式符与变量存储数据应当一致,不对应会出现数据错误,如:

上面unsigned为无符号,储存不应为负数,此题中负号不表示数值,而作为最高位的值(负号为1),所以值为2^16-1。

运算符

算术运算符

详细知识点及运算符优先级见此篇文章:http://t.csdnimg.cn/QdM6D

那么如何使a、b类型不变(均为int),得出想要的小数结果呢?

我们只需要使地板除(/)左右两边任意一方为小数即可,由此我们可以使用类型转换:

  • 强制类型转换

强制类型转换:将数据强行转换为你想要的类型--2级

 

float c = ( float ) a / b ;

float优先级(强制类型转换优先级)为2级,高于地板除(/)3级,高于赋值(=)

  • 自动类型转换

自动类型转换:低类型数据与高类型数据进行运算,结果为高类型数据

易出bug但不易被发现,举个例子:

逻辑运算符

&&:逻辑与/并且  11级

        左右两边条件都为真,结果为真;左右任意一边条件为假,结果为假

| |:逻辑或/或者  12级

       左右两边条件都为假,结果为假;左右任意一边条件为真,结果为真

! :逻辑非    2级

        非真为假,非假为真

有括号先算括号里的(括号优先级为1级)

流程控制

  • 顺序结构

       以函数为单元,自上而下执行。若当前行为函数调用语句,则执行该函数后回来继续往下执行

  • 选择结构

        也称为分支结构,根据某个条件选择执行某个语句(根据输入不同选择执行不同语句)

         1、 if分支结构

                 单分支

                       if(条件){         

                        }

                       条件为真则执行对应语句,条件为假则不执行

                       

                双分支                       

                        if(条件){

                        }

                        else{

                        }                

                        若if条件为真,则执行对应代码;

                        若if条件为假,则执行else代码。

                        

                多分支

                        if(条件){

                        }

                        else if(条件){

                        }

                        else{

                        }

                        

                ​​​​​​​        ​​​​​​​

   代码放在这里:

#include <stdio.h>

int main(){
   int score=0;
    scanf("%d",&score);
    if(score >= 90 && score <= 100){
        printf("优秀");
    }else if(score >= 80 && score < 90){
        printf("良好");
    }else if(score >= 70 && score < 80){
        printf("中等");
    }else if(score >= 60 && score < 70){
        printf("及格");
    }else if(score >= 0 && score < 60){
        printf("不及格");
    } else{
        printf("成绩出错,请联系教务处");
    }
    return 0;
}

                        

        2、switch分支结构(遇break停止执行,不遇到则从选择条件继续执行直到所有语句执行完毕)

                switch(整型变量/字符变量){

                        case a(同类型常量) :(可有若干条语句)

                        break;

                        case b :

                        break;

                        ······

                        default :

                }

  • 循环结构

        for循环(明确循环次数及规律)

        while循环(循环次数不明确,需根据循环体的执行情况来决定)

        do···while循环(至少执行一次)

        break:立即结束循环

        continue:跳过本次循环

练习

1.输入整数,若该整数为3的整数倍输出yes,否则输出no

2.输入整数,若该整数在200-400之间,输出OK

3.输入整数,若该数字在91-100之间,输出A

                     若该数字在81-90之间,输出B

                     若该数字在60-80之间,输出C

                     若该数字在0-60之间,输出D

                     其他,输出other

4.输入两个整数,输出他们的较大值

5.输入一个整数,输出它的绝对值

6.输入三个数,判断是否为连续数,是输出yes,不是输出no(连续数指1 2 3或3 2 1)

7.输入一个华氏温度F,输出摄氏温度,计算公式为c=5/9*(F-32),要求结果保留两位小数(地板除问题)

8.两数交换

9.三个数求最大值

10.某小区采取阶梯用电收费  100度以下收费0.49元 100-200度收费0.79元 201-300度1.0元
            300度以上1.35元  输入用电量 输出费用(以元为单位 结果保留两位小数)

代码如下:

//输入整数,若该整数为3的整数倍输出yes,否则输出no
#include <stdio.h>
int main(){
   int num=0;
    scanf("%d",&num);
    if(num%3==0){
        printf("yes");
    }else{
        printf("no");
    }
    return 0;
}


//输入整数,若该整数在200-400之间,输出OK
#include <stdio.h>
int main(){
   int num=0;
    scanf("%d",&num);
    if(num >= 200 && num <= 400){
        printf("OK");
    }
    return 0;
}

//输入整数,若该数字在91-100之间,输出A
//若该数字在81-90之间,输出B
//若该数字在60-80之间,输出C
//若该数字在0-60之间,输出D
//其他,输出other
#include <stdio.h>
int main(){
   int num=0;
    scanf("%d",&num);
    if(num > 90 && num <= 100){
        printf("A");
    }else if(num > 80 && num <= 90){
        printf("B");
    }else if(num > 60 && num <= 80){
        printf("C");
    }else if(num >= 0 && num <= 60){
        printf("D");
    }else{
        printf("other");
    }
    return 0;
}

//输入两个整数,输出他们的较大值
#include <stdio.h>
int main(){
   int a=0;
   int b=0;
    scanf("%d %d",&a,&b);
    if(a >= b){
        printf("%d",a);
    }else {
        printf("%d",b);
    }
    return 0;
}


//输入一个整数,输出它的绝对值
#include <stdio.h>
int main(){
   int num=0;
    scanf("%d",&num);
    if(num >= 0){
        printf("%d",num);
    }else {
        printf("%d",-num);
    }
    return 0;
}


//输入三个数,判断是否为连续数,是输出yes,不是输出no(连续数指1 2 3或3 2 1)
#include <stdio.h>
int main(){
   int a = 0;
   int b = 0;
   int c = 0;
    scanf("%d %d %d",&a,&b,&c);
    if((b == a + 1 && b == c - 1) || (b == a - 1 && b == c + 1)){
        printf("yes");
    }else {
        printf("no");
    }
    return 0;
}

//输入一个华氏温度F,输出摄氏温度,计算公式为c=5/9*(F-32),要求结果保留两位小数(地板除问题)
#include <stdio.h>
int main(){
    int F=0;
    scanf("%d",&F);
    float c=5.0/9*(F-32);
    printf("%.2f",c);
    return 0;
}

//两数交换
#include <stdio.h>
int main(){
    int a=0;
    int b=0;
    scanf("%d %d",&a,&b);
    int c = 0;
    c = a;
    a = b;
    b = c;
    printf("交换后的结果为:%d %d",a,b);
    return 0;
}

//三个数求最大值
#include <stdio.h>
int main(){
    int a = 0;
    int b = 0;
    int c = 0;
    scanf("%d %d %d",&a,&b,&c);
    int max = 0;
    if(a >= b && a >= c){
        max = a;
    }else if(b >= c && b >= a){
        max = b;
    }else{
        max = c;
    }
    printf("最大值为:%d",max);
    return 0;
}

//某小区采取阶梯用电收费 100度以下收费0.49元
//                   100-200度收费0.79元
//                   201-300度1.0元
//                   300度以上1.35元
// 输入用电量 输出费用(以元为单位 结果保留两位小数)
#include <stdio.h>
int main(){
    int num=0;
    scanf("%d",&num);
    double cost = 0;
    if(num < 100){
        cost = num * 0.49;
    }else if(num >= 100 && num <= 200){
        cost = 0.79 * (num - 100) + 49;
    }else if(num >= 201 && num <= 300){
        cost = 1.0 * (num - 200) + 128;
    }else{
        cost = 1.35 * (num - 300) + 228;
    }
    printf("费用为:%.2f",cost);
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值