首页 > 其他分享 >《初学C语言第15天》

《初学C语言第15天》

时间:2023-12-04 22:32:37浏览次数:36  
标签:11111111 10 15 int ++ C语言 00000000 初学 printf

//////————————————————————进阶版

////数据在内存中的存储

////1.数据类型的介绍

//#include<stdio.h>

//int main()

//{

// int a = 10;//4字节

// float f = 10.0;//4字节

// short int b = 10;

// printf("%p\n",f);

// return 0;

//}

////整型类型

//char//[int]均可省略

// unsigned char

// signed char

//short

// unsigned short[int]

// signed short[int]

//int

// unsigned int

// signed int

//long

// unsigned long[int]

// signed long[int]

//浮点数类型:

//float

//double

//构造类型

//数组类型

//结构体类型 struct

//枚举类型 enum

//联合类型 union

//指针类型

//int* pi;

//char* pc;

//float* pf;

//void* pv;

//空类型:

//void 表示空类型(无类型)

//通常应用于函数的返回类型、函数的参数、指针类型。

//空类型举例

//#include<stdio.h>

////第一个void表示不会返回值

//void test(void)//()中的void是表示此函数是不需要参数的,且此处的void可有可无

//{

// printf("hehe");

//}

//int main()

//{

// test();

// return 0;

//}

//2.整形在内存中的储存

//数值有不同的表示形式:2、8、10、16进制

//整数的2进制也有三种表现形式:

// 前提:1.正整数的原、反、补均相同2.负整数:通过下列计算得出

// 原码:根据数值的正负直接写出的2禁止序列

// 反码:原码的符号位不变,其他的位,按位取反(0->1,1->0)

// 补码:反码+1

//#include<stdio.h>

//int main()

//{

// int a = 20;

// //a的2进制序列

// //原码:00000000 00000000 00000000 00010100

// // 原码的16进制:0x00 00 00 14

// //反码:01111111 11111111 11111111 11101011

// //补码:01111111 11111111 11111111 11101100

// int b = -10;

// //b的2进制序列

// //原码:10000000 00000000 00000000 00001010

// //原码的16进制:0x00 00 00 0a(每4个比特位为一个字节0000->0)//a为10

// //反码:11111111 11111111 11111111 11110101(每4个比特位为一个字节1111->f,f=15)

// //反码的16进制:0xfffffff5

// //补码:01111111 11111111 11111111 11110110

// //补码的16进制:0xfffffff6

// return 0;

//}

//结论:整数在内存中存放时,存放的是二进制的补码

//理由在计算机系统中,数值一律用补码来表示和存储。使用补码,

// 可以将符号位和数值位(符号位和数值位——就是二进制序列的首位数字代表了二者其一的哪一位)

// 统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)(虽然不可以减法,但是可以改成加法)

// 此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

//简单地说:eg:求1+(-1)

//1的原码  00000000 00000000 00000000 00000001

//1的补码  00000000 00000000 00000000 00000001(正整数原、反、补相同)

//-1的原码 10000000 00000000 00000000 00000001

//-1的补码 11111111 11111111 11111111 11111111

//原码相加 10000000 00000000 00000000 00000010(值为-2)错误

//补码相加 100000000 00000000 00000000 00000000(33位)相加时最高位“1”丢了,

//剩下的32个比特位全为0,则结果为0,正确

//————————————————————————————作业题

////【一维数组】输入10个整数,求平均值

//#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>

//int main()

//{

// int a,b,c,d,e,f,g,h,i,j;

// int Add = 0;

// scanf("%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);

// Add=a+b+c+d+e+f+g+h+i+j;

// int n = Add / 10;

// printf("平均值为%d\n", n);

// return 0;

//}

////打印图案的练习,该任务是打印用“*”组成的X形图案。多组输入,一个整数(2—20),

//// 表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。针对每行输入,输出用“*”组成的X形图案。

////输入--------5

////*   *

//// * *  

////  *

//// * *  

////*   *

////输入--------6

////*    *

//// *  *

////  **  

////  **

//// *  *

////*    *

//#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>

//int main()

