1、习题参考答案第 1 章1. a=%d,b=%d2.【程序代码如下: 】#include int main( )printf(“ *n”);printf(“ * * *n”);printf(“ * * * * *n”);printf(“ * * * * * * *n”);return 0;【程序运行结果如下: 】3. The result is 95第 2 章1. a=3,b=-272. 假设圆柱的底面积半径为 r(= 2.5) ,高为 h(= 3.5) ,编写求体积(体积=底面积*高)的程序。【程序代码如下: 】#include #define PI 3.1415926int main( )d
2、ouble r = 2.5;double h = 3.5;double v=0;v = (PI * r * r)*h;printf(“v = %lfn”, v);return 0;【程序运行结果如下: 】3. 将下面的数学公式转换成 C 语言的表达式,并用程序验证转换后的表达式是否与原数学公式是一致的。 数学公式如下:b ab ab ab aa+ 4242设 a = 3, b = 5。【程序代码如下: 】#include int main( )double a=3, b=5;double result = (-2 * a + ( 4*a b )/( 2*a + b ) )/( (a - 4*b
3、)/(a + b) );printf(“%lfn”, result);return 0;【程序运行结果如下: 】4. 编写程序, 从键盘输入两个字符分别存放在变量 x 和 y 中, 要求通过程序交换它们的值。【程序代码如下: 】#include int main( )char x, y;char tmp;printf(“Input two characters:”);scanf(“%c%c”, printf(“Before swap: x=%c, y=%cn”, x, y);tmp = x;x = y;y = tmp;printf(“After swap: x=%c, y=%cn”, x, y
4、);return 0;【程序运行结果如下: 】5. Write a program to evaluate the polynomial shown here: for x = 2.55.3x 3 -5x 2 +6.【程序代码如下: 】#include #include int main( )double a=3, b=-5,c=2;double x = 2.55;double root1, root2;double delt;delt = b*b 4*a*c;root1 = ( -b + sqrt( delt ) ) / (2 * a) ;root2 = ( -b - sqrt( delt
5、) ) / (2 * a) ;printf(“The two roots are:n”);printf(“root1 = %lfn root2 = %lfn”, root1, root2);return 0;【程序运行结果如下: 】第 3 章1. 1 0 1 0 1 1 02. 某市不同车牌的出租车 3 公里的起步价和计费分别为: 夏利 7 元/公里, 3 公里以外2.1 元/公里; 富康 8 元/公里, 3 公里以外 2.4 元/公里; 桑塔纳 9 元, 3 公里以外 2.7 元/公里。编程:从键盘输入乘车的车型及公里数,输出应付的车资。【程序代码如下: 】#include int main
6、( )int carType;/车型。 1 代表夏利; 2 代表富康;3 代表桑塔纳double xiali = 2.1; /每公里价格double fukang = 2.4;double sangtana = 2.7;double distance; /距离double totalMoney;/总的收费printf(“请输入您乘坐的车型:1 代表夏利;2 代表富康;3 代表桑塔纳:“);scanf(“%d“, printf(“请输入您乘车的总路程:“);scanf(“%lf“, if( carType = 1)/夏利if( distance int main( )int num1, num2
7、;printf(“Input two integers:”);scanf(“%d%d”, if ( 0 = num1 % num2 )printf(“ %d can be evenly divisible by %dn”, num1, num2);elseprintf(“ %d can not be evenly divisible by %dn”, num1, num2);return 0;【程序运行结果如下: 】第 4 章1. 65 B2. c = J3. 编写程序, 从键盘输入两个数字字符并分别存放在字符型变量 x 和 y 中, 要求通过程序将这两个字符对应的数字相加后输出。【程序代码如
8、下: 】#include int main( ) char x , y;printf(“Input two characters:”);scanf(“%c%c”, if( x=0printf( “Input a lower alpha:”);scanf(“%c”, if( lower=a int iDigit; /每一位上的数字printf(“Pleasse input an integer:”);scanf(“%d”, while ( num ) /当该数不为 0 时,继续提取其个位上的数字iDigit = num % 10; /提取个位switch ( iDigit )case 0: pr
9、intf(“Zero “); break;case 1: printf(“One “); break;case 2: printf(“Two “); break;case 3: printf(“Three “); break;case 4: printf(“Four “); break;case 5: printf(“Five “); break;case 6: printf(“Six “); break;case 7: printf(“Seven “); break;case 8: printf(“Eight “); break;case 9: printf(“Night “); break
10、;num /= 10; /去掉该数的个位printf(“n”);return 0;【程序运行结果如下: 】第 5 章1. C 2. B 3. C 4. C 5. B 6. A 7. A8. 错误。 9. 正确。 10. void11. 编写程序, 用有参有返回值函数实现判断三个数是否能构成三角形。 函数原型可声明为: “int isTriangle( double a, double b, double c );” , 其中, a,b,c 为三角形的三条边,返回值为 0 或 1,0 代表不能构成三角形,1 代表能构成三角形。请在主函数中调用该函数完成程序的功能。【程序代码如下: 】#inclu
11、de int isTriangle( double a, double b, double c);/函数声明int main( )double ea, eb, ec;/三角形的三条边int result; /是否是三角形的判断结果printf(“Please input the three edges of a triangle:”);scanf(“%lf%lf%lf”, result = isTriangle( ea, eb, ec ); /函数调用if( 0 = result )printf(“这组边长不能构成三角形n”);elseprintf(“这组边长可以构成三角形n”);return
12、 0;int isTriangle( double a, double b, double c ) /函数定义if( a 0 /可以构成三角形elsereturn 0; /不能构成三角形【程序运行结果如下: 】12. Write a function called prime that returns 1 if its argument is a prime number and returns0 otherwise.【程序代码如下: 】#include (这题应该放到第 6 章)#include int prime( int n ); /函数声明int main( )int num;int
13、isPrime;printf(“Please input an integer:”);scanf(“%d”, isPrime = prime( num ); /函数调用if ( 1 = isPrime )printf(“ %d is a prime n” , num);elseprintf(“ %d is not a primen” , num );return 0;int prime( int n ) /函数定义int i;for( i = 2; i sqrt ( n ) )return 1;elsereturn 0;【程序运行结果如下: 】第 6 章1. A 2. B 3. D 4. C
14、5. D 6. C 7. A 8. A 9. A 10. 5 11. 3 12. 编写程序。功能:从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用变量 i 统计大于零的整数个数,用变量 j 统计小于零的整数个数。【程序代码如下: 】#include int main( )int num; /输入的整数int iCount = 0; /大于 0 的整数的计数变量int jCount = 0; /小于 0 的整数的计数变量printf(“请输入多个整数: (以 0 结束输入)”);scanf(“%d”, while ( num ) / while ( num
15、 != 0 )if ( num 0 ) +iCount;else if ( num int main( )int n; /300 以内的数int count = 0; /满足条件的数的统计变量int sum = 0; /求和变量for( n = 1; n (移到第 7 章)int main( )int n;/100 到 1000 之间的整数int tmpn;/临时存储 nint sum; /统计 n 的各位数字之和int count = 0; /输出数的个数for ( n = 100; n int main( )int n;/整数int eSum = 0; /奇数的和int oSum = 0;
16、 /偶数的和int eCount = 0; /奇数的个数int oCount = 0; /偶数的个数printf(“请输入若干个整数(以 0 结束输入) :”);scanf(“%d”, while ( n ) /当 n 不为 0if ( n % 2 ) /n 为奇数 eSum += n; +eCount; else /否则, n 为偶数 oSum += n; +oCount; scanf(“%d”, /输入下一个整数printf(“奇数平均值: %fn”, 1.0 * eSum / eCount );printf(“偶数平均值: %fn”, 1.0 * oSum / oCount );retu
17、rn 0;【程序运行结果如下: 】16. 编写程序。功能:计算并输出 500 以内最大的 10 个能被 13 或 17 整除的自然数之和。【程序代码如下: 】#include int main( )int n; /500-1 之间的整数int sum = 0; /求和变量int count = 0; /满足条件的数的个数for ( n=500; n0; -n)if ( n % 13 = 0 | n % 17 = 0 )sum += n;+count;if ( count = 10 ) /有 10 个满足条件的整数,提前结束循环break;printf(“sum = %dn”, sum );re
18、turn 0;【程序运行结果如下: 】第 7 章1. B 2. 编写程序。功能:百马百担问题:有 100 匹马,驮 100 担货,大马驮三担,中马驮2 担,两匹小马驮一担,求大、中、小马各多少匹?【程序代码如下: 】#include int main( )int bigHorse, midHorse, littleHorse; /大、中、小马的数量for ( bigHorse = 0; bigHorse = 33; +bigHorse )for( midHorse = 0; midHorse = 50; +midHorse )littleHorse = 100 bigHorse midHorse; /小马数量if ( littleHorse % 2 = 0 return 0;