C语言系统全部答案- 副本

更新时间:2024-06-28 16:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类一

1. 编写一程序P1-111.C实现以下功能

x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前给出提示Please input x:),然后计算并在屏幕上输出函数值。注意,图1中的括号不是<>而是(),编程可用素材:printf(\ input x: \。

┌ -5x+27 (x<0)

F(x)= ├ 7909 (x=0)

└ 2x-1 (x>0)

程序的运行效果应类似地如图1所示,图1中的3是从键盘输入的内容。

#include < stdio.h > int main(void) {

int x; double y;

printf(\scanf(\

if (x > 0) {

y = (double) 2 * x - 1; } else {

if (x == 0) {

y = (double) 7909; } else {

y = (double) - 5 * x + 27; } }

printf(\return 0; }

2. P1-113已知某银行整存整取存款不同期限的年息利率分别为:3.15%期限一年,3.63%期限二年, 4.02%期限三年,4.69%期限五年,5.36%期限八年。从键盘上输入存钱的本金(以元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可用素材:

printf(\ input benjin,cunqi:\、printf(\ = ... yuan\。

程序的运行效果应类似地如图1所示,图1中的10000,8是从键盘输入的内容。

#include < stdio.h > int main(void) {

int benjin, cunqi; double lixi; double money;

printf(\ scanf(\

money = benjin;

if ( cunqi == 1 ) {

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 ) {

lixi = money * cunqi * 4.69 / 100; }

else {

if ( cunqi == 8 ) {

lixi = money * cunqi *5.36 / 100;

}

} } } } }

printf(\return 0;

3. P1-114编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。

程序的运行效果应类似地如图1、图2、图3、图4所示,图1中的3000 + 2000、图2中的3000 % 2000、图3中的3000 % 0和图4中的3000 / 0是从键盘输入的内容。

#include < stdio.h > int main( void ) {

int data1, data2; double jieguo;

char op;

printf(\ scanf(\

switch ( op ) {

case '+':

jieguo = ( double ) data1 + data2;

printf(\ break; case '-':

jieguo = ( double ) data1 - data2;

printf(\ break; case '*':

jieguo = ( double ) data1 * data2;

printf(\ break; case '/':

if ( data2 != 0 ) {

jieguo = ( double ) data1 / data2;

printf(\ break; } else {

printf(\ break; }

case '%':

if ( data2 != 0 ) {

jieguo = data1 % data2;

printf(\ break; } else {

printf(\ break; } default:

printf(\ }

return 0; }

4.输入月份,打印2003年该月有几天。当输入的月份超范围时,应显示?Invalid month input?。

程序的运行效果应类似地如图1和图2所示,图1中的4和图2中的13是从键盘输入的内容。

#include < stdio.h > int main( void ) {

int month; int day;

printf(\ scanf(\

switch ( month ) {

case 1: case 3: case 5: case 7: case 8: case 10: case 12:

day = 31;

printf(\ break; case 4: case 6: case 9: case 11:

day = 30;

printf(\ break; case 2:

day = 28;

printf(\

break; default:

printf(\ }

return 0; }

5. 已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元):

profit≤1000 没有提成; 1000<profit≤2000 提成10%; 2000<profit≤5000 提成15%; 5000<profit≤10000 提成20%; 10000<profit 提成25%。 请根据输入的利润计算员工的薪水。

程序的运行效果应类似地如图1所示,图1中的2000是从键盘输入的内容。

#include < stdio.h > int main( void ) { int profit;

double salary = 500;

printf(\ scanf(\

if ( profit <= 1000 ) {

salary = 500; }

if ( profit > 1000 && profit <= 2000 ) {

salary = salary + profit * 0.1; }

if ( profit > 2000 && profit <= 5000 ) {

salary = salary + profit * 0.15; }

if ( profit > 5000 && profit <= 10000 ) {

salary = salary + profit * 0.2; }

if ( profit > 10000 )

{

salary = salary + profit * 0.25; }

printf(\ return 0; }

6.编写一程序P7-708.C实现以下功能

输入一个三位正整数,然后逆序输出。如输入123,则输出321。

程序的运行效果应类似地如图1所示,图1中的752是从键盘输入的内容。

#include #include /*int main(void) {

int num, i; char str[4];

printf(\ scanf(\ itoa(num, str, 10);

printf(\ for(i = 2; i >= 0; i--) {

printf(\ }

printf(\ return 0; }*/

int main(void) {

int num;

printf(\ scanf(\

printf(\ do {

printf(\ num = num/10; } while (num); printf(\ return 0;

}

7. 编写一程序P7-713.C实现以下功能

用scanf输入某年某月某日,判断这一天是这一年的第几天?以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。注:判断年份是否为闰年的方法——为400的倍数为闰年,如2000年;若非100的倍数,而是4的倍数,为闰年,如1996年。

程序的运行效果应类似地如图1所示,图1中的2000-3-1是从键盘输入的内容。

#include int main(void) {

int ye, mo, da, sum = 0, i;

int mday[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

printf(\ scanf(\ for (i = 1; i < mo; i++) {

sum = sum + mday[i]; }

if ((ye % 400 == 0 || ye % 100 != 0 && ye % 4 == 0) && mo > 2) {

sum++; }

sum = sum + da;

printf(\ return 0; } 8. P7-723.C输入三角形的三边长a、b、c(边长可以是小数),求三角形面积area,并输出。如果输入的三边构不成三角形,应给出?data error?的信息提示。注:根据?海伦-秦九韶?公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2。 程序的运行效果应类似地如图1和图2所示,图1中的3,4,5和图2中的3,4,8是从键盘输入的内容。

#include < stdio.h > #include < math.h > int main( void ) {

double aa, bb, cc, pp, ss, tt;

printf(\ scanf(\

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(\ } else {

printf(\ }

return 0; }

9. 7-731输出n行星号,每行5个*星号。

程序的运行效果应类似地如图1所示,图1中的4是从键盘输入的内容。

#include < stdio.h > int main( void ) {

int nn, i;

printf(\ scanf(\

for ( i = 1; i <= nn; i++ )

{

printf(\ }

return 0; }

10.编写一程序P7-736.C实现以下功能

从键盘上输入一个四位整数,计算各个位上的数字之和。

程序的运行效果应类似地如图1所示,图1中的1234是从键盘输入的内容。

#include int main(void) {

int num, sum = 0;

printf(\ scanf(\

do {

sum = sum + num % 10; num = num / 10; } while (num);

printf(\ return 0; }

11. 从键盘输入3个整数,输出绝对值最大的数。

程序的运行效果应类似地如图1所示,图1中的1,2,3是从键盘输入的内容。

#include int ab(int x); int main(void) {

int num[3], i, j;

printf(\

scanf(\ j = 0;

for (i = 1; i < 3; i++) {

if (ab(num[j]) < ab(num[i])) {

j = i; } }

printf(\ return 0; }

int ab(int x) {

if (x >= 0) {

return x; }

return - x; }

12. 设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输出(输出时以万为单位,应考虑有小数)。

程序的运行效果应类似地如图1所示,图1中的50是从键盘输入的内容。

#include < stdio.h > int main(void) {

float chanzhi = 5000, xx; int year = 2006;

printf(\ scanf(\

while ( chanzhi < 10000 ) {

chanzhi = chanzhi * ( 1 + xx / 100 ); year++; }

printf(\ return 0; }

13.编写一程序P2-221.C实现以下功能

从键盘读入一个字符串(最多127个字符),检查该字符串是否是回文。所谓回文即正向与反向的拼写都一样,例如:adgda。

程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfghjhgfdsaa是从键盘输入的内容。

#include < stdio.h > #include < string.h > int main( void ) {

int i, j, len; char aa[128];

printf(\ gets(aa);

len = strlen(aa);

for ( i = 0, j = len - 1; i < j; i++, j--) {

if ( aa[i] != aa[j] ) {

break; } }

if ( i >= j ) {

printf(\ } else {

printf(\ }

return 0; }

14. 用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及10个数的和。

程序的运行效果应类似地如图1所示,图1中的4 6 20 -45 35 56 -23 -4 9 70是从键盘输入的内容。

#include < stdio.h > int main( void ) {

int aa[10], i;

float sum1 = 0, sum2 = 0, sum3 = 0;

printf(\

for ( i=0; i<10; i++ ) {

scanf(\ }

for ( i=0; i<10; i++ ) {

if ( aa[i] > 0 ) {

sum1 = sum1 + aa[i]; } else {

sum2 = sum2 + aa[i]; }

sum3 = sum1 + sum2; }

printf(\ return 0; }

15. 7-732编写一程序P7-732.C实现以下功能,输入3行3列的矩阵,输出所有元素的累加和。 程序的运行效果应类似地如图1所示,图1中的 1 2 3 4 5 6 7 8 9

是从键盘输入的内容。

#include < stdio.h > int main( void ) {

int i, j, aa[3][3], sum = 0;

for ( i = 0; i < 3; i++ ) {

for ( j = 0; j < 3; j++ ) {

scanf(\ } }

for ( i = 0; i < 3; i++ ) {

for ( j = 0; j < 3; j++ ) {

sum = sum + aa[i][j]; } }

printf(\ return 0; }

16. 编写一程序P7-743.C实现以下功能

从键盘输入一串可带空格的字符串,按逆序输出该字符串。注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。

程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘输入的内容。

#include < stdio.h > #include < string.h > int main( void ) {

char aa[100], bb[100]; int i, j, len;

printf(\ gets(aa);

len = strlen(aa); bb[len]='\\0';

for ( i = 0, j = len - 1; i < len; i++, j-- ) {

bb[j] = aa[i]; }

printf(\ puts(bb); return 0; }

17. 从键盘输入一个一百分制成绩,如果不在0~100范围内,则要求重新输入数据,直到输入的数据在0~100范围内。将输入的数据转换成等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’,要求使用switch case/default语句,结果赋值给变量grade,并将变量grade的值输出到屏幕上。

注意:变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。编程可用素材:printf(\ input the score(0-100): \、printf(\。

程序的运行效果应类似地如图1所示,图1中的103和55是从键盘输入的内容。

#include < stdio.h > int main( void ) {

float score; char grade;

printf(\ scanf(\

while ( score > 100 || score < 0 ) {

printf(\ scanf(\ }

switch ( ( int ) (score / 10 )) {

case 10: case 9:

grade = 'A'; break;

本文来源:https://www.bwwdw.com/article/ikg3.html

Top