小麻豆刚刚有了第一桶金,他在考虑是把钱存在银行还是投资股票,所以我们设置了一个程序来帮助他计算哪个方式更加划算。(如下图)
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char a[] = "deposit";
char b[] = "stock investment";
printf("deposit or stock investment:\n");
scanf("%s", &a);
if (strcmp(a,"deposit")==0)
{
float m, y, r, i;
printf("please enter the amount,length of deposit(year),annual rate in the below:\n");
scanf("%f %f %f", &m, &y, &r);
i = m * pow(1 + r, y) - m;
printf("interest = %.2f\n", i);
return 0;
}
else
{
int S = 0, S1 = 0, S2 = 0;//总资产,股票资产,现金
int m = 0, p = 0, n = 0;//买入股数,入价,交易天数
int k = 0, d = 0;//当天交易量,当天股价
int i = 0;//循环数
printf("please enter the number of shares,stock price,trading days in the below:\n");
scanf("%d%d%d", &m, &p, &n);
S1 = m * p;//投入成本
for (i = 0; i < n; i++)
{
printf("please enter the volume of the day,stock price of the day:\n");
scanf("%d%d", &k, &d);
m += k;//持有股数
S1 = m * d;//股票资产
S2 += -(k * d);//现金
}
S = S1 + S2;
printf("%d", S);
return 0;
}
return 0;
}
在这个程序中,传递给printf函数的格式化字符串中的两个转换说明%d和%.2f的含义分别如下所示。
%d =》》显示十进制int型的整数;
%.2f=》》显示小数点后面2位的double型的浮点数。
C语言把数学中常用的一些运算定义为标准库函数,使用这些运算时,只要在程序中把对应的函数名以及所需的参数写在需要的位置,系统就会自动运算出结果。
库函数 | 功能说明 | 示例 |
---|---|---|
abs(x) | 求整数 x 的绝对值 | abs(-2)=2 |
fabs(x) | 求实数 x 的绝对值 | fabs(-3.14)=3.14 |
floor(x) | 求不大于 x 的最大整数(下舍入) | floor(3.14)=3.000000 |
ceil(x) | 求不小于 x 的最小整数(上舍入) | ceil(3.14)=4.000000 |
log(x) | 求 x 的自然对数 | log(2)=0.693147 |
exp(x) | 求 x 的自然指数(ex) | exp(2)=7.389056 |
pow(x,y) | 计算 xy 的值 | pow(2,5)=32.000000 |
rand( ) | 产生 0~RAND_MAX 的随机整数 | rand( )%900+100 生成三位随机整数 |
sqrt(x) | 求 x 的平方根( | sqrt(36)=6.000000 |
使用上述 C语言标准数学库函数之前,必须在程序的预处理指令部分添加指令包含 math.h 头文件:
#include <math.h>
在以上的程序中,我们通过“if..else"语句改变了程序流程,if语句半段表达式的值,如果结果不为0,则执行相应的语句。括号内()是对条件进行判断的表达式,成为控制表达式(control expression),以上这个程序对控制表达式strcmp(a,"deposit")==0的判断结果为选择deposit的选项。只有当选择 “deposit”的时候,才会执行{}内的语句;而“else”是“否则”的意思。当表达式不选择“deposit”而是选择“stock investment”的时候,才会执行{}内的语句。
C语言中的分支语句除了if语句之外,还有循环语句while/for/do while,在以上的示例中,由于小麻豆要计算投资天数内每天的当天交易量和当天股价,所以用到了for循环语句。
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。