球体体积,需要在数字前面加0b

作者: 编程  发布:2019-12-28

请编写递归函数,以十六进制形式输出自然数。函数原型voidPrintHex(intnum,intcap);说明:参数 num 为待输出的自然数,cap 为大写标记。函数将自然数 num 以十六进制形式的输出,以字母A~F或a~f表示为10~15的数字。若 cap 为1(真),则以采用大写字母,否则采用小写字母。裁判程序#includestdio.hvoidPrintHex(intnum,intcap);intmain(){intn,c;scanf("%d%d",n,c);PrintHex(n,c);putchar('n');return0;}/*你提交的代码将被嵌在这里*/测试数据输入样例输出样例0003702593613A8214748364707fffffff要求:不得使用循环语句,不得调用printf函数。

```

一、求圆面积表面积体积

 

//main.c

问题描述

C语言内存分析

//day06

接受用户输?的数值,输出以该值为半径的球体表面积,

一、进制

//

球体体积。pi 取值3.1415926536 ,结果保留10位小数,每一列占

概念:进制是一种计数方式,是数值的表现形式

//Created by且听风吟on 2017/5/14.

20个字符,左对齐。

4种主要的进制:

//Copyright © 2017年且听风吟. All rights reserved.

样例输入

①. 十进制:0~9 

//

一个满足题目要求的输入范例。

②. 二进制:0和1

#include

例:

③. 八进制:0~7

int main() {

1

④. 十六进制:0~9+a b c d e f

//编程中默认就是十进制

样例输出

C语言在默认的情况下为十进制。

intnum =12;

与上面的样例输入对应的输出。

Int num=1010;//十进制

//如何输出十进制%i %d以十进制的方式输出数据

例:(第一行1是输入,第二行是输出)

Int num=0b1100;//二进制,以0b或者是0B开头

    printf("十进制: %in",num);

1

Int num=014;//八进制,以0开头

//在编程中想表示二进制,需要在数字前面加0b

3.1415926536 12.5663706144 4.1887902048

Int num=0x4;//十六进制,以0x开头

    int num1 =0b1100;

数据规模和约定

占位符:

    printf("二进制: %in",num1);

所有结果在double类型的表示范围内。

%d和%i    :一十进制整数的形式输出一个值

//在编程中想表示八进制,需要在数字前面加0

*/

9159.com ,%o :以不带符号的八进制输出

       int num2 =014;

#include<stdio.h>

%x :以不带符号的十六进制输出

      printf("十进制: %in", num2);

int main()

%u :以不带符号的十进制输出

//在编程中想要表示我们16进制,需要在前面加上0x

{

%c : 输出字符

intnum3 =0xc;

double r;

%p : 输出地址

printf("十进制: %in",num3);

double pi=3.1415926536;

%f : 输出小数

#pragma mark通过八进制的形式,十六进制形式输出

scanf("%lf",&r);

%s : 输出字符串

//通过八进制的形式输出10,如果14,代表我们说的是真确的

printf("%.10f%20.10f%20.10f",pi*r*r,4*pi*r*r,4*pi*r*r*r/3);

N位二进制的取值范围:

// %o就是以八进制的方式输出

return 0;

2位···0~3   0~2的2次方-1

    printf("八进制: %on", num);

}

3位···0~7   0~2的3次方-1

//通过十六进制的形式输出12,如果c,代表我们说的是正确的

//注意1:结果保留10位小数,每一列占20个字符,左对齐的输入

N位···   0~2的n次方-1

// %x就是以16进制的方式输出

//注意2:半径的定义

判断以下数据是否正确:

    printf("十六进制: %xn", num);

二、简单加法问题描述

0x7h4 0986 .089 0b325 10e8.7 96f -.003 

//注意:在c语言中没有以二进制输出的占位符

小于10的自然数中有四个数字能除尽3或5(3, 5, 6, 9),它们的和为23。 请计算所有小于1000的自然数中能除尽3或5的数字的合。然后使用标准输出cout,输出你的结果。

 

    return0;

输入格式 无。

类型的取值:

}

输出格式 一行一个整数,表示你的结果。#include<stdio.h>

在64位编译器下,int类型 占4个字节 共4x8=32bit char类型 占1个字节 共1x8=8bit ,在内存中以字节为单位进行存储。

```

int num

 

{

二、内存分析

int sum=0;

注意:内存寻址,由大到小。

for(n=0;n<1000;n++)

Int a=1;

{

Int b=2;

if||

 

sum+=n;

三、类型说明符

}

Short== Short int %d 2

return sum;

Long ==long int %ld 8

}

Long long ==Long long int  %lld 8

int main()

Signed ==Signed int==int %d 4(有符号)

{

Unsigned ==Unsigned int %u 4(无符号)

int n;

Signed和unsigned的区别在于最高位要不要拿来作为符号位,显然后者的取值范围更大。这两个说明符可和long等说明符组合使用,但不会改变字节数。Unsigned代表int类型的最高位,不必用来作为符号位。

printf("%d",num;//调用,输出

 

return 0;

四、位运算

}

 (一)按位与 &

//注意if||内括号

功能:只有对应的两个二进制位均为1时,结果才为1,否则为0。

方法二:

示例:9&5 的结果为1

#include<iostream>

1001

using namespace std;

0101

int main()

——

{

0001

int n,sum=0;

说明:如果位与上1则保留原值,与上0则为0。

for(n=0;n<1000;n++)

应用:查询0101 0111 0000的倒数第六位是0还是1,则可以与上数值以判断,得出的结果是什么,那么它的原值就是什么。

{

0101 0111 0000

if||//如果自然数能除尽3或5

0000 0010 0000

sum+=n;//求和

0000 0010 0000

}

(二)按位或 |

cout<<sum;

功能:只要对应的两个二进制位有一个为1则结果为1,否则为0。

return 0;

举例:9|5的结果为13

}

1001

方法三:

0101

#include<stdio.h>

——

int main()

1101

{

(三)按位异或 ^

int n,sum=0;

功能:当对应的两个二进制位不相等时,结果为1,否则为0。

for(n=0;n<1000;n++)

举例:9^5的结果为:12

{

1001

if||

0101

sum+=n;

——

}

1100

printf;

规律:

return 0;

①. 相同整数异或的结果为0,如5^5=0

}

②. 顺序可以交换。如9^5^9=9^9^5=0^5=5

三、回文数问题描述

③. 任何数值跟0进行异或,结果还是原来的数值。9^0=9

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

④. a^b^a==b

输出格式 按从小到大的顺序输出满足条件的四位十进制数。

 

#include<stdio.h>

(四)按位取反 ~

int main()

举例:~9的结果为-10

{

0000 0000  0000  0000 0000  0000  0000  1001

int num,a,b,c,d; for(num=1000;num<10000;num++)

1111 1111 1111  1111  1111  1111 1111 0110

{

 

a=num/1000;//千位

(五)左移 <<

b=num%1000/100;//百位

如a<<n

c=num%1000%100/10;//十位

把整数a的二进制位全部左移n位,高位丢弃,低位补零。左移n位的结果其实是乘以2的n次方,由于符号位会被丢弃,所以结果可能会改变正负性。

d=num%1000%100%10;//个位 if(a==d&&b==c)

举例:9<<1的结果为18

printf("%dn",num);

0000 1001

}

0010 0010

return 0;

应用:如果某个数需要乘以2的n次方,那么使用位运算效率更高。

}

 

//不能在数与数之间加间距

(六)右移 >>

方法二:

如a>>n

#include<stdio.h>

把整数a的二进制位全部右移n位,低位丢弃,符号位不变,一般情况下高位用符号位补齐。右移的结果实际上是除以2的n次方。

int main()

 

{

(七)练习

int a,b,c,d,n;

(1)使用位运算交换两个变量的值

for(n=1000;n<10000;n++)

9159.com 19159.com 2

{

 1 #include<stdio.h>   2    3 int main()   4    5 {   6    7 int a=10;   8    9 int b=11;  10   11 printf("a=%d,b=%dn",a,b);  12   13 a=a^b;  14   15 b=a^b;  16   17 a=a^b;  18   19 printf("a=%d,b=%dn",a,b);  20   21 return 0;  22   23 }

a=n/1000;//千位 b=/100;//百位

View Code

c=(n-a*1000-b*100)/10;//十位

(2)使用位&运算符判断变量的奇偶性

d=(n-a*1000-b*100)%10;//个位 if(a==d&&b==c)

 

{

9159.com 39159.com 4

printf;

 1 #include<stdio.h>   2    3 int main()   4    5 {   6    7    printf("请输入需要判断的整数:n");   8    9     int n;  10   11     scanf("%d",&n);  12   13 /*  14   15    if(n%2==0)  16   17    printf("这个数是偶数n");  18   19    else  20   21    printf("这个数是奇数n");  22   23 */  24   25     if((n&1)==1)  26    27      printf("这个数是奇数n");  28   29     else if((n&1)==0)  30   31     printf("这个数是偶数n");  32   33     return 0;  34   35 }

}

View Code

}

 

return 0;

(3)编写一个函数,输出整数的二进制格式

}

9159.com 59159.com 6

9159.com 7图片发自简书App9159.com 8图片发自简书App9159.com 9图片发自简书App9159.com 10图片发自简书App9159.com 11图片发自简书App

 1 #include<stdio.h>   2    3 void putbinary(int number);   4    5 int main()   6    7 {   8    9    printf("这个程序的作用是把你输入的整数以二进制的格式输出n");  10   11    printf("请输入一个整数:n");  12   13    int n;  14   15    scanf("%d",&n);  16   17    putbinary(n);  18   19    return 0;  20   21 }  22   23    24   25 void putbinary(int number)  26   27 {  28   29      //int count=sizeof(number)*8-1;  30   31       int count=(sizeof(number)<<3)-1;//注意这里需要注明优先级  32   33      printf("%dn",count);  34   35    36   37 while(count>=0)  38   39 {  40   41     int value=(number>>count)&1;  42   43     printf("%d",value);  44   45 //每四个数字,打印一个空格  46   47     if(count%4==0)  48   49      printf(" ");  50   51      count--;  52   53 }  54   55    56   57 }  58   59  

View Code

 

五、char类型

(一)基础

Char c=‘A’;

字符在内存中也是也二进制的格式存储的。

Int num=6;//在内存中以00···0110存储

Char num=‘6’;//对应的ascii码值是54=32+16+4+2,在内存中为11 0110

两者之间有着本质的区别,一个是具体的整数值,一个是字符,以ASCII格式存储。

(二)使用注意

单引号只能括住单字节的字符,ASCII中的所有字符都是单字节的。

Char c=’男’;//错误,因为一个汉字占据3个字节的存储空间

Char c=”A”;//错误,这是字符串,为‘A’+‘’。

Char c=65;//正确,另一种形式而已

Char类型占据一个字节,所以它的取值范围为-128~127。

帮助:输出一个,使用\,输出一个单引号使用’,输出一个双引号,使用"。

练习:编写一个函数,将小写字母转换为大写。

9159.com 129159.com 13

 1 #include<stdio.h>   2    3     4    5 char upper(char c)   6    7 {   8    9 if(c>='a'&&c<='z')  10   11 return c-('a'-'A');  12   13 else  14   15 return c;  16   17 }  18   19 int main()  20   21 {  22   23 char a=upper('b');  24   25 printf("%cn",a);  26   27 return 0;  28   29 }

View Code

 


本文由9159.com发布于编程,转载请注明出处:球体体积,需要在数字前面加0b

关键词: