1、成都信息工程学院C语言作业标准答案分类一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
2、 = (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),求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可
3、用素材: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 / 10
4、0; else if ( cunqi = 2 ) lixi = money * cunqi * 3.63 / 100; else if ( cunqi = 3 ) lixi = money * cunqi * 4.02 / 100; else if ( 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编写一个简单计算器程序,输入格式为:
5、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
6、 %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=
7、%.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; else printf(nError! chu shu wei 0.n); break; case %: if ( data2 != 0 ) jieguo = data1 % data2; printf(n%d%c%d=%.0fn, data1, op, data2, jieguo)
8、; break; else printf(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 (
9、 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:
10、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;
11、 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) in
12、t 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 ); do printf(%d, num%10); num = num/10;
13、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 m
14、day13 = 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”的信息提示。注:
15、根据“海伦秦九韶”公式,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
16、+ bb + cc ) / 2; tt = pp * ( pp - aa ) * ( pp - bb ) * ( pp - cc ); ss = sqrt( tt ); printf(narea=%.2lfn, ss); else printf(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 = n
17、n; 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); do sum = sum + num % 10; num = num / 10; while (num); printf(sum=%dn, sum); return 0
18、;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
19、.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 = %.2
20、fn, 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
21、 ( i = 0, j = len - 1; i = j ) printf(n%s shi hui wen., aa); else printf(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
22、 integers.n); for ( i=0; i10; i+ ) scanf(%d, &aai); for ( i=0; i 0 ) sum1 = sum1 + aai; else sum2 = 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是从键盘输入的内容。#inclu
23、de 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
24、所示,图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分
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1