![](https://csdnimg.cn/release/download_crawler_static/3483739/bg4.jpg)
集训练习
- 4 -
int main()
{
int length, width, area;
scanf("length = %lg width = %lg\n", length, width);
length * width = area;
printf("area = %lg\n", area);
return 0;
}
area = 87.65
33. 阅读下面的程序:
#include <stdio.h>
int main()
{
char p, q;
int i, j, k;
float x, y, z;
scanf("%3d%c%2f9%d", &i, &p, &x, &j);
scanf("9%c%3f", &q, &y);
scanf("%2d9%f", &k, &z);
printf("p9=9%c9q9=9%c\n", p, q);
printf("i9=9%d9j9=9%d9j9=9%d\n", i, j, k);
printf("x9=9%f9y9=9%e9z9=9%g\n", x, y, z);
return 0;
}
34. 正整数中的某位数字
求正整数x的最低位、最高位和第n位数字。
…6543210
…0025173
注: 从低位到高位从0开始计数, 如: 25173的第0位(即个位)是3, 第1位(即十位)是7, 第2位(即百位)是
1, 第3位(即千位)是5, 第4位(即万位)是2, 第5位(即十万位)是0, …。
最低位函数: int LowDigit(int x);
最高位函数: int TopDigit(int x);
任意位函数: int Digit(int x, int n);
注: 最低位即个位, 例如: LowDigit(25173)的值为3; 最高位为非零的最高位, 例如: TopDigit(25173)
的值为2; 任意位不作限制, 例如Digit(25173, 0)的值为3, Digit(25173, 3)的值为5, Digit(25173, 6)的值为0。
提示: 求x的最低位可以用取模运算, C/C++的取模运算符为%, 如: 25173 % 10得
3。求 x的最高位可以
将x反复除以10, 直到x小于10为止, 如: 25173 / 10得2517, 2517 / 10得251, 251 / 10得25, 25 / 10得2。求x的第
n位数字可以将x除以10的操作反复执行n次, 然后再求最低位数字, 如: 求25173的第3位是5, 计算过程为:
25173 / 10得2517, 2517 / 10 = 251, 251 / 10 = 25, 再求25的最低位得5。
35. 正整数的位数
求正整数x的位数。
int Len(int x);
例如: Len(25173)的值为5, Len(450)的值为3, Len(0)的值为1。
36. 求实数x的整数n次幂
编写函数求输入实数x任意整数n次幂x
n
(要求: 考虑x和n各种可能的情况)。
double Power(double x, int n);
要求: 作为练习, 请利用循环计算求值, 并与C/C++库函数pow进行比较。
37. 阶乘和
输入正整数n, 计算阶乘和: 1! + 2! + 3! + … + n!。
要求: 编写阶乘和函数, 并调用上一题中编写的阶乘函数。
double Sof(int n);