//{

//    int n;

//    while (scanf("%d", &n) != EOF) {

//        int i, j;

//        for (i = 0; i < n; i++) {

//            for (j = 0; j < n; j++) {

//                if (i == j || i + j == n - 1) {

//                    printf("*");

//                }

//                else {

//                    printf(" ");

//                }

//            }

//            printf("\n");

//        }

//    }

//}

////打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。

////输入描述:

////多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“ * ”的数量。

////输出描述:

////针对每行输入,输出用“ * ”组成的“空心”正方形,每个“ * ”后面有一个空格。

////输入:4

////输出:

////* * * *

////*     *

////*     *

////* * * *

//#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>

//int main()

//{

//    int n, i, j;

//    while (~scanf("%d", &n))

//    {

//        for (i = 0; i < n; i++)

//        {

//            for (j = 0; j < n; j++)

//            {

//                if (i > 0 && (i < n - 1) && j > 0 && (j < n - 1))

//                    printf("  ");

//                else

//                    printf("* ");

//            }

//            printf("\n");

//        }

//    }

//    return 0;

//}

////输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。

////输入描述:

////一行,输入10个整数(范围 - 231~231 - 1),用空格分隔。

////输出描述:

////一行,逆序输出输入的10个整数,用空格分隔。

//#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>

//int main()

//{

//    int a[10] = { 0 }, i;

//    for (i = 0; i < 10; i++)

//    {

//        scanf("%d", &a[i]);

//    }

//    for (i = 9; i >= 0; i--)

//    {

//        printf("%d ", a[i]);

//    }

//    return 0;

//}

////有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

////输入描述:

////第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。(1≤n≤10, 1≤m≤10)

////从2到n + 1行,每行输入m个整数(范围 - 231~231 - 1),用空格分隔,共输入n * m个数,表示第一个矩阵中的元素。

////输出描述:

////输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。

//#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>

//int main() {

//    int m, n;

//    scanf("%d %d", &m, &n);

//    int a[m][n];

//    for (int i = 0; i < m; i++)

//        for (int j = 0; j < n; j++)

//            scanf("%d", &a[i][j]);

//    for (int i = 0; i < n; i++) {

//        for (int j = 0; j < m; j++) {

//            printf("%d ", a[j][i]);

//        }

//        printf("\n");

//    }

//    return 0;

//}

////输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

////数据范围:1<=n,m<=1000,序列中满足0≤val≤30000

////输入描述:

////输入包含三行,

////第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,

//// m表示第三行第二个升序序列中数字的个数。

////第二行包含n个整数,用空格分隔。

////第三行包含m个整数,用空格分隔。

////输出描述:

////输出为一行,输出长度为n + m的升序序列,即长度为n的升序序列和

////长度为m的升序序列中的元素重新进行升序序列排列合并。

//#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>

//int main()

//{

//    int n, m;

//    scanf("%d %d", &n, &m);

//    int nm[2000];

//    for (int i = 0; i < n + m; i++) scanf("%d", &nm[i]);

//    for (int j = 1; j < n + m - 1; j++)

//    {

//        for (int i = 0; i < n + m - j; i++)

//        {

//            if (nm[i] > nm[i + 1])

//            {

//                int temp = nm[i + 1];

//                nm[i + 1] = nm[i];

//                nm[i] = temp;

//            }

//        }

//    }

//    for (int i = 0; i < n + m; i++) printf("%d ", nm[i]);

//    return 0;

//}

////【一维数组】交换数组将数组A中的内容和数组B中的内容进行交换。(数组一样大)

//#include <stdio.h>

//void swapArrays(int a[], int b[], int size)  

//{

//    int temp;

//    for (int i = 0; i < size; i++)  

//    {

//        temp = a[i];

//        a[i] = b[i];

//        b[i] = temp;

//    }

//}

//int main() {

//    int size = 5;  // 数组大小

//    int a[] = { 1, 2, 3, 4, 5 };  // 数组a

//    int b[] = { 6, 7, 8, 9, 10 };  // 数组b

//    printf("Before swapping:\n");

//    printf("Array a: ");

