代码目的
测试浮点数相加是否可以调换位置
string.h
strcat :字符串连接
strcpy:字符串复制
strlen:求字符串长度
strcmp:比较两个字符串的大小,可以判断两个字符串是否相同
strchr:求ch 在字符串中第一次出现的位置
strrchr:求ch在字符串中最后一次出现的位置
strstr:寻找子串
sprintf和printf
printf是把字符串打印到屏幕上,sprintf是把字符串送到一个数组中,在用printf函数把数组内容打印,例如下面代码
sprintf(prefix, "%.4g", x);//把x送到prefix数组中去
代码块
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFSIZE 256
int main(int argc, char *argv[])//argc是参数个数,其中a.out是第一个参数,所有参数都放在argv[]数组里面。
{
char prefix[BUFSIZE];
char next[BUFSIZE];
int i;
float sum = 0.0;
for (i = 1; i < argc; i++) {
float x = atof(argv[i]);//x是浮点数,所以用atof,如果x是int型,就要用atoi,获取参数。
sum += x;
if (i == 1) {
sprintf(prefix, "%.4g", x);
} else {
sprintf(next, " + %.4g", x);
strcat(prefix, next);//字符串连接prefix在前next在后,生成的新字符串放在prefix中
printf("%s = %.4g\n", prefix, sum);
}
}
return 0;
}
测试结果
结果解释
浮点数相加首先要对阶,只要对阶时得到的两个阶之差的绝对值|ΔE|大于等于25,就无需继续进行后续处理,此时,运算结果直接取阶大的那个数。3.14比起1e+20太小,所以3.14可以忽略。