然后将返回的指针保存在变量 mem 中;如果 sbrk 调用失败(即返回值等于 (void *)-1),则程序通过 perror() 函数输出错误信息并返回 1;
最后,程序打印出分配的内存地址,并返回 0 表示程序成功运行。
2. scalb,scalbf,scalbl
2.1 函数说明
函数声明
函数功能
double scalb(double x, double n);
计算 x 乘以 2 的 n 次幂(double)
float scalbf(float x, float n);
计算 x 乘以 2 的 n 次幂(float)
long double scalbl(long double x, double n);
计算 x 乘以 2 的 n 次幂(long double)
注意:如果 n 超过了可表示的范围,或者结果溢出,则函数可能返回正无穷大、负无穷大或 NaN。
2.2 演示示例
#include <stdio.h>
#include <math.h>
int main() {
double x = 3.14159265359;
double y = scalb(x, 10);
printf("Before: %lf\n", x);
printf("After: %lf\n", y);
return 0;
}
3. scalbln,scalblnf,scalblnl
3.1 函数说明
函数声明
函数功能
double scalbln(double x, long int n);
计算 x 乘以 2 的指定长整数 n 次幂(double)
float scalblnf(float x, long int n);
计算 x 乘以 2 的指定长整数 n 次幂(float)
long double scalblnl(long double x, long int n);
计算 x 乘以 2 的指定长整数 n 次幂(long double)
参数:
3.2 演示示例
#include <stdio.h>
#include <math.h>
int main() {
double x = 1.5;
float y = 2.25f;
long double z = 3.75l;
long int n = 3;
// 将x乘以2的3次幂
double result = scalbln(x, n);
printf("scalbln(%lf, %ld) = %lf\n", x, n, result);
float resultf = scalblnf(y, n);
printf("scalblnf(%f, %ld) = %f\n", y, n, resultf);
long double resultL = scalblnl(z, n);
printf("scalblnl(%Lf, %ld) = %Lf", z, n, resultL);
return 0;
}
3.3 运行结果
4. scalbn,scalbnf,scalbnl
4.1 函数说明
函数声明
函数功能
double scalbn(double x, int n);
计算 x 乘以 2 的指定整数 n 次幂(double)
float scalbnf(float x, int n);
计算 x 乘以 2 的指定整数 n 次幂(float)
long double scalbnl(long double x, int n);
计算 x 乘以 2 的指定整数 n 次幂(long double)
4.2 演示示例
#include <stdio.h>
#include <math.h>
int main()
{
double x = 3.1415926;
float y = 3.1415926f;
long double z = 3.1415926L;
int n = 5;
printf("scalbn(%lf, %d) = %.20lf\n", x, n, scalbn(x, n));
printf("scalbnf(%f, %d) = %.20f\n", y, n, scalbnf(y, n));
printf("scalbnl(%Lf, %d) = %.20Lf\n", z, n, scalbnl(z, n));
return 0;
}
4.3 运行结果
5. scanf
5.1 函数说明
函数声明
函数功能
int scanf(const char *format, ...);
从标准输入中读取指定格式的数据
#include <graphics.h>
int main(void)
{
int gdriver = EGA, gmode = EGAHI;
int x, y, ht;
initgraph(&gdriver, &gmode, "");
x = getmaxx() / 2;
y = getmaxy() / 2;
ht = textheight("W");
setactivepage(1);
line(0, 0, getmaxx(), getmaxy());
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "This is page #1:");
outtextxy(x, y+ht, "Press any key to halt:");
setactivepage(0);
outtextxy(x, y, "This is page #0.");
outtextxy(x, y+ht, "Press any key to view page #1:");
getch();
setvisualpage(1);
getch();
closegraph();
return 0;
}
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int gdriver = DETECT, gmode;
int x, y;
initgraph(&gdriver, &gmode, "");
x = getmaxx() / 2;
y = getmaxy() / 2;
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "Press any key to exit graphics:");
getch();
// 将图形模式恢复到文本模式
restorecrtmode();
printf("We're now in text mode.\n");
printf("Press any key to return to graphics mode:");
getch();
// 返回图形模式
setgraphmode(getgraphmode());
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "We're back in graphics mode.");
outtextxy(x, y+textheight("W"), "Press any key to halt:");
getch();
closegraph();
return 0;
}
16.3 运行结果
17. setjmp
17.1 函数说明
函数声明
函数功能
int setjmp(jmp_buf env);
用于在程序执行过程中设置跳转点,并将当前程序状态保存到一个缓冲区中。当程序需要从该跳转点继续执行时,可以使用 longjmp() 函数恢复之前保存的程序状态并返回到该跳转点。
然后将返回的指针保存在变量 mem 中;如果 sbrk 调用失败(即返回值等于 (void *)-1),则程序通过 perror() 函数输出错误信息并返回 1;
最后,程序打印出分配的内存地址,并返回 0 表示程序成功运行。
2. scalb,scalbf,scalbl
2.1 函数说明
函数声明
函数功能
double scalb(double x, double n);
计算 x 乘以 2 的 n 次幂(double)
float scalbf(float x, float n);
计算 x 乘以 2 的 n 次幂(float)
long double scalbl(long double x, double n);
计算 x 乘以 2 的 n 次幂(long double)
注意:如果 n 超过了可表示的范围,或者结果溢出,则函数可能返回正无穷大、负无穷大或 NaN。
2.2 演示示例
#include <stdio.h>
#include <math.h>
int main() {
double x = 3.14159265359;
double y = scalb(x, 10);
printf("Before: %lf\n", x);
printf("After: %lf\n", y);
return 0;
}
3. scalbln,scalblnf,scalblnl
3.1 函数说明
函数声明
函数功能
double scalbln(double x, long int n);
计算 x 乘以 2 的指定长整数 n 次幂(double)
float scalblnf(float x, long int n);
计算 x 乘以 2 的指定长整数 n 次幂(float)
long double scalblnl(long double x, long int n);
计算 x 乘以 2 的指定长整数 n 次幂(long double)
参数:
3.2 演示示例
#include <stdio.h>
#include <math.h>
int main() {
double x = 1.5;
float y = 2.25f;
long double z = 3.75l;
long int n = 3;
// 将x乘以2的3次幂
double result = scalbln(x, n);
printf("scalbln(%lf, %ld) = %lf\n", x, n, result);
float resultf = scalblnf(y, n);
printf("scalblnf(%f, %ld) = %f\n", y, n, resultf);
long double resultL = scalblnl(z, n);
printf("scalblnl(%Lf, %ld) = %Lf", z, n, resultL);
return 0;
}
3.3 运行结果
4. scalbn,scalbnf,scalbnl
4.1 函数说明
函数声明
函数功能
double scalbn(double x, int n);
计算 x 乘以 2 的指定整数 n 次幂(double)
float scalbnf(float x, int n);
计算 x 乘以 2 的指定整数 n 次幂(float)
long double scalbnl(long double x, int n);
计算 x 乘以 2 的指定整数 n 次幂(long double)
4.2 演示示例
#include <stdio.h>
#include <math.h>
int main()
{
double x = 3.1415926;
float y = 3.1415926f;
long double z = 3.1415926L;
int n = 5;
printf("scalbn(%lf, %d) = %.20lf\n", x, n, scalbn(x, n));
printf("scalbnf(%f, %d) = %.20f\n", y, n, scalbnf(y, n));
printf("scalbnl(%Lf, %d) = %.20Lf\n", z, n, scalbnl(z, n));
return 0;
}
4.3 运行结果
5. scanf
5.1 函数说明
函数声明
函数功能
int scanf(const char *format, ...);
从标准输入中读取指定格式的数据
#include <graphics.h>
int main(void)
{
int gdriver = EGA, gmode = EGAHI;
int x, y, ht;
initgraph(&gdriver, &gmode, "");
x = getmaxx() / 2;
y = getmaxy() / 2;
ht = textheight("W");
setactivepage(1);
line(0, 0, getmaxx(), getmaxy());
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "This is page #1:");
outtextxy(x, y+ht, "Press any key to halt:");
setactivepage(0);
outtextxy(x, y, "This is page #0.");
outtextxy(x, y+ht, "Press any key to view page #1:");
getch();
setvisualpage(1);
getch();
closegraph();
return 0;
}
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int gdriver = DETECT, gmode;
int x, y;
initgraph(&gdriver, &gmode, "");
x = getmaxx() / 2;
y = getmaxy() / 2;
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "Press any key to exit graphics:");
getch();
// 将图形模式恢复到文本模式
restorecrtmode();
printf("We're now in text mode.\n");
printf("Press any key to return to graphics mode:");
getch();
// 返回图形模式
setgraphmode(getgraphmode());
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(x, y, "We're back in graphics mode.");
outtextxy(x, y+textheight("W"), "Press any key to halt:");
getch();
closegraph();
return 0;
}
16.3 运行结果
17. setjmp
17.1 函数说明
函数声明
函数功能
int setjmp(jmp_buf env);
用于在程序执行过程中设置跳转点,并将当前程序状态保存到一个缓冲区中。当程序需要从该跳转点继续执行时,可以使用 longjmp() 函数恢复之前保存的程序状态并返回到该跳转点。