C语言经典编程训练(算法入门)

C语言经典编程训练(算法入门),第1张

1.任意次方后的最后三位

编程求一个整数任意次方后的最后三位数,即求x^y的最后三位数,x和y的值由键盘输入。

#include
int main(){
	int x,y,sum;
	printf("请输入两个数,x和y(x^y):\n");
	scanf("%d%d",&x,&y);
	sum=x;//将sum初始化为x的值 
	if(y==0)
		sum=1;
	else if(y==1)
		sum=x;
	for(int i=2;i<=y;i++)
		sum*=x;//例如5*5*5,只用循环两次,因为sum=5 
	int a,b,c;
	a=sum%10;//最后一位 
	b=sum/10%10;//倒数第二位 
	c=sum/100%10;//倒数第三位 
	printf("%d^%d的最后三位是:%d%d%d",x,y,c,b,a);
}


or换一种方法

#include
int main(){
	int i,x,y,z=1;
	printf("请输入两个数,x和y(x^y):\n");
	scanf("%d %d",&x,&y);
	for(i=1;i<=y;i++)
	{
		z=z*x%1000;
	}
	if(z>=100)
	{
		printf("%d^%d的最后三位是:%d",x,y,z);
	}
	else if(z>=10)
	{
		printf("%d^%d的最后三位是:0%d",x,y,z);
	}
	else if(z>=1)
	{
		printf("%d^%d的最后三位是:00%d",x,y,z);
	}
}


2.计算某日是该年的第几天

编写一个计算天数的程序,用户从键盘中输入年月日,在屏幕中输出此日期是该年的第几天。

#include
int main(){
	int year,month,day,totalday=0;
	printf("请输入年月日,用空格隔开\n");
	scanf("%d %d %d",&year,&month,&day);
	for(int i=0;i<month;i++){
		switch(i){
		case 1:totalday+=31;break;
		case 2:
			if((year%4==0&&year%100!=0)||(year%400==0)){
				totalday+=29;break;
			}
			else{
				totalday+=28;break;
			}
		case 3:totalday+=31;break;
		case 4:totalday+=30;break;
		case 5:totalday+=31;break;
		case 6:totalday+=30;break;
		case 7:totalday+=31;break;
		case 8:totalday+=31;break;
		case 9:totalday+=30;break;
		case 10:totalday+=31;break;
		case 11:totalday+=30;break;
		}
	}
	totalday+=day;
	printf("%d-%d-%d是该年的第%d天",year,month,day,totalday);
}


or 换一种方法,用数组实现

#include
//定义一个判断是否闰年的函数 
int leap(int year){
		if(year%4==0&&year%100!=0||year%400==0)
			return 1;
		else
			return 0;
	}
//定义一个计算输入的日期为该年的第几天的函数
int number(int year,int month,int day){
	int sum=0;
	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	//存放平年每月的天数
	int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	//存放闰年每月的天数
	
	if(leap(year)==1){
		for(int i=0;i<month-1;i++){
			//小于month-1是因为当月的天数还没过完,不用加进去
			sum+=b[i]; 
		} 
	}
	else{
		for(int i=0;i<month-1;i++){
			sum+=a[i];
		}
	}
	sum+=day;
	return sum;
} 
	int main(){
	int year,month,day,n;
	printf("请输入年月日:\n");
	scanf("%d %d %d",&year,&month,&day);
	n=number(year,month,day);
	printf("%d-%d-%d是第%d天",year,month,day,n);
}


3.婚礼上的谎言

三对情侣参加婚礼,3个新郎为A、B、C,3个新娘为X、Y、Z,有人想知道究竟谁与谁结婚,于是就问新人中的三位,得到如下结果:A说他将与X结婚;X说她的未婚夫为C;C说他将和Z结婚。

这人事后知道他们在开玩笑,说的全是假话,那么究竟谁与谁结婚呢?

#include
int main(){
	int a,b,c;
	//用穷举法 
	for(a=1;a<=3;a++){
		for(b=1;b<=3;b++){
			for(c=1;c<=3;c++){
				if(a!=1&&c!=1&&c!=3&&a!=b&&a!=c&&b!=c){
					printf("%c 将嫁给 A\n",'X'+a-1);
					//假设a有三个值1、2、3,字符X加上数值再减一就是那个人 
					printf("%c 将嫁给 B\n",'X'+b-1);
					printf("%c 将嫁给 C\n",'X'+c-1);
				}
			}
		}
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/662693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存