C-暴力(稍简单)

本文介绍了一个解决百钱买百鸡问题的C语言程序。该问题要求使用n文钱购买n只鸡,包括公鸡、母鸡和小鸡,并且给出了每种鸡的价格。程序通过穷举法找到所有可能的购买组合。

百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用 100 文钱买 100 只鸡,公鸡、母鸡、小鸡各买多少只?

本程序要求解的问题是:给定一个正整数 n,用 n文钱买 n只鸡,问公鸡、母鸡、小鸡各买多少只?

输入格式

输入一个正整数 n。

输出格式

如果有解,依次输出公鸡、母鸡、小鸡的个数(用正整数表示)。

如果无解,输出"No Answer."

数据范围

1≤n≤200。

#include<stdio.h>
int main(){
	int x,y,z,n; 
	int sum=0;
	scanf("%d",&n);
	 for(x=0;x<=n;x++);
	  for(y=0;y<=n;y++);
	   for(z=0;z<=n;z+=3);
	  {
	  	if (x*5+y*3+z/3==n&&x+y+z==n){
	  		printf("%d %d %d\n",x,y,z);
	  		sum++;
		  }
	  }
	if (sum==0) {
    printf("NO ANSWER \n");
	}
    return 0;
} 

在C语言中,防止暴力输入可以从多个方面进行处理,例如防止输入非预期的数据类型、限制输入次数等。 ### 防止输入非预期的数据类型 可以通过检查`scanf`的返回值来确保输入的数据类型符合预期。如引用[2]中的代码,使用`while(scanf("%ld", &n) == 1)`来判断是否成功读取到一个`long int`类型的数据,如果没有成功读取,则可以进行相应的处理,避免程序因输入非预期数据而出现异常: ```c #include<stdio.h> int main(void) { long int n; int line=0,i,j; printf("输入一个数据\n"); while(scanf("%ld", &n) == 1) { if(n<=1) { printf("没有满足条件的数据!\n"); return (1); } for(i=2;i<=n;i++) { for(j=2;j<i;j++) if(i/j*j==i) break; if(j==i&&i%10!=9) { printf("%d",i); line++; if(line==10) { printf("\n \n"); line=0; } printf("\n"); } } } return 0; } ``` ### 限制输入次数 可以设置一个计数器,当用户输入错误次数达到一定数量时,终止程序或者进行其他处理,以下是一个简单示例: ```c #include <stdio.h> #define MAX_ATTEMPTS 3 int main() { int num; int attempts = 0; while (attempts < MAX_ATTEMPTS) { printf("请输入一个整数: "); if (scanf("%d", &num) == 1) { // 输入成功,进行后续处理 printf("你输入的整数是: %d\n", num); break; } else { // 输入错误,清空输入缓冲区 while (getchar() != '\n'); attempts++; printf("输入无效,请输入一个整数。你还有 %d 次尝试机会。\n", MAX_ATTEMPTS - attempts); } } if (attempts == MAX_ATTEMPTS) { printf("尝试次数已达到上限,程序终止。\n"); } return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值