A. c语言整数的范围
C语言整型,一般分为char类型和int类型,不同的类型取值范围也不尽相同。在32位系统中:
char取值范围:-128~127
unsigned char取值范围:0~255
int取值范围:-2147483648~2147483647
unsigned int取值范围:0~4294967295
在c语言中可以通过C标准库中的limits.h头文件,来直接使用整型类型的最大值和最小值 。示例如下:
#include<stdio.h>
#include<limits>
intmain()
{
printf("char取值范围:%d~%d ",CHAR_MIN,CHAR_MAX);
printf("unsignedchar取值范围:%u~%u ",0,UCHAR_MAX);
printf("int取值范围:%d~%d ",INT_MIN,INT_MAX);
printf("unsignedint取值范围:%u~%u ",0,UINT_MAX);
return0;
}
B. C语言, 用户输入一个整数, 算出这个整数里面最大的那个数,如用户输入1234321,则输出4,拜托各位了.
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int max=0,m;
while(n>0)
{
m=n%10;
if (m>max) max=m;
n/=10;
}
printf("整数里最大的数为:%d\n",max);
}
C. 在C语言中,int类型存储的最大的数是2^32,为什么为什么不是2^31
C语言中的int型在不同的机器上位数不同,其表示的数范围也不同。鄙人假设你说的int型是32位。
C中的int型使用补码表示,也就是32位补码,最高位为符号位,1代表负,0代表正。一个int型变量存储形式为x = { 符号位(1bit), 数值位(31bit) }。
一个int型变量最大值即32bit补码能表示的正数最大值。1bit符号位为0,31bit数值位,每位可以有{0, 1}两种组合,31位可以有2^31种组合,最大正数即数值位全为1时能取到:
二进制(0;111,1111,1111,1111,1111,1111,1111,1111) = 7FFFFFFFH,按等比数列计算结果为 2^0 + 2^1 + 2^2 + ... + 2^30 = [1*(1-2^31)] / (1-2) = 2^31 - 1。
综上所述,32bit的int型表示的最大正整数既不是2^32,也不是2^31,是(2^31 - 1) = 2,147,483,648,大约21亿。
D. C语言:计算最高位数字
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n/10)n/=10;//除10,为零说明就只剩最高位了
printf("%d",n);
return 0;
}
E. 用c语言求一个短整型正整数中的最大数字
#include
<stdio.h>
#include
<math.h>
int
maxnum(int
a,int
b)
{
return
a>b?a:b;
}
void
main()
{
int
shortint
=
0
,temp
=
0;
printf("请输入一个短整型数:
");
scanf("%d",&shortint);
if(shortint<0)
//如果输入的是一个负数,取它的相反数
{
shortint
=
-1
*
shortint;
}
while(shortint/10>1)
//从个位往高位开始比较
{
temp
=
maxnum(temp
,
shortint%10);
//将temp与(shortint%10)中较大的数赋给temp
shortint
/=
10;
}
printf("max
number
in
this
shortint
is
:%d\n",temp);
}
F. c语言中int最大值是多少
int最大值,根据编译器类型不同而变化。
1 对于16位编译器,int占16位(2字节)。
int的最大值为32767.
2 对于32位和64位编译器,int占32位(4字节)。
int的最大值为2147483647
3 可以通过打印sizeof(int)查看平台对应的int占用字节数。乘8后即为位数。
最高位为符号位,如位数为n,则最大值为
2^(n-1).