习题参考答案_第1页
习题参考答案_第2页
习题参考答案_第3页
习题参考答案_第4页
习题参考答案_第5页
免费预览已结束,剩余89页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题参考答案第 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.1415926 int main( )double r = 2.5; double h = 3.5; double v=0;v = (pi * r * r)*h;printf( “v = %lfn ”, v); return 0;【程序运行结果如下:】3. 将下面的数学公式转换成c 语言的表达式,并用程序验证转换后的表达式是否与原数学公式是一致的。数学公式如下:b a b a b a b a a+-+精品资料-+ - 4242设 a = 3, b = 5。【程序代码如下:】#include int main( )double a=3, b=5;double result = (-2 * a + ( 4*ab )/( 2*a + b ) )/( (a - 4*b)/(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 ”, &x, &y);printf( “before swap: x=%c, y=%cn”, x, y); tmp = x;x = y;y = tmp;printf( “after swap: x=%c, y=%cn”, x, y); 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 ) ) / (2 * a) ;printf( “the two roots are:n”);printf( “root1 = %lfn root2 = %lfn”, root1, root2); return 0;【程序运行结果如下:】第 3 章1.10101102. 某市不同车牌的出租车3 公里的起步价和计费分别为:夏利7 元/公里,3 公里以外2.1 元/公里; 富康8元/公里, 3 公里以外2.4元/公里; 桑塔纳9 元, 3 公里以外2.7元/ 公里。编程:从键盘输入乘车的车型及公里数,输出应付的车资。【程序代码如下:】#include int main( )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, &cartype);printf( 请输入您乘车的总路程:); scanf(%lf, &distance);if( cartype = 1)/夏利if( distance 3 ) totalmoney = 7.0; elsetotalmoney = 7 + xiali * (distance 3);else if( cartype = 2 ) /富康if( distance 3 ) totalmoney = 8.0; elsetotalmoney = 8 + fukang * (distance 3);精品资料else if( cartype = 3 ) /富康if( distance 3 ) totalmoney = 9.0; elsetotalmoney = 9 + sangtana * (distance3);printf( (四舍五入)您的车费为:%.0lfn, totalmoney ); return 0;【程序运行结果如下:】3. write a program that asks the user to type in two integer values at the terminal. testthesetwonumberto determineif the firstis evenlydivisibleby thesecond,and then display anappropriate message at the terminal.【程序代码如下:】#include int main( )int num1, num2;printf( “input two integers:”);精品资料scanf( “%d%d ”, &num1, &num2); 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 中, 要求通过程序将这两个字符对应的数字相加后输出。【程序代码如下:】#include int main( )char x , y;printf( “input two characters:”); scanf( “%c%c ”, &x, &y);if( x= 0&x= 0&y= 9 ) printf( “%d n ”, x-0+y-0);精品资料return 0;【程序运行结果如下:】4. 编写程序,从键盘上输入一个小写字母,将其转化为大写字母。【程序代码如下:】#include int main( )char lower;printf(“input a lower alpha:”); scanf( “%c ”, &lower);if( lower= a& lower= z)printf( “%c n ”, lower - 32); return 0;【程序运行结果如下:】5. write a program that takes an integer keyed in from the terminal and extracts and displays each digit of the integer in english.so, if the user types 932,the program should display“nine three two”.【程序代码如下:】#include (这题应该放到第6 章)精品资料int main( )int num;int idigit;/每一位上的数字printf( “pleasse input an integer:”); scanf( “%d ”, &num);while ( num ) /当该数不为0 时,继续提取其个位上的数字idigit = num % 10; /提取个位switch ( idigit )case 0: printf(“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;精品资料num /= 10; /去掉该数的个位printf( “n ”); return 0;【程序运行结果如下:】第 5 章1.c2.b3.c4.c5.b6.a7.a8.错误。9.正确。10. void11. 编写程序,用有参有返回值函数实现判断三个数是否能构成三角形。函数原型可声明为: “int istriangle( double a, double b, double c );”, 其中,a,b,c 为三角形的三条边,返回值为0 或 1 , 0 代表不能构成三角形,1 代表能构成三角形。请在主函数中调用该函数完成程序的功能。【程序代码如下:】#include 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 ”, &ea, &eb, &ec);result = istriangle( ea, eb, ec ); /函数调用if( 0 = result )printf( “这组边长不能构成三角形n ”); elseprintf( “这组边长可以构成三角形n ”); return 0;int istriangle( double a, double b, double c ) /函数定义if( a 0 & b 0 & c 0 & a + b c & b + c a & c + a b )/三角形任意边长大于0,且任意两边之和大于第三边return 1; / 可以构成三角形elsereturn 0; / 不能构成三角形【程序运行结果如下:】12. writea functioncalledprimethat returns1 if its argumentis a primenumberand returns0 otherwise.【程序代码如下:】#include (这题应该放到第6 章)精品资料#include int prime( int n ); /函数声明int main( )int num;int isprime;printf( “please input an integer:”); scanf( “%d ”, &num);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;精品资料else return 0;【程序运行结果如下:】第 6 章1.a2.b3.d4.c5.d6.c7.a8.a9.a10. 511. 312. 编写程序。功能:从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用变量i 统计大于零的整数个数,用变量j 统计小于零的整数个数。【程序代码如下:】#include int main( )int num; / 输入的整数int icount = 0; /大于0 的整数的计数变量int jcount = 0; /小于0 的整数的计数变量printf( “请输入多个整数: (以 0 结束输入 )”); scanf( “%d ”, &num);while ( num ) / while ( num != 0 )精品资料if ( num 0 ) +icount;else if ( num 0 ) +jcount; scanf( “%d ”, &num);printf( “大于0 的个数: %dn ”, icount); printf( “小于0 的个数: %dn ”, jcount); return 0;【程序运行结果如下: 】13. 编写程序。功能:以每行5个数来输出300以内能被7 或 17整除的偶数,并求出其和。【程序代码如下: 】#include int main( )int n; /300以内的数int count = 0; /满足条件的数的统计变量int sum = 0; /求和变量for( n = 1; n = 300; +n)if ( n % 2 = 0 & (n % 7 =0 | n % 17 = 0) ) /是偶数,且能被7 或 17整除精品资料sum += n; / 求和printf( “%5d ”, n);/ 输出n 值+count;if( count % 5 = 0 ) /某行够5 个数了,则换行printf( “n ”);printf( “n ”); return 0;【程序运行结果如下:】14. 编写程序。功能:输出100 到 1000之间的各位数字之和能被15 整除的所有数,输出时每10个数一行。【程序代码如下:】#include (移到第7章) int main( )int n;/100到 1000之间的整数int tmpn;/ 临时存储nint sum; / 统计n 的各位数字之和int count = 0; /输出数的个数for ( n = 100; n = 1000; +n )精品资料tmpn = n; / 将 n 临时存储到tmpn中sum = 0; / 每个n 要重新计算各位数字之和while ( tmpn ) /当 tmpn不为0 时sum += tmpn % 10; tmpn /= 10;if ( sum % 15 = 0 ) /如果n 满足指定的条件printf( “%5d ”, n); / 输出当前n 值+count;if ( count % 10 = 0 ) /一行输出了10个整数,则换行printf( “n ”);printf( “n ”); return 0;【程序运行结果如下:】15. 编写程序。功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。精品资料【程序代码如下:】#include int main( )int n;/ 整数int esum = 0; /奇数的和 int osum = 0; /偶数的和 int ecount = 0; /奇数的个数int ocount = 0; /偶数的个数printf( “请输入若干个整数(以0 结束输入):”); scanf( “%d ”, &n);while ( n ) / 当 n 不为0if ( n % 2 ) /n为奇数esum += n;+ecount; else / 否则,n 为偶数osum += n;+ocount; scanf( “%d ”, &n); / 输入下一个整数printf( “奇数平均值: %fn ”, 1.0 * esum / ecount ); printf( “偶数平均值: %fn ”, 1.0 * osum / ocount ); return 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 );精品资料return 0;【程序运行结果如下:】第 7 章1. b2. 编写程序。功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中马驮2 担,两匹小马驮一担,求大、中、小马各多少匹?【程序代码如下:】#include int main( )int bighorse, midhorse, littlehorse; /大、中、小马的数量for ( bighorse = 0; bighorse = 33;+bighorse ) for( midhorse = 0; midhorse = 50;+midhorse )littlehorse = 100bighorse midhorse; /小马数量if ( littlehorse % 2 = 0 & (3*bighorse + 2*midhorse + littlehorse / 2= 100 ) ) / 小马数量是偶数,且三种马驮的货是100担printf( “大马:%d,中马: %d,小马: %dn ”, bighorse, midhorse, littlehorse );return 0;精品资料【程序运行结果如下:】3. 编写程序。功能:百鸡问题:100元买100只鸡,公鸡一只5 元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?【程序代码如下:】#include int main( )int cock, hen, chick; /公鸡、母鸡、小鸡的数量for (cock = 0; cock = 20;+ cock) for(hen = 0;hen = 33;+ hen)chick = 100cock hen; / 小鸡数量if (chick % 3 = 0 & (5* cock + 3* hen + chick / 3 = 100 ) ) /小鸡数量是3 的倍数,且三种鸡的总钱数是100printf( “公鸡:%d,母鸡: %d,小鸡: %dn ”, cock, hen, chick);return 0;【程序运行结果如下:】4. 编写程序。功能:在屏幕上用* 输出一个漏斗状的图形。精品资料【程序代码如下:】#include void printfunnel( int n); /函数声明int main( )int n; / 上半部的总行数printf( “请输入漏斗上半部的总行数: ”); scanf( “%d ”, &n);printfunnel( n ); /调用函数打印漏斗形return 0;void printfunnel( int n)int row; / 行号int starcount; /某行上星号的数量int spacecount; /某行上空格的数量for( row = 1; row = n; +row)for( spacecount = 1;spacecount = row 1 ; + spacecount) printf( “); / 打印出某行上星号前的空格for( starcount = 1; starcount = 2*( n row ) + 1;+starcount ) printf( “* “); / 打印出某行上的所有星号精品资料printf( “n ”); / 换行/打印下半部分(可看成一个n-2行的三角形状) for( row = 2; row = n; +row)for( spacecount = 1;spacecount = n - row ; + spacecount) printf( “); / 打印出某行上星号前的空格for( starcount = 1; starcount = 2* row - 1; +starcount )printf( “* “); / 打印出某行上的所有星号 printf( “n ”); / 换行【程序运行结果如下:】5. 从上到下各空依次为:(1 ) i = n( 2) k=2*(n-i)(3) printf( “n ”);(4) scanf( “%d ”, &n);第 8 章无 。 第 9 章1.b2.c3.a4. 从键盘输入若干整数(数据个数应小于20 ) ,其值在0 至 4 的范围内,用 -1 作为输入结束的标志。编程统计输入的整数个数。精品资料【程序代码如下:】#include int getcount( int a , int n ); /函数声明int main( )int array20 =0 ; /用来存储最多20个整数int c;c = getcount( array , 20 );printf( “输入的有效数的个数为: %dn ”, c); return 0;int getcount( int a , int n ) /函数定义int tmp; / 临时存储输入的数int count=0; /输入的有效数的个数printf( “请输入若干个 0-4之间的整数(以一1 结束输入):”); scanf( “%d ”, &tmp);while ( tmp != -1 & count =0 & tmp =4 ) /在范围之内a count+ = tmp ; /将值转存到数组对应元素中scanf( “%d ”, &tmp);/ 输入下一个数精品资料return count;【程序运行结果如下:】5. 编写函数,将一个整型数组的全部元素逆序存储,即若原来数组元素分别为1,2,3,4,5 , 逆序存储后数组各元素变为5,4,3,2,1 。 函数原型可声明为:“voidreverse(inta , int n ); ”,参数a 为数组, n 为数组中的元素个数。【程序代码如下:】#include void reverse( int a , int n ); int main( )int array10=0; int i;printf( “请输入 10个整数:”); for( i=0; i10; i+)scanf( “%d ”, &arrayi);reverse( array, 10); /调用函数逆序存储数组中的数据printf( “逆序后的元素为: n ”); for( i=0; i10; i+)printf( “%5d ”, arrayi);精品资料printf( “n ”); return 0;void reverse( int a , int n )int i;int tmp;for( i=0; in/2;+i)tmp = ai;ai = an-i-1; an-i-1 = tmp;【程序运行结果如下:】6. 编写函数,将一个十进制数转换成一个二进制数(提示:将转换后的二进制数各位的值依次存储在一个一维数组中,要输出时,只要逆序输出这个数组各元素的值即可)。函数原型可声明为:“int transformtobin( int dnum, int bin ) ;”,参数dnum是要转换的十进制数,bin是存储转换后的二进制值的数组(逆序存储的 ), 返回值是bin数组中元素的个数。【程序代码如下:】#include 精品资料int transformtobin( int dnum, int bin ) ; int main( )int array32=0; /保存转换后的二进制数int num; / 待转换的整数int cc; / 最后得到的二进制总共多少位printf( “请输入一个整数:”); scanf( “%d ”, &num);cc = transformtobin( num, array ); /调用转换函数cc-; / 往回退一个元素下标,使cc 指向最后一个元素for( ; cc=0;cc- ) / 输出转换后的二进制数printf( “%d ”, arraycc);printf( “n ”); return 0;int transformtobin( int dnum, int bin )int count = 0;while ( dnum ) /当 dnum还未转换完毕bincount+ = dnum % 2;/余数保留到数组对应元素中dnum /= 2;/ 数本身除2精品资料return count;【程序运行结果如下:】第 10章1. 从键盘输入10个互不相同的整数,找出其中最小的元素将其与数组中的第一个元进行交换。【程序代码如下:】#include void getmin( int a , int n); /函数声明int main( )int array10; int i;printf( “请输入 10个互不相等的整数: ”);for ( i=0; i10;+i) scanf( “%d ”, &arrayi);getmin( array , 10 ); /调用函数来实现功能printf( “将最小值换到第1 个元素后: ”); for ( i=0; i10;+i)printf( “%5d ”, arrayi); printf( “n ”);精品资料return 0;void getmin( int a , int n) /函数定义int i;int tmp;int minid=0;for( i=1; in; +i)if ( a i a minid ) minid = i;/将最小值换到第1 个元素tmp = a0; a0 = aminid; aminid = tmp;【程序运行结果如下:】2. 有 10 本图书,从键盘输入每本图书的价格后,找出价格最高的图书并输出其价格。【程序代码如下:】#include double getmaxprice( double a , int n); /函数声明int main( )精品资料double book10; int i;int maxid;printf( “请输入 10本图书的价格: ”); for ( i=0; i10;+i)scanf( “%lf ”, &booki);maxid = getmaxprice ( book , 10 ); /调用函数来实现功能printf( “最高书价:%.2lfn ”, bookmaxid ); return 0;double getmaxprice ( double a , int n) /函数定义int i;int maxid =0; for( i=1; i a maxid ) maxid = i;return maxid;【程序运行结果如下:】3. writing a function to find the minimum subscript of element in an array ,and return the subscript to the function who calls it.精品资料【程序代码如下:】#include int getminid( int a , int n); /函数声明int main( )int array10; int i;int minid;printf( “请输入 10个整数:”); for ( i=0; i10;+i)scanf( “%d ”, &arrayi);minid = getmin( array , 10 ); /调用函数来实现功能printf( “最小元素的下标: %dn ”, minid ); return 0;int getmin( int a , int n) /函数定义int i;int minid=0;for( i=1; in; +i)if ( a i aj ) imin = j;(3) imin != i; (4) ai = aimin;2. 从键盘输入若干个互不相同的非负数(假设小于100 ,用负数结束输入),要求从小到大排序。【程序代码如下:】#include void selectsort(int a , int length ); void output(int a , int length);int input(int a , int length); int main()int b 10 = 0; int n;n = input(b, 10); selectsort(b, n); output(b, n); return 0;精品资料void selectsort(int a , int length )int i, j, k, x;for(i = 0; i length-1; i + )k = i;for(j = i + 1; j a k )k = j;if (i != k)x = a i ;a i = a k ; a k = x;void output(int a , int length)精品资料int i;printf(the sorted numbers:n); for(i = 0; i length; i + ) printf(%4d,a i );printf( “n ”);int input(int a , int length)int i , tmp; int k = 0;printf(input numbers:n); for(i = 0; i = 0 & tmp 100)ai = tmp; k+; else if ( tmp 0 ) break;return k;【程序运行结果如下:】精品资料3. input five student score from the keyboard ,and then sort these scores with method of bubble sort on descend.【程序代码如下:】#include void bubblesort(int score , int length); int main( )int score5; int i;printf( “输入5 个学生成绩: “);for ( i=0;i5; +i) scanf( “%d ”, &scorei); bubblesort( score , 5);for ( i=0;i5; +i) printf( “%5d ”, scorei); printf( “n ”);return 0;void bubblesort(int score , int length)int i, j, t;printf(成绩排序如下:n);精品资料for(i = 0; i length - 1; i+)for(j = 0; j score j + 1 )t = score j ;score j = score j + 1 ; score j + 1 = t;【程序运行结果如下:】第12章1.62.53.不能4.6 95.abc g6. 编写函数,将一个字符串的全部有效元素逆置。函数原型可声明为“void reversestr( char str ) ;”。【程序代码如下:】#include #include void reversestr( char str );int main( )精品资料char str100;puts( “请输入字符串:”); gets(str);reversestr( str );puts( “逆转后的字符串:”); puts( str );return 0;void reversestr( char str )char tmp; int i, j;i = 0;j = strlen( str ) 1; while ( i j )tmp = stri;stri = strj; strj = tmp;+i; -j;【程序运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论