《C++题库部分答案.docx》由会员分享,可在线阅读,更多相关《C++题库部分答案.docx(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、分类1 .编写程序P1T1LC实现以下功能x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前 给出提示Please input x:),然后计算并在屏幕上输出國数值。注意,图1中的括号不是而是(),编 程可用素材:printf (Please input x: ). 1- -5x+27 (x0)程序的运行效果应类似地如图1所示,图1中的3是从键盘输入的内容。Sinclude int main(void) (int x; double y;printf( Please input x:); scanf (zz%dz,, &x);if (x 0)
2、 (y = (double) 2 * x - 1;) else (if (x = 0) y = (double) 7909; else (y = (double) - 5 * x + 27;) )printf CnF(%d) = %. 01fn*, x, y);return 0;2. P1-U3已知某银行整存整取存款不同期限的年息利率分别为:3. 15%期限一年,3. 63%期限二 年,4. 02%期限三年,4. 69%期限五年,5. 36%期限八年。从键盘上输入存钱的本金(以元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3, 5, 8),求到期时能从银行得到的利
3、息 (以元为单位,应考虑有小数,不计复利)。编程可用素材: printf (/znPlease input benjin, cunqi:、 printf (nlixi 二.yuan., 程序的运行效果应类似地如图1所示,图1中的10000, 8是从键盘输入的内容。Sinclude 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
4、) (lixi = money * cunqi * 3. 15 / 100; else (if ( cunqi = 2 )(lixi = money * cunqi * 3. 63 / 100;) else (if ( cunqi = 3 )( lixi = money * cunqi * 4. 02 / 100;) else (if ( cunqi = 5 ) (money * cunqi * 4. 69 / 100;lixi =elseif ( cunqi = 8 )lixi = money * cunqi *5. 36 / 100;printf (nlixi = %. 2f yuann,
5、 lixi);return 0;)3. P1T14编写个简单计算器程序,输入格式为:datal op data2o其中datal和data2是参加 运算的两个数(datal、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符, 它的取值只能是+、/、%程序的运行效果应类似地如图1、图2、图3、图4所示 图1中的3000 + 2000、图2中的3000 % 2000、 图3中的3000 % 和图4中的3000 / 0是从键盘输入的内容。#include int main( void ) (int datal, data2;double jieguo; char op
6、;printf(z,nPlease input datal op data2:); scanf (,z%d %c %d,&datal, &op, &data2);switch ( op )case + :jieguo = ( double ) datal printf (zzn%d%c%d=%. Ofn, break;case -:jieguo = ( double ) datal printf (zzn%d%c%d=%. 0fn”, break;case *:jieguo = ( double ) datal printf (zzn%d%c%d=%. 0fn”, break;case /:i
7、f ( data2 != 0 )+ data2;datal, op, data2,-data2;datal, op, data2,* data2;datal, op, data2,jieguo);jieguo);jieguo);jieguo = ( double ) datal / data2;printf (,zn%d%c%d=%. 0fn,z, datal, op, data2, jieguo); break;elseprintf (z,nError! chu shu wei 0. n); break;case %:if ( data2 != 0 ) j ieguo = datal % d
8、ata2;printf (zzn%d%c%d=%. Ofn,z, datal, op, data2, jieguo); break;else (printf (zznError! chu shu wei 0. n);break; ) default:printf (z,nError !nzz);)return 0;)4.输入月份,打印2003年该月有几天。当输入的月份超范围时,应显示“ Invalid month input”。程序的运行效果应类似地如图1和图2所示,图1中的4和图2中的13是从键盘输入的内容。#include int main( void ) int month;int da
9、y;printf 、nplease input the month number:zz);scanf (z,%dzz, &month);switch ( month )(case 1:case 3:case 5:case 7:case 8:case 10:case 12:day = 31;printf (,zn2003. %d has %d days. n,month, day);break;case 4:case 6:case 9:case 11:day = 30;printf (zzn2003. %d has %d days. n,z, month, day);break;case 2:d
10、ay = 28;printf (zzn2003. %d has %d days. n,z, month, day);break;default:printf (zznlnvalid month inputn);) return 0;)5 .已知某公司员的保底薪水为500,某月所接工程的利润profit (整数)与利润提成的关系如 下(计量单位:元):profit1000没有提成;1000profit2000提成 10%;2000 prof i t5000提成 15%;5000 profit 10000提成 20%;10000 prof i t提成 25%O请根据输入的利润计算员的薪水。程序的运
11、行效果应类似地如图1所示,图1中的2000是从键盘输入的内容。#include int main( void )(int profit;double salary = 500;printf (zznlnput profit:zz);scanf(%d”, feprofit);if ( profit 1000 & profit 2000 & profit 5000 & profit = 10000 )(salary = salary + profit * 0. 2;)if ( profit 10000 )(salary = salary + profit * 0. 25;)printf(salar
12、y=%. 2fn”, salary);return 0;)6 .编写一程序P7-708. C实现以下功能输入个三位正整数,然后逆序输出。如输入123,则输出321。程序的运行效果应类似地如图1所示,图1中的752是从键盘输入的内容。c命令提示符BEInput an integer:752The result is 25?FT #include#include/*int main(void)( int num, i; char str4;printf(z,Input an integer:);scanf (级d,&num);itoa(num, str, 10);printf(The result
13、 is );for(i = 2; i = 0; i)(printf (z,%c,z, stri);)printf (zznzz);return 0;*/int main(void)(int num;printf (zzInput an integer:,z);scanf (z,%dzz, &num);printf (z,The result is ); do(printf (zz%dzz, num% 10);num = num/10; while (num);printf (nzz);return 0;)7 .编写程序P7-713. C实现以下功能用scanf输入某年某月某日,判断这一天是这一
14、年的第几天?以3月5日为例,应该先把前两个 月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 注:判断年份是否为闰年的方法为400的倍数为闰年,如2000年;若非100的倍数,而是4的倍 数,为闰年,如1996年。程序的运行效果应类似地如图1所示,图1中的2000-3-I是从键盘输入的内容。#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 (zzPlease in
15、put: year-month-daynzz); scanf (%d-%d-%d,&ye, &mo, &da);for (i = 1; i 2)sum+;)sum = sum + da;printf (,zIt is the %dth day. n, sum);return 0;)8 . P7-723. C输入三角形的三边长a、b、c(边长可以是小数),求三角形面积area,并输出。如果输入 的三边构不成三角形,应给出“data error”的信息提示。注:根据“海伦秦九韶”公式,area = x/p (p-a) (p-b) (p-c),其中 p = (a+b+c)/2o程序的运行效果应类似地
16、如图1和图2所示,图1中的3, 4, 5和图2中的3, 4, 8是从键盘输入的内容。#include #include int main( void )(double aa, bb, cc, pp, ss, tt;printf (z,nplease input triange sides:,z);scanf(z,%lf,%lf, %ir, &aa, &bb, &cc);if ( ( aa + bb cc ) & ( aa + cc bb ) & ( bb + cc aa ) (pp = ( aa + bb + cc ) / 2;tt = pp * ( pp - aa ) * ( pp - bb
17、 ) * ( pp - cc );ss = sqrt ( tt );printf (narea=%. 21fn , ss);elseprintf (Xndata errornz,);return 0;9 . P7-731输出n行星号,每行5个星号。程序的运行效果应类似地如图1所示,图1中的4是从键盘输入的内容。#include int main( void )(int nn, i;printf(z,nplease input n:丿; scanf (%d,&nn);for ( i = 1; i = nn; i+ )(printf(* * * * *n);)return 0;)10 .编写程序P
18、7-736. C实现以下功能从键盘上输入个四位整数,计算各个位上的数字之和。程序的运行效果应类似地如图1所示,图1中的1234是从键盘输入的内容。#include int main(void) (int num, sum = 0;printfl 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,
19、2, 3是从键盘输入的内容。#includeint ab(int x);int main(void)(int num3, i, j;printf(Input 3 numbers:);scanf (%d, %d, %d, &num, &numl, &num2);j = 0;for (i = 1; i = 0)( return x;)return - x;12 .设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8. 75 表示8. 75册,计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输出(输出时以万为单位,应 考虑有小数)。程序的运行效果应类似地如图1
20、所示,图1中的50是从键盘输入的内容。#include int main(void) (float chanzhi = 5000, xx;int year = 2006;printfl 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实现以下功能从键盘读入一个字符串(最
21、多127个字符),检查该字符串是否是回文。所谓回文即正向与反向的 拼写都一样,例如:adgda。程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfgh jhgfdsaa 是从键盘输入的内容。#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);) e
22、lse (printf (n%s bu shi hui wen. , aa);)return 0;)14 .用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及10个数的 和。程序的运行效果应类似地如图1际,图1中的4 6 20 -45 35 56 -23 -4 9 70是从键盘输入的内容。#include int main( void )int aa10, i;float suml = 0, sum2 = 0, sum3 = 0;printf( nlnput 10 integers. n );for ( i=0; i10; i+ )( scanf(%d”, &aa
23、i);)for ( i=0; i 0 ) suml = suml + aai;)else( sum2 = sum2 + aai;) sum3 = suml + sum2;printf (nzhengshu=%. Of, fushu=%. Of, all=%. 0fn”, suml, sum2, sum3);return 0;)15 . 7-732编写程序P7-732.C实现以下功能,输入3行3列的矩阵,输出所有元素的累加和。 程序的运行效果应类似地如图1所示,图1中的1 2 34 5 67 8 9-|X|是从键盘输入的内容。命令提示符369258147#include int main( vo
24、id )( int i, j, aa33, sum = 0;for ( i = 0; i 3; i+ ) (for ( j = 0; j 3; j+ )scanf &aai j);for ( i = 0; i 3; i+ )for ( j = 0; j 3; j+ )(sum = sum + aai j;)printf(sum=%d”, sum);return 0;)16 .编写程序P7-743. C实现以下功能从键盘输入串可带空格的字符串,按逆序输出该字符串。注意,程序中不能使用库因数strrev 或使用同名的变量、函数、单词。程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘
25、输入的内容。#include #include int main( void )(char aa100, bb100;int i, j, len;printf CInput a string:,z);gets(aa);len = strlen (aa);bblen= 0f ;for ( i = 0, j = len - 1; i len; i+, j- )(bbj = aai;)printf(,zThe result is:); puts(bb);return 0;)17 .从键盘输入个百分制成绩,如果不在0100范围内,则要求重新输入数据,直到输入的 数据在0100范围内。將输入的数据转换成
26、等级组90分以上为4,80一 89分为 铝70-79分为 6069分为4D,60分以下为 空”,要求使用switch case/default 语句,结果赋值给变量grade,并将变量grade的值输出到屏幕上。注意:变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间 的好习惯。编程 可用 素材:printf (please input the score (0-100)%printf(score=., grade=. n,., 程序的运行效果应类似地如图1所示,图1中的103和55是从键盘输入的内容。#include int main( void )flo
27、at 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 = break;case 8: grade = break;case 7:C;grade 二 break;case 6: grade = break;default: gr
28、ade 二printf (score二. If, grade二cn”, score, grade); return 0;18 .编写程序P7-750.C实现以下功能输入字符串S (不超过100个字符),将字符串S中所有字符,删除,并将修改后的字符串显示 出来。程序的运行效果应类似地如图1所示,图1中的dgjk* %&* *df78dg 88*是从键盘输入的内容。#include int main( void ) (int i;char ss101;printf( Please input a string:); gets(ss);for (i = 0; ssi; i+)(if ( ssi !=
29、 、 & ssi != *)(printf (%c, ssi);)printf(n);return 0;)19 .键盘输入m,n (不超过1000的正整数),输出介于m和n (含m和n)中能被3整除且至少有位 数字是5的所有整数。程序的运行效果应类似地如图1和图2所示,图1中的100, 200和图2中的!95, 15是从键盘输入 的内容。#include int main (void) (int mm, nn, i, kk;printf(zzInput m, n:);scanf (z,%d, %d,z, &mm, &nn);if (mm nn) (kk = mm;mm = nn;nn = kk
30、;)for (i = mm; i = nn; i+)(if (i % 3 = 0 & (i % 10 =5 I I i % 100 / 10 = 5 | i / 100 = 5)(printf (zz%d ”, i);)return 0;)20 .计算X的丫次方,其中丫为整数(可以是负整数或), X为实型。注意,程序中不能使用库 区!数pow或使用同名的变量、函!数、单词。程序的运行效果应类似地如图1和图2所示,图1中的3. 7, 5和图2中的4, -2是从键盘输入的内 容。#include int main (void) (int yy, i;double xx, result = 1;pr
31、intf(Input x, y:);scanf (“机f, %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(%. 61f%d=%. 61fn”, xx, yy, result);return 0;分类二21 .求S=l/1! +1/2! +1/3! +-+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1 项开始往后累加)。N为任意自然数(只考虑int型),从键盘
32、读入。程序的运行效果应类似地如图1所示,图1中的18是从键盘输入的内容。#include int main( void )(int i, nn;double ss = 0, tt = 1;printf(z,Please input n:);scanf (%d”, &nn);for (i = 1; i = nn; i+)(tt = tt * i;ss = ss + 1 / tt;printf Cns=l/1!+1/2!+. +l/%d!=%. 16fn*, nn, ss);return 0;)22 .编写程序P2-219.C实现以下功能从键盘读入一行字符(最多127个字符),将其中的数字字符以及
33、这些数字字符的数量在屏幕上显 示,注意:要求先显示这些数字字符的数量。程序的运行效果应类似地如图!际,图1中的gfaskl45623cvsac, 53dwafl faf32535as3bf0是从 键盘输入的内容。回命令提示符IPlease input stringxgfaskl45623cusac,53dwaf1 faf32535as3bf0shu zi ge shu wei:14 shu zi sei:45623533253530.FTTSinclude #include int main( void ) (int i, j = 0, num = 0;char aa128, result12
34、8;printf (,znPlease input string:,z);gets(aa);for ( i = 0; aai; i+ ) (if ( aai = & aai = 9) (num+;resultj = aai; j+;resultj = 、;printf (nshu zi ge shu wei:%dnshu zi wei:%sn,num, result);return 0;)23 .编写程序P2-220. C实现以下功能从键盘读入一行字符(最多127个字符),统计及输出其中的字母、数字、空格和其他符号的个数。程序的运行效果应类似地如图1际,图1中的gfaskl45623cvsac
35、, 53dwafl faf32535是从键盘输 入的内容。#include #include int main(void) (int i, zimu = 0, shuzi = 0, kongge = 0, qita = 0;char aa128;printf (、nPlease input string:,z); gets(aa);for ( i = 0; aai; i+ ) (if ( aai = a & aai = A & aai = 0 & aai Z a-zB-Y b-yC-X c-xZ-A z-a即字母A变成Z、字母B变成Y.,非字母字符不变。最后在屏幕上先显示这一行字符的长度, 再
36、显示生成的密文。程序的运行效果应类似地如图1丽,图1中的sfasfk, lmw4tywerysfcvasgewr xfasftg是从键盘 输入的内容。#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:
37、, len); puts(aa);return 0;)25 .编写程序P2-223. C实现以下功能个球从10000m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第n(n 从键盘输入)次落地时,共经过多少米?第n次反弹多高?注意,计算精度为小数点后6位,变量数据 类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。 编程可用素材:printf (Please input n:).、printf (sn =.,hn=.”.。程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。#include int main(void) (
38、int i, nn;float sn 二 10000, hn 二 5000;printf i Please input n:);scanf I %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从键盘输入)
39、天早上想再吃时,就只剩下个桃子了。求第一天共摘了多少个桃子(不考虑猴子是否 真的能吃多少桃子)。程序的运行效果应类似地如图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是个数字(可取1一9之间的一个值)。例如 2+22+222+2222+22222 (此时共有5个数相加),其中a值和有几个数相加由键盘输入控制。(注意s的 值有可能超出int的范围。)程序的运行效果应类似地如图1所示,图1中的2, 3是从键盘输入的内容。#include int main(void)(int aa, nn, i;double sum = 0, suml = 0;printf (Please input a, n:);scanf (%d, %d, &aa, &nn);
限制150内