第九章 C函数练习-C primer plus
2016-11-11 20:11
183 查看
#include<stdio.h> void to_binary(unsigned long); int main(void) { unsigned long number; printf("Enter an integer(q to quit):\n"); while ((scanf("%ul", &number)) == 1) { printf("Binary equivalent:"); to_binary(number); putchar('\n'); printf("Enter an integer(q to quit):\n"); } printf("Done\n"); getchar(); getchar(); return 0; } void to_binary(unsigned long n) { int r; r = n % 2; if (n >= 2) to_binary(n / 2); putchar('0' + r); return; } Enter an integer(q to quit): 9 Binary equivalent:1001 Enter an integer(q to quit): 255 Binary equivalent:11111111 Enter an integer(q to quit): 1024 Binary equivalent:10000000000 Enter an integer(q to quit): q /* 酒店收费程序*/ #include<stdio.h> #include"hotel.h" /* 定义常量、声明函数*/ int main(void) { int nights; double houtel_rate; int code; while ((code=menu())!= QUIT) { switch (code) { case 1:houtel_rate = HOTEL1; break; case 2:houtel_rate = HOTEL2; break; case 3:houtel_rate = HOTEL3; break; case 4:houtel_rate = HOTEL4; break; default:houtel_rate = 0.0; printf("Oops!\n"); break; } nights = getnights(); showprice(houtel_rate, nights); } printf("Thank you and goodbye."); return 0; } /*hotel.h -- hotel.c中的常量定义和函数声明*/ #define QUIT 5 #define HOTEL1 80.00 #define HOTEL2 125.00 #define HOTEL3 155.00 #define HOTEL4 200.00 #define DISCOUNT 0.95 #define STARS "************************" // 给出选项列表 int menu(void); // 返回预定天数 int getnights(void); //按饭店的星级和预定的天数计算价格并显示出来 void showprice(double, int); /*hotel.c -- 旅馆管理函数*/ #include<stdio.h> #include"hotel.h" int menu(void) { int code, status; printf(""); printf("\n%s%s\n",STARS,STARS); printf("Enter the number of the desired hotel:\n"); printf("1) Fairfield Arms 2) Hotel Olympic\n"); printf("3) Cherworthy Plaza 4) The Stockton\n"); printf("5) quit\n"); printf("%s%s\n", STARS, STARS); while ((status=scanf("%d",&code))!=1||(code<1||code>5)) { if (status != 1) scanf("%*s"); printf("Enter an integer from 1 to 5,please.\n"); } return code; } int getnights(void) { int nights; printf("How many nights are needed?"); while (scanf("%d", &nights) != 1) { scanf("%*s"); printf("Please enter an integer, such as 2.\n"); } return nights; } void showprice(double rate, int nights) { int n; double total = 0.0; double factor = 1.0; for (n = 1; n <= nights; n++, factor *= DISCOUNT) total += rate*factor; printf("The hotel cost will be $%0.2f.\n", total); } ************************************************ Enter the number of the desired hotel: 1) Fairfield Arms 2) Hotel Olympic 3) Cherworthy Plaza 4) The Stockton 5) quit ************************************************ 1 How many nights are needed?2 The hotel cost will be $156.00. ************************************************ Enter the number of the desired hotel: 1) Fairfield Arms 2) Hotel Olympic 3) Cherworthy Plaza 4) The Stockton 5) quit ************************************************ ### 指针 #include<stdio.h> void interchange(int *u, int *v); int main(void) { int x = 5, y = 10; printf("Originally x = %d and y = %d.\n", x, y); interchange(&x, &y); /*向函数传送地址*/ printf("Now x = %d and y = %d.\n", x, y); getchar(); getchar(); return 0; } void interchange(int *u, int *v) { int temp; temp = *u; *u = *v; *v = temp; } Originally x = 5 and y = 10. Now x = 10 and y = 5. #include<stdio.h> double min(double a, double b); int main(void) { double x = 0, y = 0; printf("Please input two number:"); while ((scanf("%lf %lf", &x, &y)) != 2) { scanf("%*s"); printf("please input double number,e.g 2.50\n"); } printf("minner is %lf", min(x, y)); printf("\n"); getchar(); getchar(); return 0; } double min(double a, double b) { double min = 0; if (a < b) min = a; else min = b; return min; } Please input two number:s please input double number,e.g 2.50 2.4 2.8 minner is 2.400000 #include<stdio.h> void chline(char ch, int i, int j); int main(void) { char ch; int x = 0, y = 0; printf("Please input a char:"); scanf("%c", &ch); printf("please input two int\n"); scanf("%d %d", &x, &y); chline(ch, x, y); printf("\n"); getchar(); getchar(); return 0; } void chline(char ch,int i,int j) { int k; for (k = 1; k < i; k++) printf(" "); for (; k <= j; k++) printf("%c", ch); printf("\n"); } Please input a char:a please input two int 2 6 aaaaa #include<stdio.h> void chline(char ch, int i, int j); int main(void) { char ch=0; int x = 0, y = 0; printf("Please input a char:"); scanf("%c", &ch); printf("Please input column and row:\n"); scanf("%d %d", &x, &y); chline(ch, x, y); getchar(); getchar(); return 0; } void chline(char ch, int i, int j) { int k = 0, m = 0; for (k = 0; k < j; k++) { for (m = 0; m < i; m++) printf("%c", ch); printf("\n"); } } /* 与上一个题不相同的地方为,这是先控制列数在控制行数,已经更新条件,括号结束*/ Please input a char:a Please input column and row: 3 5 aaa aaa aaa aaa aaa #include<stdio.h> double get_average(double i, double j); int main(void) { double x = 0, y = 0; printf("Please input two double number:"); scanf("%lf %lf", &x, &y); get_average(x, y); getchar(); getchar(); return 0; } double get_average(double i, double j) { double ans = 0; ans = ((1 / i) + (1 / j)) / 2; return printf("answer is %0.3lf", 1 / ans); } Please input two double number:4.5 5.5 answer is 4.950 没有输出 #include<stdio.h> void larger_of(double *i, double *j); int main(void) { double x = 0, y = 0; printf("Please input two double number:"); scanf("%lf %lf", &x, &y); larger_of(&x, &y); printf("the result is: x = %0.3lf, y = %0.3lf",x,y); getchar(); getchar(); return 0; } void larger_of(double *i, double *j) { if (*i < *j) *i = *j; else *i = *i; } Please input two double number:2.3 2.6 the result is: x = 2.600, y = 2.600 #include<stdio.h> #include<ctype.h> int get_id(char ch); int main(void) { char ch; printf("Please input a char:"); scanf("%c", &ch); printf("the %c position of number is %d ", ch, get_id(ch)); getchar(); getchar(); return 0; } int get_id(char ch) { int n; // if (('a' <= ch && ch >= 'z') || ('A' <= ch&&ch >= 'Z')) // n = 26 -(ch % 26); if (isalpha(ch)) return tolower( ch) - 'a' + 1; else return -1; return n; } Please input a char:g the g position of number is 7 #include<stdio.h> double power(double n, int p); int main(void) { double m = 0; int exp= 0; printf("Enter a number and the positive integer power"); printf("to which\nthe number will be raised. Enter q"); printf(" to quit.\n"); //if ((scanf("%lf %d", &m,&exp)) == 2) scanf("%lf %d", &m, &exp); //printf("%0.3g to the power %ld is %0.5g\n",m,exp, power(m,exp)); printf("%.3g to the power %ld is %.5g\n",m,exp, power(m,exp)); getchar(); getchar(); return 0; } double power(double n,int p) { // double ans=0; // 结果为0,因为做乘积,初始化为0 结果为0 double ans=1; int i = 0; if (p > 0) for (i = 1; i <= p; i++) ans *= n; else if (p < 0) for (i = -1; i >= p; i--) ans /= n; else if(n!=0) ans = 1; else ans = 1/n; // 因为0的0次幂无意义 return ans; } Enter a number and the integer power to which the number will be raised. Enter q to quit. 2 -2 2 to the power -2 is 0.25
相关文章推荐
- C Primer Plus (第五版) 第九章 函数 编程练习
- 记录——《C Primer Plus (第五版)》第九章编程练习第二题
- 【学习C++】C++ Primer Plus (第六版)第九章编程练习1-4
- C primer plus 第九章 练习9:
- C++ primer plus 第九章编程练习
- c++.primer.plus第五版第九章编程练习答案
- C primer plus 第九章 练习4:
- C primer plus 第九章 练习10:
- C primer plus 第九章 练习6:
- C Primer Plus 第九章 编程练习 1-9题
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第九章(chapter 9) 1-4
- C primer plus 第九章 练习2:
- 记录——《C Primer Plus (第五版)》第九章编程练习第八题
- c++ Primer Plus(第六版)第九章编程练习之路
- 《c primer plus》编程练习回顾-第九章
- 记录——《C Primer Plus (第五版)》第九章编程练习第一题
- C primer plus 第九章 练习1:
- C Primer Plus 第9章 函数 编程练习
- C++ Primer Plus课后编程练习——第七章 函数-C++的编程模块(部分)
- C primer plus 第九章 练习8: