C Primer Plus 第6版 编程练习——第9章(上)
本章编程题共有11题,分上下两篇
1.设计一个函数min(x,y),返回两个double类型值的较小值。在一个简单的驱动程序中测试该函数。
double min(double x, double y)
{return x < y ? x : y;
}
int main()
{printf("The min of 3.14, 2.71 is %.2f\n", min(3.14, 2.71));
}
2.设计一个函数chline(ch,i,j),打印指定的字符j行i列。在一个简单的驱动程序中测试该函数。
void chline(char ch, int i, int j)
{for (int k = 0; k < j; k++){for (int l = 0; l < i; l++){printf("%c", ch);}printf("\n");}
}
int main()
{chline('*', 6, 5);return 0;
}
3.编写一个函数,接受3个参数:一个字符和两个整数。字符参数是待打印的字符,第1个整数指定一行中打印字符的次数,第2个整数指定打印指定字符的行数。编写一个调用该函数的程序。
void chline(char ch, int num1, int num2)
{for (int i = 0; i < num2; i++){for (int j = 0; j < num1; j++){printf("%c", ch);}printf("\n");}
}
int main()
{chline('*', 5, 6);
}
4.两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的到数。编写一个函数,接受两个double类型的参数,返回这两个参数的调和平均数。
static double harmonicMean(double a, double b)
{double a_inv = 1.0 / a;double b_inv = 1.0 / b;double mean = (a_inv + b_inv) / 2.0;return 1.0 / mean;
}
int main()
{double a = 5.0;double b = 3.0;double result = harmonicMean(a, b);printf("The harmonic of %.2f, %.2f is %.2f\n", a, b, result);return 0;
}
5.编写并测试一个函数larger_of(),该函数把两个double类型变量的值替换为较大的值。例如,larger of(x, y)会把x和y中较大的值重新赋给两个变量。
void larger_of(double *a, double *b)
{if (*a > *b)*b = *a;else*a = *b;
}
int main()
{double a, b;printf("Enter two numbers: ");while (scanf_s("%lf %lf", &a, &b) == 2){larger_of(&a, &b);printf("The larger number is %.2f %.2f\n", a, b);}return 0;
}
6.编写并测试一个函数,该函数以3个double变量的地址作为参数,把最小值放入第1个变量,中间值放入第2个变量,最大值放入第3个变量。
void asc(double *a, double *b, double *c)
{ if (*a > *b){double temp = *a;*a = *b;*b = temp;}if (*b > *c){double temp = *b;*b = *c;*c = temp;}if (*a > *b){double temp = *a;*a = *b;*b = temp;}
}
int main()
{system("chcp 65001");double a, b, c;printf("请输入三个数:");scanf_s("%lf%lf%lf", &a, &b, &c);asc(&a, &b, &c);printf("排序后的数:%lf %lf %lf", a, b, c);
}