算法竞赛入门经典(第2版)4.4.1小问题集锦

首先,来编写一个函数solve,给定浮点数a,b,c,d,e,f,求解方程组ax+by=c,dx+ey=f。

任务1:使用assert宏,让解不唯一时异常退出。

#include<stdio.h>
#include<assert.h>
tpdedef double db;
void solve(db a,db b,db c,db d,db e,db f,db &x,db &y)
{
	assert(a*e!=d*b);
	x=(c*e-b*f)/(a*e-b*d);  
    y=(c*d-a*f)/(b*d-a*e);  
}
int main()
{
	db a,b,c,d,e,f,x,y;
	scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f);
	ope(a,b,c,d,e,f,x,y);
	printf("%lf %lf\n",x,y);
	return 0;
}
/*
	ax+by=c
	dx+ey=f
	当a/d≠b/e 时,该方程组有一组解。
	当a/d=b/e=c/f 时,该方程组有无数组解。
	当a/d=b/e≠c/f 时,该方程组无解。
*/
任务2:解不唯一时仍正常返回,但调用者有办法知道解的数量(无解、唯一解、无穷多解)。
#include<stdio.h>
#include<assert.h>
tpdedef double db;
int solve(db a,db b,db c,db d,db e,db f,db &x,db &y)
{
	if(a*e==d*b) 
	{
		if(a*f!=c*d)
			return 0;
		else
			return -1;
	}
	if((a*e!=d*b)
		return 1;
}
int main()
{
	db a,b,c,d,e,f,x,y;
	int flag;
	scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f);
	flag=solve(a,b,c,d,e,f,x,y);
	if(flag)
	{
		if(flag==-1)
			printf("Countless answers.\n");
		else
			printf("No answer.\n");
	}
	else
		printf("Only one answer.\n");
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4.4.1c语言文本格式化问题是指在C语言编程中如何对文本进行格式化的一类问题。文本格式化就是对输出的文本进行特定的排列、对齐、加点、换行等操作,以使得文本看起来更加清晰、规范,便于阅读和理解。 C语言提供了一些格式化输出的函数,例如printf()和sprintf()函数,可以实现对文本的格式化操作。 printf()函数可以将格式化的文本输出到标准输出设备(通常是控制台),而sprintf()函数则可以将格式化的文本输出到指定的字符串中,用于后续的处理或存储。 在C语言中,可以使用转义字符来实现一些特殊的格式化操作。例如,使用\n可以实现换行操作,使用\t可以实现制表符操作,使用\"可以输出双引号等。此外,还可以使用%d、%f等格式控制符来指定输出格式,例如%d表示输出整数,%f表示输出浮点数等。 除了基本的格式化操作外,C语言还提供了一些进一步的格式化选项,例如可以指定输出的域宽(即输出的字符个数),可以指定输出的精度(例如浮点数的小数位数),可以设置数值的进制(例如十进制、十六进制等),还可以设置对齐方式等。 总之,4.4.1c语言文本格式化问题是指在C语言编程中如何对文本进行格式化的问。通过使用printf()和sprintf()函数以及转义字符和格式控制符,可以实现对文本的排列、对齐、加点、换行等格式化操作,使得输出的文本更加清晰、规范。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值