《C语言程序设计-现代方法》第一章-第二章 -学习与总结 - - - 编程题 - 练习

**菜鸟个人学习用途,欢迎和谐交流;如有错误,请指正,感激不尽。 **

编程题

2.1 编写一个程序,使用printf在屏幕上显示下面的图形:(一个✔)


//方法1 
int main(void)
{
	printf("        *\n");
	printf("       *\n");
	printf("      *\n");
	printf(" *   *\n");
	printf("  * *\n");
	printf("   *\n");
	
	return 0;
}

//方法2  
int main(void)
{
	printf("\n\
	                *\n\
	               *\n\
	              *\n\
	         *   *\n\
	          * *\n\
	           *\n"); 
	return 0;     
}

//方法3	
int main(void)
{
	int i, j; 
	int var = 8;  // 列  
	
	for(i = 0; i < 6; i++, var--)   //i为行 var为列,每打印一行则i自加1,var自减1; 
	{
		for(j = 0; j < var; j++)
		{	
			if((j == 1 && var == 5) || (j == 2 && var == 4))
			{
				printf("*");
				continue;	//结束本次循环,已经打印了"*" 则不再打印" " 
			}
			printf(" ");
		}
		printf("*\n");
	}
	return 0; 
}

**2.2 编写一个计算球体体积的程序,其中球体半径为10 m,参考公式v= 4/3Πr²注意,分数4/3应写为4.0f/3.0f。(如果分数写成4/3会产生什么结果?)提示:C语言没有指数运算符,所以需要对自乘两次来计算
**


#include <stdio.h>
#define PI  3.14159

int main (void)
{
	float r = 10 , val;
	
	val = 4.0f/3.0f * PI * r * r * r;
	printf("球体体积为: %.2f \n", val );
	
	return 0 ;
}


2.3 修改上题中的程序,使用户可以自行录入球体的半径。


//方法1
#include <stdio.h>
#define PI  3.14159

int main (void)
{
	float r, val;
	
	printf("请输入球体半径:");
	scanf ("%f", &r );
	
	val = 4.0f/3.0f * PI * r * r * r;
	printf("球体体积为: %.2f \n", val );
	
	return 0 ;
}
//方法2
#include <stdio.h>
#define PI  3.14159
#define VAL(r) 4.0f/3.0f * PI * r * r * r
int main (void)
{
	float r;
	
	printf("请输入球体半径:");
	scanf ("%f", &r );

	printf("球体体积为: %.2f \n", VAL(r));
	
	return 0 ;
}

2.4编写一个程序,要求用户输入一个美金数量,然后显示出增加5%税率后的相应金额


#include <stdio.h>
#define TAX_RATE 1.05f

int main(void)
{
	float count;
	
	printf("enter an amount :");
	scanf("%f", &count);
	printf("With tax added : $%.2f\n", TAX_RATE * count );
	
	return 0;
}

2.5编程要求用户输入x的值,然后显示如下多项式的值:
3x5+2x4-5x3-x2+7x-6


#include <stdio.h>
#define POLY01(x)	(3*x*x*x*x*x + 2*x*x*x*x - 5*x*x*x - x*x + 7*x - 6)
	

int main(void)
{
	float x;
	
	printf("请输入多项式X的值:");
	scanf("%f", &x);	
	
	printf("多项式的值为:%.2f\n", POLY01(x));

	return 0; 
}

2.6修改上题,用如下公式对多项式求值:
(((3x+2)x-5)x-1)x + 7)x -6


#include <stdio.h>
#define POLY01(x)	(3*x*x*x*x*x + 2*x*x*x*x - 5*x*x*x - x*x + 7*x - 6)
#define POLY02(x)	((((3*x + 2)*x - 5)*x - 1)*x + 7)*x -6		

int main(void)
{
	float x;
	
	printf("请输入多项式X的值:");
	scanf("%f", &x);	
	
	printf("多项式的值为:%.2f\n", POLY01(x));
	
	printf("多项式的值为:%.2f\n", POLY02(x));
	return 0; 
}

2.7编写一个程序,要求用户输入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1
美元来付款:


#include <stdio.h>
#define BILL_20(x)	(x / 20)	
#define BILL_10(x)	(x % 20 / 10)	
#define BILL_05(x)	(x % 20 % 10 / 5) 
#define BILL_01(x)	(x % 20 % 10 % 5)

int main(void)
{
	int x;
	printf("Enter a dollar amount : ");
	scanf("%d",&x);
	
	printf("$20 bills: %d\n", BILL_20(x) ); 
	printf("$10 bills: %d\n", BILL_10(x) ); 
	printf("$05 bills: %d\n", BILL_05(x) ); 
	printf("$01 bills: %d\n", BILL_01(x) ); 
	
	return 0;
}

2.8编程计算第一、第二、第三个月还贷后剩余的贷款金额


#include <stdio.h>
//月利率的计算方法:年利率除以12,别忘了百分号。乘以0.01 或者除以100 
#define MONTH_RATE(rate)	(rate * 0.01 / 12)
//每个月的贷款余额减去还款金额后,还需加上贷款余额与月利率的乘积 
#define AMOUNT		(loan - monthly_payment)
#define AMOUNT01	(AMOUNT + loan * MONTH_RATE(rate) )
#define AMOUNT02	(AMOUNT01 - monthly_payment + AMOUNT01 * MONTH_RATE(rate))
#define AMOUNT03	(AMOUNT02 - monthly_payment + AMOUNT02 * MONTH_RATE(rate) )

int main(void)
{
	float loan , rate , monthly_payment;
	
	printf("Enter amount of loan:");
	scanf("%f", &loan);
	printf("Enter interest rate:");
	scanf("%f", &rate);
	printf("Enter monthly payment:");
	scanf("%f", &monthly_payment);
	
	printf("Balance remaining after first payment:$%.2f \n", AMOUNT01 );
	printf("Balance remaining after second payment:$%.2f \n", AMOUNT02 );
	printf("Balance remaining after third payment:$%.2f \n", AMOUNT03 );
	
	return 0; 
}

持续回顾与总结:

2023.01.21
1、/**/注释 不可嵌套注释 。 可使用 #if 0 … … #endif 注释一段代码;
2、宏定义中表达式一定要加上括号,以防当使用宏定义时,外部的表达式和宏定义里的表达式结合成不是程序所预期的表达式;
3、在代码编写过程中要书写必要的注释,合理的缩减,形成良好的代码风格;

思维导图:
2023.01.21

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值