day5 作业

1.使用break求3-100中的质数

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int is_prime=1;
	for(int p=3; p<=100; p++){
		for(int i=2; i<=p-1 ; i++){
			if(p%i==0){
				is_prime = 0;
				break;
			}
		}

		if(is_prime){
			printf("%d\n", p);
		}

		is_prime=1;
	} 
	return 0;
}

2.输出3-100以内的完美数,(完美数:因子和(因子不包含自身)=数本身)


ubuntu@ubuntu:~/embedded/day05$ cat 17_output_perfect_digital.c 
#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int sum, isFactor=0;

	printf("3-100内的完美数:\n");

	for(int p=3; p<=100; p++){

		for(int f=1; f<=p-1; f++){

			// printf("%d, %d\n", p, f);

			if(p%f==0){
				sum+=f;
				//	printf("p=%d, f=%d, sum=%d\n",p,f,sum);
			}



		}	

		if(p==sum){
			printf("%d\n", p);
		}
		sum=0;
	} 

	return 0;
}

3-100内的完美数:
6
28

3.打印字母图形

day5 作业_第1张图片

#include 
#include 
#include 

int main(int argc, const char *argv[])
{

	for(int i=0; i<6; i++){
		for(int j=0; j<=i; j++)
		{
			putchar('_');
		}
		for(int k=0; k<=i; k++)
		{
			putchar('F'-k);
		
		}
		putchar(10);
	}

	return 0;
}

4.百钱买百鸡问题,一百元钱去买鸡,公鸡5元,母鸡3元,三只小鸡1元,问买一百只鸡,有多少种买法。

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int method = 0;

	for(int m=0; m<=20; m++ )
	{

		for(int f=0; f<=34; f++)
		{
			
			for(int c=0; c<=100; c+=3)
			{
				if(m*5 + f*3 + c/3 <= 100 && m+f+c==100)
				{
					printf("公鸡%d只,母鸡%d只,小鸡%d只\n",m,f,c);
					method++;
				}
			}
		}
	
	}

	printf("买一百只鸡的方法有%d种\n", method);
	


	return 0;
}

5将data第[4]位清0,保持其他位不变;将data第[7]位置1,保持其他位不变; 将data第[31:28]位清0,保持其他位不变; 将data第[7:4]位置1,保持其他位不变

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int data=0xF0000010;
	int p1=0x1;
	int p4=0xF;
	printf("data=%#x\n", data); 
	//1111 xxxx xxxx xxxx  xxxx xxxx  0xx1 xxxx
	
	//printf("p=%#x\n", p);

	printf("第4位清0,data=%#x\n", data&=~(p1<<4)); //0xF0 00 00 00
	printf("第7位置1,data=%#x\n", data|=p1<<7); //0xF0 00 00 80
	printf("第31:38位清0,data=%#x\n", data&=~(p4<<28)); //0x00 00 00 80
	printf("第7:4位清0,data=%#x\n", data|=p4<<4); //0x00 00 00 f0

	return 0;
}

6.变量交换方法

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int a=8, b=3;
	printf("原始值: a = %d b=%d\n", a, b);

	int temp;

	//变量交换方法1,临时变量
	temp = a;
	a = b;
	b = temp;
	printf("临时变量: a = %d b=%d\n", a, b);
	
	//变量交换方法2,加减法
	a = a + b; // a = 3, b=8, a + b = 11
	b = a - b; // b = a + b - b = 3
	a = a - b; // a = a + b - a = 8
	printf("加减法: a = %d b=%d\n", a, b);
	
	
	//变量交换方法3,乘除法加减法
	a = a * b; // a = 8, b=3, a * b = 24
	b = a / b; // b = a * b / b = 8
	a = a / b; // a = a * b / a = 3
	
	printf("乘除法: a = %d b=%d\n", a, b);
	
	//变量交换方法4,异或
	a = a ^ b; // 
					
	b = a ^ b ; // b = a ^ b ^ b = a = 8
	a = a ^ b; // a = a ^ b ^ a = b =3
	
	printf("异或法: a = %d b=%d\n", a, b);
	
	
	//变量交换方法5, 移位法
	a<<=16; 	// 	 	a = 0x0008 0000 
				// 	 	b = 0x0000 0003
	a|= b ;  // 	  a|b = 0x0008 0003  
	b = a >>16; // a>>16. b = 0x0000 0008
	a = a & 0x0000ffff; //  a = 0x0000 0003 
	
	printf("移位法: a = %d b=%d\n", a, b);


	return 0;
}

你可能感兴趣的:(c语言)