//    for (int i = 0; i < size; i++)  

//    {

//        printf("%d ", a[i]);

//    }

//    printf("\n");

//    printf("Array b: ");

//    for (int i = 0; i < size; i++)  

//    {

//        printf("%d ", b[i]);

//    }

//    printf("\n");

//

//    swapArrays(a, b, size);

//

//    printf("\nAfter swapping:\n");

//    printf("Array a: ");

//    for (int i = 0; i < size; i++)  

//    {

//        printf("%d ", a[i]);

//    }

//    printf("\n");

//    printf("Array b: ");

//    for (int i = 0; i < size; i++)  

//    {

//        printf("%d ", b[i]);

//    }

//    printf("\n");

//    return 0;

//}

标签:11111111,10,15,int,++,C语言,00000000,初学,printf
From: https://blog.51cto.com/KKhahaha/8681882

相关文章

  • 【C语言基础】float、double 浮点数类型的四舍五入问题
    简短不看版:C语言中,不能进行doublea==doubleb 这样的运算。另外,printf(".1f",&double)的时候,数据输出不同时候,可能会不一样。根本问题时float类型或者double类型的浮点数在计算机中不能精确储存。              单精度浮点型(float)存储方式比如,若我们希......
  • C语言--深入理解指针
    C语言--深入理解指针一.指针的概念要知道指针的概念,要先了解变量在内存中是如何存储的。在存储时,内存被分为一块一块的,每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就是酒店的门牌号一样。变量和地址看下面代码voidmain(){intx=10,inty=20;}代......
  • [Educational Codeforces Round 159 (Rated for Div. 2)](https://codeforces.com/con
    EducationalCodeforcesRound159(RatedforDiv.2)好困,差点没打A-BinaryImbalance#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;voidsolve(){ strings; intn; cin>>n; cin>>s; if(n==......
  • 【C语言】宏定义不带参数
    ......
  • C语言常用的文件和目录操作
    仅个人感觉,在平时敲代码过程中涉及到的文件操作是比较少的,这就导致C语言的文件和目录操作等技术无法得到足够的练习,所以本文章就慢慢的积累偶尔会用到的文件和目录操作。本文多会以我的实际项目遇见的需求为例子展开记录文件和目录操作的一些方法。文件操作最基本的文件操作,比如......
  • Educational Codeforces Round 158 (Rated for Div. 2)
    EducationalCodeforcesRound158(RatedforDiv.2)AEDU的题总是感觉写起来怪怪的#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;inta[101];voidsolve(){intn,x;cin>>n>>x;intans=0;......
  • C语言-动态内存管理(三)
    动态内存管理第一部分解释了什么是动态内存管理,有什么用,以及一些函数,第二部分主要讨论了动态内存在使用的时候会出现一些经典的错误,需要注意。那么这个第三部分主要讨论一些有关动态内存管理有关的比较经典的笔试题。题目1请问运行Test函数会有什么样的结果?voidGetMemory(char*p)......
  • C语言常用函数
    C语言常用函数1.交换两个变量的值基本思路:使用临时变量来交换两个变量的值#include<stdio.h>intmain(){ inta=5; intb=10; inttemp; printf("Beforeswapping:a=%d,b=%d\n",a,b); temp=a; a=b; b=temp; printf("Afterswapping:a=%d,b=......
  • Day15 抽象类与接口
    1.抽象类格式关键字:abstract1.1抽象类:abstractclass类名{}publicabstractclassClassName{inta;publicabstractvoidfun();}除非该继承的子类也是抽象类,否则继承了抽象类的所有类都要重写抽象类的抽象方法不能new一个java抽象类,有点像c++中的......
  • Educational Codeforces Round 159 (Rated for Div. 2)
    EducationalCodeforcesRound159(RatedforDiv.2)基本情况A题秒了。B题想出来贪心思想,也想出来怎么找最优解了,但实现极其复杂繁琐,最后以先超时优化后又错误的结果告终。B.GettingPoints明显越后面开始学收益越高。然后写了个简单粗暴的纯模拟,T了。#include<iostrea......