成都信息工程学院C语言作业答案.doc_第1页
成都信息工程学院C语言作业答案.doc_第2页
成都信息工程学院C语言作业答案.doc_第3页
成都信息工程学院C语言作业答案.doc_第4页
成都信息工程学院C语言作业答案.doc_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

分类一1. 编写一程序P1-111.C实现以下功能x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前给出提示Pleaseinputx:),然后计算并在屏幕上输出函数值。注意,图1中的括号不是而是(),编程可用素材:printf(Pleaseinputx:).。 -5x+27(x0)程序的运行效果应类似地如图1所示,图1中的3是从键盘输入的内容。#include int main(void)int x;double y;printf(Please input x:);scanf(%d, &x);if (x 0)y = (double) 2 * x - 1;elseif (x = 0)y = (double) 7909;elsey = (double) - 5 * x + 27;printf(nF(%d) = %.0lfn, x, y);return 0;2. P1-113已知某银行整存整取存款不同期限的年息利率分别为:3.15%期限一年,3.63%期限二年,4.02%期限三年,4.69%期限五年,5.36%期限八年。从键盘上输入存钱的本金(以元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可用素材:printf(nPleaseinputbenjin,cunqi:).、printf(nlixi=.yuan.。程序的运行效果应类似地如图1所示,图1中的10000,8是从键盘输入的内容。#include int main(void)int benjin, cunqi;double lixi;double money;printf(nPlease input benjin,cunqi:);scanf(%d,%d, &benjin, &cunqi);money = benjin;if ( cunqi = 1 )lixi = money * cunqi * 3.15 / 100;elseif ( cunqi = 2 )lixi = money * cunqi * 3.63 / 100;else if ( cunqi = 3 )lixi = money * cunqi * 4.02 / 100;elseif ( cunqi = 5 )lixi = money * cunqi * 4.69 / 100;else if ( cunqi = 8 )lixi = money * cunqi *5.36 / 100;printf(nlixi = %.2f yuann, lixi);return 0;3. P1-114编写一个简单计算器程序,输入格式为:data1opdata2。其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。程序的运行效果应类似地如图1、图2、图3、图4所示,图1中的3000+2000、图2中的3000%2000、图3中的3000%0和图4中的3000/0是从键盘输入的内容。#include int main( void )int data1, data2;double jieguo;char op;printf(nPlease input data1 op data2:);scanf(%d %c %d, &data1, &op, &data2);switch ( op )case +:jieguo = ( double ) data1 + data2;printf(n%d%c%d=%.0fn, data1, op, data2, jieguo);break;case -:jieguo = ( double ) data1 - data2;printf(n%d%c%d=%.0fn, data1, op, data2, jieguo);break;case *:jieguo = ( double ) data1 * data2;printf(n%d%c%d=%.0fn, data1, op, data2, jieguo);break;case /:if ( data2 != 0 )jieguo = ( double ) data1 / data2;printf(n%d%c%d=%.0fn, data1, op, data2, jieguo);break;elseprintf(nError! chu shu wei 0.n);break;case %:if ( data2 != 0 )jieguo = data1 % data2;printf(n%d%c%d=%.0fn, data1, op, data2, jieguo);break;elseprintf(nError! chu shu wei 0.n);break;default:printf(nError!n);return 0;4.输入月份,打印2003年该月有几天。当输入的月份超范围时,应显示“Invalidmonthinput”。程序的运行效果应类似地如图1和图2所示,图1中的4和图2中的13是从键盘输入的内容。#include int main( void )int month;int day;printf(nplease input the month number:);scanf(%d, &month);switch ( month )case 1:case 3:case 5:case 7:case 8:case 10:case 12:day = 31;printf(n2003.%d has %d days.n, month, day);break;case 4:case 6:case 9:case 11:day = 30;printf(n2003.%d has %d days.n, month, day);break;case 2:day = 28;printf(n2003.%d has %d days.n, month, day);break;default:printf(nInvalid month inputn);return 0; 5.已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元):profit1000没有提成;1000profit2000提成10%;2000profit5000提成15%;5000profit10000提成20%;10000profit提成25%。请根据输入的利润计算员工的薪水。程序的运行效果应类似地如图1所示,图1中的2000是从键盘输入的内容。#include int main( void )int profit;double salary = 500;printf(nInput profit:);scanf(%d, &profit);if ( profit 1000 & profit 2000 & profit 5000 & profit 10000 )salary = salary + profit * 0.25;printf(salary=%.2fn, salary); return 0;6.编写一程序P7-708.C实现以下功能输入一个三位正整数,然后逆序输出。如输入123,则输出321。程序的运行效果应类似地如图1所示,图1中的752是从键盘输入的内容。#include#include/*int main(void)int num, i;char str4;printf(Input an integer:);scanf(%d, &num);itoa(num, str, 10);printf(The result is );for(i = 2; i = 0; i-)printf(%c, stri);printf(n);return 0;*/int main(void)int num;printf(Input an integer:);scanf(%d, &num);printf(The result is );doprintf(%d, num%10);num = num/10; while (num);printf(n);return 0;cf7. 编写一程序P7-713.C实现以下功能用scanf输入某年某月某日,判断这一天是这一年的第几天?以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。注:判断年份是否为闰年的方法为400的倍数为闰年,如2000年;若非100的倍数,而是4的倍数,为闰年,如1996年。程序的运行效果应类似地如图1所示,图1中的2000-3-1是从键盘输入的内容。#includeint main(void)int ye, mo, da, sum = 0, i;int mday13 = 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; printf(Please input: year-month-dayn);scanf(%d-%d-%d, &ye, &mo, &da);for (i = 1; i 2)sum+;sum = sum + da;printf(It is the %dth day.n, sum);return 0;8. P7-723.C输入三角形的三边长a、b、c(边长可以是小数),求三角形面积area,并输出。如果输入的三边构不成三角形,应给出“dataerror”的信息提示。注:根据“海伦秦九韶”公式,areap(p-a)(p-b)(p-c),其中p(a+b+c)/2。程序的运行效果应类似地如图1和图2所示,图1中的3,4,5和图2中的3,4,8是从键盘输入的内容。#include #include int main( void )double aa, bb, cc, pp, ss, tt;printf(nplease input triange sides:);scanf(%lf,%lf,%lf, &aa, &bb, &cc);if ( ( aa + bb cc ) & ( aa + cc bb ) & ( bb + cc aa ) )pp = ( aa + bb + cc ) / 2;tt = pp * ( pp - aa ) * ( pp - bb ) * ( pp - cc );ss = sqrt( tt );printf(narea=%.2lfn, ss);elseprintf(ndata errorn);return 0; 9. 7-731输出n行星号,每行5个*星号。程序的运行效果应类似地如图1所示,图1中的4是从键盘输入的内容。#include int main( void )int nn, i;printf(nplease input n:);scanf(%d, &nn);for ( i = 1; i = nn; i+ )printf(* * * * *n);return 0;10.编写一程序P7-736.C实现以下功能从键盘上输入一个四位整数,计算各个位上的数字之和。程序的运行效果应类似地如图1所示,图1中的1234是从键盘输入的内容。#includeint main(void)int num, sum = 0;printf(Input a number with 4-digit: );scanf(%d, &num);dosum = sum + num % 10;num = num / 10; while (num);printf(sum=%dn, sum);return 0;11. 从键盘输入3个整数,输出绝对值最大的数。程序的运行效果应类似地如图1所示,图1中的1,2,3是从键盘输入的内容。#includeint ab(int x);int main(void)int num3, i, j;printf(Input 3 numbers:);scanf(%d,%d,%d, &num0, &num1, &num2);j = 0;for (i = 1; i 3; i+)if (ab(numj) = 0)return x;return - x; 12. 设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输出(输出时以万为单位,应考虑有小数)。程序的运行效果应类似地如图1所示,图1中的50是从键盘输入的内容。#include int main(void)float chanzhi = 5000, xx;int year = 2006;printf(nPlease input x:);scanf(%f, &xx);while ( chanzhi 10000 )chanzhi = chanzhi * ( 1 + xx / 100 );year+;printf(nyear = %d nian, chanzhi = %.2fn, year, chanzhi);return 0;13.编写一程序P2-221.C实现以下功能从键盘读入一个字符串(最多127个字符),检查该字符串是否是回文。所谓回文即正向与反向的拼写都一样,例如:adgda。程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfghjhgfdsaa是从键盘输入的内容。#include #include int main( void )int i, j, len;char aa128;printf(nPlease input string:);gets(aa);len = strlen(aa);for ( i = 0, j = len - 1; i = j )printf(n%s shi hui wen., aa);elseprintf(n%s bu shi hui wen., aa);return 0;14. 用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及10个数的和。程序的运行效果应类似地如图1所示,图1中的4620-453556-23-4970是从键盘输入的内容。#include int main( void )int aa10, i;float sum1 = 0, sum2 = 0, sum3 = 0;printf(nInput 10 integers.n);for ( i=0; i10; i+ )scanf(%d, &aai);for ( i=0; i 0 )sum1 = sum1 + aai;elsesum2 = sum2 + aai;sum3 = sum1 + sum2;printf(nzhengshu=%.0f,fushu=%.0f,all=%.0fn, sum1, sum2, sum3);return 0;15. 7-732编写一程序P7-732.C实现以下功能,输入3行3列的矩阵,输出所有元素的累加和。程序的运行效果应类似地如图1所示,图1中的123456789是从键盘输入的内容。#include int main( void )int i, j, aa33, sum = 0;for ( i = 0; i 3; i+ )for ( j = 0; j 3; j+ )scanf(%d, &aaij);for ( i = 0; i 3; i+ )for ( j = 0; j 3; j+ )sum = sum + aaij;printf(sum=%d, sum);return 0;16. 编写一程序P7-743.C实现以下功能从键盘输入一串可带空格的字符串,按逆序输出该字符串。注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。程序的运行效果应类似地如图1所示,图1中的abcxyz是从键盘输入的内容。#include #include int main( void )char aa100, bb100;int i, j, len;printf(Input a string:);gets(aa);len = strlen(aa);bblen=0;for ( i = 0, j = len - 1; i len; i+, j- )bbj = aai;printf(The result is:);puts(bb);return 0;17. 从键盘输入一个一百分制成绩,如果不在0100范围内,则要求重新输入数据,直到输入的数据在0100范围内。将输入的数据转换成等级A,B,C,D,E。90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E,要求使用switchcase/default语句,结果赋值给变量grade,并将变量grade的值输出到屏幕上。注意:变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。编程可用素材:printf(pleaseinputthescore(0-100):).、printf(score=.,grade=.n,.。程序的运行效果应类似地如图1所示,图1中的103和55是从键盘输入的内容。#include int main( void )float score;char grade;printf(please input the score(0-100):);scanf(%f, &score);while ( score 100 | score 0 )printf(nplease input the score(0-100):);scanf(%f, &score);switch ( ( int ) (score / 10 ) case 10:case 9:grade = A;break;case 8:grade = B;break;case 7:grade = C;break; case 6:grade = D;break;default:grade = E; printf(score=%.1f,grade=%cn, score, grade); return 0; 18. 编写一程序P7-750.C实现以下功能输入字符串s(不超过100个字符),将字符串s中所有字符*删除,并将修改后的字符串显示出来。程序的运行效果应类似地如图1所示,图1中的*dgjk*%&*df78dg88*是从键盘输入的内容。#include int main( void )int i;char ss101;printf(Please input a string:);gets(ss); for (i = 0; ssi; i+)if ( ssi != 0 & ssi != *)printf(%c, ssi); printf(n);return 0;19.键盘输入m,n(不超过1000的正整数),输出介于m和n(含m和n)中能被3整除且至少有位数字是5的所有整数。程序的运行效果应类似地如图1和图2所示,图1中的100,200和图2中的195,15是从键盘输入的内容。#includeint main(void)int mm, nn, i, kk;printf(Input m, n:);scanf(%d,%d, &mm, &nn);if (mm nn)kk = mm;mm = nn;nn = kk;for (i = mm; i = nn; i+)if (i % 3 = 0 & (i % 10 =5 | i % 100 / 10 = 5 | i / 100 = 5)printf(%d , i);return 0; 20. 计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。注意,程序中不能使用库函数pow或使用同名的变量、函数、单词。程序的运行效果应类似地如图1和图2所示,图1中的3.7,5和图2中的4,-2是从键盘输入的内容。#includeint main(void)int yy, i;double xx, result = 1;printf(Input x, y:);scanf(%lf,%d, &xx, &yy);if (yy 0)for (i = 1; i = yy; i+)result = result * xx;if (yy 0)for (i = 1; i = - yy; i+)result = result / xx;printf(%.6lf%d=%.6lfn, xx, yy, result);return 0;分类二考试:21. 求S=1/1!+1/2!+1/3!+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型),从键盘读入。程序的运行效果应类似地如图1所示,图1中的18是从键盘输入的内容。#include int main( void )int i, nn;double ss = 0, tt = 1;printf(Please input n:);scanf(%d, &nn);for (i = 1; i = nn; i+)tt = tt * i;ss = ss + 1 / tt;printf(ns=1/1!+1/2!+.+1/%d!=%.16fn, nn, ss);return 0;22. 编写一程序P2-219.C实现以下功能从键盘读入一行字符(最多127个字符),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意:要求先显示这些数字字符的数量。程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535as3bf0是从键盘输入的内容。#include #include int main( void )int i, j = 0, num = 0;char aa128, result128;printf(nPlease input string:);gets(aa);for ( i = 0; aai; i+ )if ( aai = 0 & aai = 9 )num+;resultj = aai;j+;resultj = 0;printf(nshu zi ge shu wei:%dnshu zi wei:%sn, num, result);return 0;23. 编写一程序P2-220.C实现以下功能从键盘读入一行字符(最多127个字符),统计及输出其中的字母、数字、空格和其他符号的个数。程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#include #include int main(void)int i, zimu = 0, shuzi = 0, kongge = 0, qita = 0;char aa128;printf(nPlease input string:);gets(aa);for ( i = 0; aai; i+ )if ( aai = a & aai = A & aai = 0 & aai Za-zB-Yb-yC-Xc-xZ-Az-a即字母A变成Z、字母B变成Y.,非字母字符不变。最后在屏幕上先显示这一行字符的长度,再显示生成的密文。程序的运行效果应类似地如图1所示,图1中的sfasfk,lmw4tywerysfcvasgewrxfasftg是从键盘输入的内容。#include #include int main( void )char aa128;int i, len;printf(Please input string:);gets(aa);for ( i = 0; aai; i+ )if ( aai = a & aai = A & aai =Z )aai = A + Z - aai;len = strlen(aa);printf(nzi fu chuan chang du:%dnmi wen:, len);puts(aa);return 0;25. 编写一程序P2-223.C实现以下功能一个球从10000m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第n(n从键盘输入)次落地时,共经过多少米?第n次反弹多高?注意,计算精度为小数点后6位,变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。编程可用素材:printf(Pleaseinputn:).、printf(sn=.,hn=.。程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。#includeint main(void)int i, nn;float sn = 10000, hn = 5000;printf(Please input n:);scanf(%d, &nn);for (i = 2; i = nn; i+)sn = sn + 2 * hn;hn = hn / 2;printf(sn=%.6f,hn=%.6fn, sn, hn);return 0;26. 编写一程序P2-224.C实现以下功能猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n(n从键盘输入)天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子(不考虑猴子是否真的能吃多少桃子)。程序的运行效果应类似地如图1所示,图1中的13是从键盘输入的内容。#include int main( void )int sum = 1, nn, i;printf(Please input n:);scanf(%d, &nn);for ( i = 1; i nn; i+ )sum = 2 * ( sum + 1 );printf(total=%d, sum);return 0;27. 编写一程序P7-716.C实现以下功能求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字(可取19之间的一个值)。例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键盘输入控制。(注意s的值有可能超出int的范围。)程序的运行效果应类似地如图1所示,图1中的2,3是从键盘输入的内容。#includeint main(void)int aa, nn, i; double sum = 0, sum1 = 0;printf(Please input a,n: );scanf(%d,%d, &aa, &nn);for (i = 1; i = nn; i+)sum1 = sum1 * 10 + aa;sum = sum + sum1;printf(a+aa+.=%.0lfn, sum);return 0;28. 编写一程序P7-717.C实现以下功能输入10个整型数存入一维数组,输出值和下标都为奇数(数组第1个元素的下标为0)的元素及其个数。程序的运行效果应类似地如图1所示,图1中的2453456781241558637是从键盘输入的内容。#include int main( void )int i, count = 0, aa10;printf(Input 10 intergers:n);for ( i = 0; i 10; i+ )scanf(%d, &aai);if ( i % 2 = 1 )if ( aai % 2 = 1 )count+;printf(count=%dn,count);for ( i = 0; i =2),编写程序求f(n)的值(n由键盘输入,13=n=2)。注意,图1中的括号不是而是(),编程可用素材:printf(Inputn(20=n=2):).。程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。#include int main(void)int i, nn;double aa14;printf(Input n (13=n=2):);scanf(%d, &nn);aa0 = 0;aa1 = 1;aa2 = 2;for ( i = 3; i = nn; i+ )aai = 2 * aai - 1 + aai - 2 * aai - 3;printf(nf(%d)=%.0lfn, nn, aann);return 0;30. 编写一程序P7-725.C实现以下功能利用数组,求斐波拉契数列的前n(n的范围为:320)项,并输出到屏幕上(数和数之间用横向跳隔隔开)。斐波拉契公式:f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)(n3)。程序的运行效果应类似地如图1所示,图1中的11是从键盘输入的内容。#includeint main(void)int af20, i, shua;printf(input a data(3-20):);scanf(%d, &shua);af0 = 1;af1 = 1;for (i = 2; i shua; i+)afi = afi - 1 + afi - 2;for (i = 0; i shua; i+)if (i = shua - 1)printf(%d, afi);else printf(%dt, afi);printf(n);return 0;31. 编写一程序P7-745.C实现以下功能输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。程序的运行效果应类似地如图1所示,图1中的3515是从键盘输入的内容。#include int main( void )int aa, bb, cc, dd, mm;printf(please input two integer numbers:);scanf(%d%d, &aa, &bb)

温馨提示

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

评论

0/150

提交评论