直接用两个数(或变量)相乘就可以表示平方,比如x*x
不过如果,需要求m的n次方,就需要用到pow(x,y)乘方(包括开方)这个库函数了,使用pow(x,y)这个库函数,需要math.h头文件。
其中x和y都是双精度浮点(double)型。
#include"math.h"
U32sqrt_fun(U64x){
U32low=0;
U32high=x;
U32mid;
U64data;
while(low <high){
mid=(low+high)/2;
data=(U64)mid*mid;
if(data >x){
high=mid-1;
}else if(data <x){
low=mid+1;
}else{
return(mid);
}
}
return(mid);
}
voidmain(void){
volatileU32td1,td2;
U64d=0x12345678ABCD;
td2=sqrt(d);
td1=sqrt_fun(d);
}
扩展资料
C语言无参函数的定义:
dataType是返回值类型,它可以是C语言中的任意数据类型,例如int、float、char等。
functionName 是函数名,它是标识符的一种,命名规则和标识符相同。函数名后面的括号( )不能少。
body是函数体,它是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由{}包围。
如果有返回值,在函数体中使用return语句返回。return出来的数据的类型要和dataType一样。
四种方法都是正确的,看不出有错。从书写来说,
A 和 C 在 声明 td1 时,换一行写,便于阅读。
A 写成:
typedef struct
{int n
float m
}AA
AA td1
C 写成:
struct aa
{int n
float m
}
struct aa td1
1.B2.C 根据已知运算符优先级 a || b +i&&i>j 为8||3&&1,8||3为boolean结果为1,1&&1的结果为1。
3.B. 执行语句p=arr使指针P指向数组arr的首地址(即为arr[0]),*(p+j)等价于arr[0+2]。
4.D char barr[ ]=”student”等价于char barr[ ]={’s’,’t’,’u’,’d’,’e’,’n’,'t’,'\0'},系统会自动在加给字符串数组末尾加上'\0'的。
5.B i<j的结果是0,即为0>0,结果为错(0)。
6.B
7. C
8.D ps=&st1让ps指向st1后,C语言中为了方便用ps->num来代替了(*ps).num。而结构体变量名.成员名 才跟指针(*ps).成员名等价的。
9. A td[1][0]是4,则td[1][0]+'A'即为65+4=69就是E。
10.A 字符串遇到'\0'即结束的标识符就结束输出。
11.D 宏定义,不多详解了。
12.A 赋值运算符是自右至左结合的,a- =a+=a*=10,先计算a=a*10,a=80再a=a+80,a=160最后a=a-160,a=0了
13.B
14.C
15.D 这个只是初中数学而已,不要想多了。
16.C 排除法就行了 int的范围是-32768到32767.
17.B
18.C
19.A
20.D ++自增运算符只能用于变量,不能用于常量和表达式。