【C语言学习】十进制转二进制和十六进制|函数封装|数组等基础要点讲解

心得感悟

对于宏定义的使用,我还只是一知半解,不过在日后学习过程中回头看,应该会有新的理解和感悟吧。封装和数组的使用的确让程序变得更加简洁方便,在练习数组的使用时,了解到了知识盲区,如果给一个数组赋初值0(或不赋值),则里面的所有元素的值都为0。经过几天的练习,我明显感觉到我编程的速度比以前快了,准确地说应该是程序逻辑思维更强了。果然编程还是需要自己思考多一点,想明白每个程序的原理,慢慢地就会发现自己不知何时就掌握了程序的逻辑思维。


1. 目的

  • 复习float,int,long,char类型用法
  • 复习比较运算符
  • 理解掌握数据类型转换
  • 掌握自定义头文件和实现文件的使用
  • 掌握数组的使用

2. 技术

  • char类型的使用
  • 比较运算符的注意事项
  • ++ -- 的运用
  • 自定义头文件和实现文件
  • 封装
  • 解决“头文件互相引用出错”的问题
  • 数组的基本使用
  • 写一个程序,用数组储存1-100的数,并输出它们的和
  • 写一个程序,实现由十进制转二进制,十进制转十六进制

3. 技术的使用

  • char类型的使用

char型数值可用%d,%c打印,用%d打印出来则为ASCII码

  • 比较运算符的注意事项

比较运算符有 > < == != || &&
&& 前为假,后面不执行
| | 前为假,后面执行

i = 10;
j = 20;
if(i < 20 && j++ >10){…};//前为假,j++不执行
运行后 j = 20
if(i < 20 || j++ >10){…};//前为假,j++执行
运行后 j = 21
  • ++ -- 的运用

a++ 表达式结束后才+1
++a 先+1,再运算

    int temp1 = 20;
    printf("1:%d\n",temp1++);
    printf("1:%d\n",temp1);
    //运行结果为20,21
    //a++ 当表达式结束之后 在+1
    //++a;先+1 再去运算
  • 自定义头文件和实现文件

.h 函数的声明,变量的声明(不能赋值)
.c 具体实现 实现函数的功能 操作变量

1.新建一个头文件

void login(void);

2.新建一个实现文件

#include"ATMapp.h"
#include<stdio.h>
#include "stdafx.h"
void login(void) {
    printf("************************\n\n");
    printf("         登录\n\n");
    printf("************************\n\n");
}
  • 封装
    1.创建.h文件
    2.创建.c文件
    3.在.h文件导入.c文件
    4.在使用的地方导入.h文件
#include "stdafx.h"
#include"ATMapp.h"
#include<iostream>
int main()
{
    login();
    return 0;
}
  • 解决“头文件互相引用出错”的问题
    解决办法:使用宏定义
    宏定义优点:
    1.给特定数值一个特定的意义
    2.便于管理
#ifndef
#define
    代码块(.c)
#endif
  • 数组的基本使用

什么时候用?
答:需要存储多个同种类型数据时。
1.能存储数据 就必须有内存
2.如何定义一个数组同时为他分配内存
3.数组定义必须明确知道数组大小
  a.初始化几个就是几个
4.数组的名字就是数组的首地址(第一个元素的地址)

int main(int argc, char const *argv[])
{
    //int a = 10;
    //定义一个数组 里面存的都是float的值 可以存4个数据
    //4*4byte=16byte
    float score[]={29,235,235,245};

    //访问第一个元素的值  0....n-1
    score[0];

    //获取第一个元素的地址
    &score[0];

    //使用%p打印地址
    printf("%p\n",&score[0]);
    printf("%p\n",score);
    //b.在定义时明确指定数组的大小
    int temp[5];
    //c.明确指定大小 并且初始化部分数据
    int temp2[5] = {1,2};
    
    //如何使用数组
    //访问 通过下标来访问 0 —— n-1
    printf("%d\n",temp2[0] );

    //赋值
    temp2[0] = 6;
    return 0;
}
  • 写一个程序,用数组储存1-100的数,并输出它们的和
    for循环实现
int main()
{
    int num[100];
    int i = 0;
    int sum = 0;
    for (i = 0; i < 100; i++) {
        num[i] = i + 1;
        sum += num[i];
    }
    printf("%d", sum);
    system("pause");
    return 0;
}

while循环实现

int main()
{
    int num[100];
    int i = 0;
    int sum = 0;
    while (i<100)
    {
        num[i] = i + 1;
        sum += num[i];
        i++;
    }
    printf("%d", sum);
    system("pause");
    return 0;
}
  • 写一个程序,实现由十进制转二进制,十进制转十六进制

先选一个十进制数计算,弄清楚它的运算顺序,再进行编写
顺序:对原数字求余,并存入数组→原数字/2(/16)→到数组下一个位置
十六进制有字母,在此用以下方法打印

#include "stdafx.h"
#include<iostream>

int main()
{
    int num1 = 0;
    int i = 0;
    int j = 0;
    int two[20];
    printf("【转换成二进制】\n");
    printf("请输入一个数字:");
    scanf_s("%d", &num1);
    while(1){
        two[i] = num1 % 2;
        num1 /= 2;
        if (num1 == 0) {
            break;
        }
        i++;
    }
    for (j=i; j >= 0; j--) {
        printf("%d", two[j]);
    }
    printf("\n\n");

    int num2 = 0;
    int m = 0;
    int n = 0;
    char six[20];
    printf("【转换成十六进制】\n");
    printf("请输入一个数字:");
    scanf_s("%d", &num2);
    while (1){
        six[m] = num2 % 16;
        num2 /= 16;
        if (num2 == 0) {
            break;
        }
        m++;
    }
    for (n=m; n >= 0; n--) {
        int k = six[n];
        if (k >= 10) {
            printf("%c", 'A' + k - 10);
            //'A'对应的ASCII码值为10
        }
        else
        {
            printf("%d", k);
        }
    }
    printf("\n\n");
    system("pause");
    return 0;
}

4.进制转换程序的实现效果

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

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,350评论 0 2
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,449评论 3 44
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 3,030评论 0 6
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,748评论 0 10
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,407评论 0 5