栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习笔记第六天练习作业

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习笔记第六天练习作业

C语言学习笔记第六天练习作业
  • 1、实现一个函数,判断是否是素数,调用它显示100~1000以内所有的素数
  • 2、输入两个日期(yyyy-mm-dd),计算两个日期间隔多少天
  • 3、实现一个函数,判断一个整数是否是回文数,调用它显示1亿-10亿的所有回文数
  • 4、输入一个整数,显示它的补码
  • 5、计算出100的阶乘

提示:练习4:计算机中数据以补码的方式储存,所以直接用位操作符取出即可

练习5:100!会很大,因此不能使用int 等数据类型储存,即使是long long int 也不够,因此需要用到数组,建议char类型数组

个人代码如下:

#include 
#include 
#include 


//判断是否为素数
int is_prime(int num)
{
	int flag=1;
	for(int i=2;i
		if(num%i==0)
		{
			flag=0;
			break;
		}
	}
	return flag;
}

//返回1-1-1到year-month-day的时间间隔
long int day_pass(int year,int month,int day)
{
	long int count=0;
	if(year>1)
	{
		count+=(year-1)*365;	
	}
	for(int i=1;i
		if(i%400==0 || i%4==0 && i%100!=0)
		{
			count++;
		}
	}
	switch(month-1)
	{
		case 11:count+=30;
		case 10:count+=31;
		case 9:count+=30;
		case 8:count+=31;
		case 7:count+=31;
		case 6:count+=30;
		case 5:count+=31;
		case 4:count+=30;
		case 3:count+=31;
		case 2:count+=28;
		case 1:count+=31;
		default:break;
	}
	for(int i=1;i
		count++;
	}
	count+=day-1;
	return count;
}

//判断是否为回文数
int is_palindrome(long int num)
{
	long int num_1=num,temp=0;
	while(num)
	{
		temp=temp*10+num%10;
		num/=10;
	}
	if(temp==num_1)
	{
		return 1;	
	}else
	{
		return 0;	
	}
}

//显示一个数的补码
void show_complement(int data)
{
	for(int i=0;i<32;i++)
	{
		if(data&(1<<(31-i)))
		{
			printf("1");	
		}else
		{
			printf("0");	
		}
	}
	printf("n");
}

//求n的阶乘
void factorial(char a[],int n)
{
	int cnt=1;
	int add=0;
	for(int i=0;i
		a[i]=0;	
	}
	a[0]=1;
	for(int i=1;i<=n;i++)
	{
		add=0;
		for(int j=0;j
			a[j]=i*a[j]+add;
			add=a[j]/10;
			a[j]=a[j]%10;
		}
		cnt++;
	}
}
int main(int argc,const char* argv[])
{
	printf("=========test01========n");
	for(int i=100;i<1000;i++)
	{
		if(is_prime(i))
		{
			printf("%d ",i);	
		}
	}
	printf("n");

	printf("=========test02========n");
	printf("请输入xxxx-xx-xx:");
	int y1,m1,d1;
	scanf("%d%d%d",&y1,&m1,&d1);
	printf("请输入xxxx-xx-xx:");
	int y2,m2,d2;
	scanf("%d%d%d",&y2,&m2,&d2);
	printf("相差%ld天n",abs(day_pass(y2,m2,d2)-day_pass(y1,m1,d1)));

	printf("=========test03========n");
	int cnt=0;
	for(long int i=100000000;i<1000000000;i++)
	{
		if(is_palindrome(i))
		{
			printf("%ld ",i);
			
		}
	}
	printf("=========test04========n");
	int x;
	printf("请输入x的值用来显示补码:");
	scanf("%d",&x);
	show_complement(x);

	printf("=========test05========n");
	int n;
	printf("输入阶乘的阶数:");
	scanf("%d",&n);
	
	char b[n];
	factorial(b,n);
	int i=n-1;
	for(;i>=0;i--)
	{
		if(b[i]>0)
		{
			break;	
		}
	}
	for(;i>=0;i--)
	{
		printf("%d",b[i]);	
	}
	return 0;
}

最后的阶乘计算有瑕疵,还可以在此基础上继续优化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011925.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号