c语言数值计算
A. c语言中,基本数据类型的数值范围是怎么计算出来的
你这里对应的int是16位的,最高位是符号位,表示正负,还有15位用来表示数值,于是就有int的数据范围是-2^15~(2^15-1)
2^15就是2的15次幂,也就是15个2相乘。int类型15位数值位,每位有0,12种状态,全排列就是2^15,正负数全算上,就是其数据范围了。
B. C语言数值型计算问题
#include <stdio.h>
#include <math.h>
int countsame(int x){
int pos[4];
int count=0;
int i;
for(i=0;i<4;i++)
{
pos[i]=x%10;
x=x/10;
}
for(i=0;i<4;i++)
for(int j=i;j<4&&i<4&&i<=j;j++)
{
if(j!=i)
{
if(pos[i]==pos[j])
{
count++;
}
}
}
return count;
}
int main(){
int i;
int n=0;
for(i=1000;i<10000;i++)
{
if(countsame(i)>0 && (int)sqrt(i)*(int)sqrt(i)==i)
printf("%d\t%d\tsqrt(%d)=%d\n",++n,i,i,(int)sqrt(i));
}
;
}
已经在gcc下编译通过了。输出结果为:
1 1156 sqrt(1156)=34
2 1225 sqrt(1225)=35
3 1444 sqrt(1444)=38
4 1521 sqrt(1521)=39
5 1600 sqrt(1600)=40
6 1681 sqrt(1681)=41
7 2025 sqrt(2025)=45
8 2116 sqrt(2116)=46
9 2209 sqrt(2209)=47
10 2500 sqrt(2500)=50
11 3136 sqrt(3136)=56
12 3364 sqrt(3364)=58
13 3600 sqrt(3600)=60
14 3844 sqrt(3844)=62
15 3969 sqrt(3969)=63
16 4225 sqrt(4225)=65
17 4489 sqrt(4489)=67
18 4624 sqrt(4624)=68
19 4900 sqrt(4900)=70
20 5625 sqrt(5625)=75
21 5776 sqrt(5776)=76
22 5929 sqrt(5929)=77
23 6400 sqrt(6400)=80
24 6561 sqrt(6561)=81
25 6889 sqrt(6889)=83
26 7225 sqrt(7225)=85
27 7744 sqrt(7744)=88
28 8100 sqrt(8100)=90
29 8281 sqrt(8281)=91
30 8464 sqrt(8464)=92
31 8836 sqrt(8836)=94
32 9409 sqrt(9409)=97
C. c语言,数值计算方法求教!
就是取值函数
D. 【c语言】键盘上键入一个算数表达式,计算其算数值,整个算数表达式要作为一个字符串来处理
#include"stdio.h"
intmain(intargc,char*argv[]){
inti,k,t,m,p;
chars[50];
printf("(only+&-)... ");
scanf("%49s",s);
for(p=m=t=i=0;s[i];i++){
sscanf(s+i,"%d%n",&k,&t);
p?m-=k:m+=k;
if(s[i+=t]=='+')
p=0;
elseif(s[i]=='-')
p=1;
elseif(s[i]=='