C语言程序设计《程序设计基础实验》实验2 张顺利

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double jishu(double x,int n);
double sum(double a,int n);
void ouuput(int n);
int big(int m,int n);
int small(int m,int n);
void fun(int n);

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main1(int argc, char *argv[]) {
	double x;
	int n;
	printf("请输入x的值:\n");
	scanf("%lf",&x);
	printf("请输入项数:\n"); 
	scanf("%d",&n);
	printf("sum=%llf",jishu(x,n));
	return 0;
}
double jishu(double x,int n)
{
	int i,j,m=1;
	double sum;
	for(i=0;i<n;i++)
	{
		for(j=i;j>0;j--)
		{
			m*=j;
		}
		sum+=pow(x,i)/m;
	}
	return(sum);
}
int main2()
{
	float a;
	int n;
	printf("请输入a:");
	scanf("%f",&a);
	printf("请输入项数:");
	scanf("%d",&n); 
	printf("sum=%lf",sum(a,n));
	return 0;
	
}
double sum(double a,int n)
{
	double s=0,eve=1;
	int i,j;
	for(i=1;i<=n;i++)
	{
		eve*=a;
		s+=eve;
	}
	return (s);
}
int main3()
{
	int n;
	printf("你想输出斐波那契数列的多少项:");
	scanf("%d",&n);
	output(n);
	return 0;
}
void output(int n)
{
	int a=1,b=1,i,count;
	int c;
	if(n>=3)
	{
		printf(" %5d %5d",a,b);
		count=2;
		//输入前两项 
		for(i=3;i<=n;i++)
		{
			c=a+b;
			a=b;
			b=c;
			printf(" %5d",c);
			count++;
			if(count%5==0)
			 printf("\n");
		}
	}
}
int main4()
{
	int m,n;
	printf("请输入m和n:\n");
	scanf("%d%d",&m,&n);
	big(m,n);
	small(m,n);
	return 0;
}
int big(int m,int n)//求最大公约数 
{
	int i,j,biggest;
	j=(m>n)?n:m;//把m,n中较小的数复制给j
	for(i=2;i<=m;i++)
	{
		if(m%i==0&&n%i==0)
		{
			biggest=i;
		}
		
	}
	printf("最大公约数为%d",biggest);
}
int small(int m,int n)//求最小公倍数 
{
	int i,j,smallest;
	j=(m>n)?m:n;
	for(i=m+1;;i++)
	{
		if(i%m==0&&i%n==0)
		{
			smallest=i;
			break;
		}
	}
	printf("\n最小公倍数为%d",smallest);
}
int main5()
{
	int year;
	scanf("%d",&year);
	printf("%d",isLeapYear(year));
}
int isLeapYear(int year)
{
	if(year%100!=0&&year%4==0||year%400==0)
	 return(1);
	 else return(0);
}
int main()
{
	int n;
	scanf("%d",&n);
	/*while(n>100000000)
	{
		printf("ERROR!TOO BIG!");
		scanf("%d",&n);
	}*/
	fun(n);
	return 0;
}
void fun(int n)
{
	if(n<2)
	 printf("%d",n);
	else
	{
		fun(n/2);
		printf("%d",n%2);
	}
	
	
	 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RGB图像压缩可以采用游程编码(Run Length Encoding,RLE)算法。游程编码是一种无损压缩方法,可以将连续重复的数据序列转换为一组游程,从而减少数据的存储空间。 以下是基于游程编码对RGB进行压缩的C语言实现: ```c #include <stdio.h> #include <stdlib.h> #define MAX_RLE_LENGTH 255 // RLE压缩函数 unsigned char* RLECompress(unsigned char* data, int size, int* outSize) { int count = 1; int i, j; unsigned char* compressedData = (unsigned char*)malloc(MAX_RLE_LENGTH * 3 * sizeof(unsigned char)); if (compressedData == NULL) { printf("Memory allocation error!\n"); exit(1); } j = 0; for (i = 1; i < size; i++) { if (data[i] == data[i - 1] && count < MAX_RLE_LENGTH) { count++; } else { compressedData[j++] = data[i - 1]; compressedData[j++] = count; count = 1; } } compressedData[j++] = data[size - 1]; compressedData[j++] = count; *outSize = j; return compressedData; } int main() { int size = 9; unsigned char data[] = {255, 0, 0, 255, 255, 0, 255, 255, 255}; int compressedSize; unsigned char* compressedData = RLECompress(data, size, &compressedSize); printf("Original data: "); for (int i = 0; i < size; i++) { printf("%d ", data[i]); } printf("\n"); printf("Compressed data: "); for (int i = 0; i < compressedSize; i++) { printf("%d ", compressedData[i]); } printf("\n"); free(compressedData); return 0; } ``` 在上面的代码中,我们通过RLECompress函数对RGB数据进行压缩。该函数接收一个包含RGB数据的unsigned char数组,以及数组长度和一个输出参数outSize,它返回一个压缩后的unsigned char数组。该函数首先将连续重复的数据序列转换为一组游程,然后将压缩后的数据存储在一个新的数组中,并返回该数组。 在这个例子中,我们对一个包含RGB数据的unsigned char数组进行压缩,并输出原始数据和压缩后的数据。注意,这里的数据是单通道的,如果要对RGB图像进行压缩,需要将RGB数据分别进行压缩,或者采用其他的压缩方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值