我的初恋--C语言


/*001.求5个数中的最小值*/

#include <stdio.h>                    //预处理命令

int main()							  //主函数
{
	int a[5] = {0};					 //初始化数组
	int i,min;
	printf("输入数据:\n");
	for(i = 0; i < 5; i++)				//输入数据
		scanf("%d",&a[i]);
	min = a[0];
	for(i = 1; i < 5; i++)				//循环比较
	if(a[i] < min)
	{
		min = a[i];				   //将最小数的存储的位置赋给min
	}
	printf("这5个数字中的最小值是:\n");
	printf("%d",min);
	scanf("%d",&i);					//输入一个整数。。。起到暂停的作用
	return 0;					  //结束程序
}

/*
002.[计算邮寄包裹的运费]假设包裹的运费计算方式为: 
	?包裹的重量在2千克内(含2千克),运费为18元
	?包裹的重量超过2千克但在10千克内(含10千克),超出部分每千克加收运费为3元
	?包裹的重量超过10千克,超出部分每千克加收运费为5元
*/

#include <stdio.h>
void jsyf(float w,float carrage);

int main()
{
	float w = 0;
	float carrage = 0;
	printf("请输入包裹的重量:\n");
	scanf("%f",&w);
	jsyf(w,carrage);
	return 0;
}

void jsyf(float x,float y)
{
	if(x <= 0)
	{
		printf("error!\n");
		return;
	}
	else if(x <= 2)
	{
			y = 18;
			printf("该包裹相应的运费为%.2f元\n",y);
	}
	else if(x <= 10)
	{
			y = 18 + (x - 2) * 3;
			printf("该包裹相应的运费为%.2f元\n",y);
	}
	else 
	{
		y = 18 + (10 - 2) * 3 + (x - 10) * 5;
		printf("该包裹相应的运费为%.2f元\n",y);
	}
	return;
}
/*
003.[计算月总收入]  
假设某地区个人所得税的缴纳方式如下: ?月总收入在1600元以下(含1600元)不需要缴纳个人所得税
?月总收入在1600元以上,那么需要缴税的部分为:月总收入 - 1600,简称“应税收入”,且分级逐级计算: ?应税收入在500元内(含500元)的部分,税率为5%
?应税收入在500元~~2000元内(含2000元)的部分,税率为10%
?应税收入2000元~~5000元内(含5000元)的部分,税率为15%
?应税收入5000元~~10000元内(含10000元)的部分,税率为20%
?应税收入在10000元以上的部分,税率为30%

?若已知某职工的当月的个人应缴所得税,请编写C语言程序求该职工的月总收入。
?例如,若给定应缴所得税为705元,那么程序将输出其月总收入为7000元。
*/

#include <stdio.h>

int main()
{
    float total_salary = 0;  /* 月总收入*/
    float tax_salary = 0;    /* 应税收入*/
    float tax = 0;           /* 所得税 */ 
	printf("某职工的应缴所得税为:\n");
	scanf("%f",&tax);
	if(tax < 0)
	{
		printf("error!\n");
		scanf("%f",&tax);
		return 0;
	}
	else if(tax == 0)
	{
		printf("该职工的月总收入小于1600元\n");
		scanf("%f",&tax);
		return 0;
	}
	else if(tax <= 25)
	{
		tax_salary = tax/0.05;
		total_salary = 1600 + tax_salary;
		printf("该职员的月总收入为%.2f元",total_salary);
		scanf("%f",&tax);
		return 0;
	}
	else if(tax <= 175)
	{
		tax = tax - 25;
		total_salary = 1600 + 500 + tax / 0.10;
		printf("该职员的月总收入为%.2f元",total_salary);
		scanf("%f",&tax);
		return 0;
	}
	else if(tax <= 625)
	{
		tax = tax - 25 - 150;
		total_salary = 1600 + 2000 + tax / 0.15;
		printf("该职员的月总收入为%.2f元",total_salary);
		scanf("%f",&tax);
		return 0;

	}
	else if(tax <= 1625)
	{
		tax = tax - 25 - 150 - 450;
		total_salary = 1600 + 5000 + tax / 0.20;
		printf("该职员的月总收入为%.2f",total_salary);
		scanf("%f",&tax);
		return 0;

	}
	else
	{
		tax = tax - 25 - 150 - 450 - 1000;
		total_salary = 1600 + 10000 + tax / 0.30;
		printf("该职员的月总收入为%.2f",total_salary);
		scanf("%f",&tax);
		return 0;
	}

	return 0;
}
/*
004.某学校对学生的评价标准如下(假设只有语文、数学、英语三门课,分数是100分制的整数): ?三门课的平均分大于等于70分,且至少有一门课大于等于85分,则为“优秀”
?每一门课都大于等于75分,则为“良好”
?三门课的平均分大于等于60分,且至多只有一门课小于60分,则为“及格”
?如果不是“优秀”、“良好”、“及格”之一,则为“不及格”

请编写程序,对于给定的三门课成绩,输出相应的评价等级。
*/

#include <stdio.h>			//包含文件
#define QS 70				
#define BSW 85
#define QSW 75
#define LS 60

int main()					
{
	int i,i_ = 0,j = 0;				
	int a[3] = {0};			
	float average = 0,sum = 0;
	printf("请分别输入某学生三门课的成绩:\n");
	while(1)
	{
		if(i_ < 2)
		{
			for(i = 0; i < 3; i++)
			{
				scanf("%d",&a[i]);
			}
			for(i = 0;i < 3;i++)
			{
				if(a[i] > 0 && a[i] <= 100)
				{
					i_ = i_ + 1;
				}
				else
				{
					printf("error!!!\n请重新输入:\n");
					break;
				}
			}
		}
		else
		{
			break;
		}
	}
	printf("该学生三门课的成绩总评为:\n");
	for(i = 0; i < 3; i++)
		sum = sum + a[i];
	average = sum/3;
	if(average >= QS)
	{
		for(i = 0; i < 3;i++)
		{
			if(a[i] >= BSW)
			{
				printf("优秀\n");
				return 0;
			}
		}
	}
	for(i = 0; i < 3; i++)
	{
		if(a[i] >= QSW && a[i] < BSW)
		{
			if(i == 2)
			{
				printf("良好\n");
				return 0;	
			}
			else
			{
				break;
			}
		}
	}
	if(average >= LS)
	{
		for(i = 0; i < 3; i++)
		{
			if(a[i] < LS)
			{
				j = j + 1;
			}
		}
		if(j < 2)
		{
			printf("及格\n");
			return 0;
		}
		else
		{
			printf("不及格\n");
		}
	}
	else
	{
		printf("不及格\n");
	}

	return 0;
}
/*005.使用while语句编程输出前十个偶数。*/

#include <stdio.h>
void print_even(int x,int y);

int main()
{
	int even = 2;
	int i = 0;
	printf("2");
	print_even(even,i);
	printf("\n");

	return 0;
}

void print_even(int x,int y)
{
	while(y < 9)
	{
		y = y + 1;
		x = x + 2;
		printf(" , %d", x);
	}

	return;
}
/*006.使用while语句编程求前十个偶数之和。*/

#include <stdio.h>
void print_sum(int x,int y );

int main()
{
	int i = 0,j = 2;
	print_sum(i,j);

	return 0;
}

void print_sum(int x,int y)
{
	int sum = 0;
	while(x < 10)
	{
		x = x + 1;
		sum = sum + y;
		y = y + 2;
	}
	printf("2 + 4 + 6 + ... + 20 = %d\n", sum);

	return;
}

/*007.输出Fibonacci数列中数值介于100与10000之间(不含100与10000)的项。项与项之间用空格分隔。*/

#include <stdio.h>
void fib(int x,int y,int z);

int main()
{
	int a = 0;
	int b = 1;
	int c = 0;
	fib(a,b,c);
	printf("\n");

	return 0;
}

void fib(int x,int y,int z)
{
	while(1)
	{		
		z = x + y;
		x = y;
		y = z;
		if(z > 100)
		{
			if(z < 10000)
				printf("%d  ",z);
			else
				break;
		}
	}

	return;
}

/*008.对于任意给定的正整数n,求和:1! + 2! + ... + n!*/
#include <stdio.h>
int fac(int n);
int pd(int a);
int print_sum(int n,int sum);

int main()
{
	int n = 1;	//定义变量并初始化,随便给n赋上一个值,目的是从内容里获取一块空间,不初始化就编译出错
	int sum = 0;
	printf("请输入正整数n的值:\n");
	n = pd(n);
	printf("1! + 2! + ... + %d! = ",n);
	printf("%d", print_sum(n, sum));
	printf("\n");
	
	return 0;
}

int pd(int n)
{
	while(1)
	{
		scanf("%d", &n);
		if(n <= 0)
		{
			printf("error!!!\n");
			printf("请重新输入正整数n的值\n");
		}
		else if(n == 1)
		{
			printf("1! = 1\n");
			return 0;
		}
		else
		{
			break;
		}
	}

	return n;
}

int fac(int n)
{
	int j = n;
	int f;
    if(j > 1)
	{
		f = fac(j-1) * j;
	}
	else
	{
		return(1);
	}
	return f;	
}

int print_sum(int n,int sum)
{
	while(n>0)
	{
		sum = sum + fac(n);
		n -= 1;
	}
	return sum;
}
/*009.对于任意给定的正整数n, 输出其反序。*/

#include <stdio.h>

int main()
{
	unsigned long long n,m;
	printf("请输入正整数n:\n");
	while(1)
	{
		scanf("%llu",&n);
		if(n <= 0)
		{
			printf("error!!!\n");
			printf("请重新输入正整数n的值\n");
		}
		else
		{
			break;
		}
	}
	m = n;
	printf("该正整数的反序是:\n");
	while(1)					
	{
		m = m % 10;
		printf("%llu\n",m);
		n = n / 10;
		m = n;
		if(n == 0)
		{
			break;
		}
		else
		{
			continue;
		}
	}

	return 0;
}

/*
 010.求所有的四位水仙花数。每个水仙花数输出一行,输出格式参考如下: 1634 = 1^4 + 6^4 + 3^4 + 4^4
 ?提示:四位水仙花数共有3个,即应该输出3行。
 */

#include <stdio.h>

int main()
{
	int i1,i2,i3,i4;
	int narcissus;
	printf("所有的四位水仙花数如下:\n");
	for(i1 = 1; i1 < 10; i1++)
	{
		for(i2 = 0;i2 < 10; i2++)
		{
			for(i3 = 0; i3 < 10; i3++)
			{
				for(i4 = 0; i4 < 10; i4++)
				{
					narcissus = i1 * 1000 + i2 * 100 + i3 * 10 + i4;
					if(i1*i1*i1*i1 + i2*i2*i2*i2 + i3*i3*i3*i3 + i4*i4*i4*i4 == narcissus)
					{
						printf("%d = %d^4 + %d^4 + %d^4 + %d^4\n", narcissus,i1,i2,i3,i4);
					}
				}
			}
		}
	}

	return 0;
}
/*
011.大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。
    欧拉随便问:"卖了多少鸡蛋呢?"
    不料一个说:"我们两人自己卖自己的,一共卖了150个鸡蛋,虽然我们卖的鸡蛋有多有少,但刚好得了同样的钱数。
	你猜猜看!"
    欧拉猜不出。
    另一个补充道:"如果我按她那样的价格卖,可以得到32元;如果她按我的价格卖,可以得到24.5元"。
欧拉想了想,说出了正确答案。请问你知道答案是多少吗?请用计算机编程计算输出。
*/ 
#include <stdio.h>
#include <stdlib.h>

int main() {
	double x;		//甲卖了x个 
	double y;		//乙卖了y个
	for(x = 1.0;x<150;x++)
	{
		y = 150 - x; 
		if(32/x*y == 24.5/y*x)
		{
			 printf("x = %f, y = %f",x,y);
		}
	} 
	return 0;
}

/*文件名为PrintDiamond.c
012.输入整数n,打印一个菱形.
	当n = 1时,打印:
			*
	当n = 2时,打印:
			*
           ***
		    *
	依此类推......
	本程序输入n为-1时,结束程序。
*/

#include <stdio.h>

int main()
{
	int i;	//控制行
	int j;	//控制打印空格
	int k;	//控制打印"*"
	int n;	//表示菱形由内到外的层数
	while (1)
	{
		do 
		{
			printf("输入n的值(整数):\n");
			scanf("%d", &n);
		} while (n<-1);
		
		if(n == -1)
			break;
	
		for (i=1;i<=2*n-1;i++)				//控制行,共2n-1行
		{
			if (i<=n)						//打印上部分
			{
				for(j=1;j<=n-i;j++)			//打印空格
					printf(" ");
				for(k=1;k<=2*i-1;k++)		//打印“*”
					printf("*");
			}
			else
			{
				for(j=1;j<=i-n;j++)			//打印空格
					printf(" ");
				for(k=4*n-2*i-1;k>0;k--)	//打印“*”, 其中4n-2i-1 = (2n-1)-2(i-n)
					printf("*");
			}

			printf("\n");					//每打印完一行就进行换行
		}
	}
		
	return 0;
}
/*文件名为PrintSpiral.c
013.要求: 
	在屏幕打印一个N*N的数字方阵,数值1到N^2按照顺时针方向螺旋排列。
	这里假定 1 <= N <= 9。 
	同一行的数值使用字符'\t'分隔。
	不准使用后退字符'\b'。


	例如:
	若N=2,则输出:     
				1	2
			    4   3
*/


#include <stdio.h>
#include <stdlib.h>


int main()
{
	int i,N,p=1,q=1,x=1,y=1,a[10][10]={0};
	//让用户输入一个合法的数字(0~9)
	do
	{
		printf("请输入N(1<=N<=9)的值:");
		scanf("%d",&N);
	}
	while(N<1 || N>9);
	printf("数阵分布如下:\n");
	//往方阵里螺旋填放数字
	for(i=1;i<=(N*N);i++)	//i从1自增到N^2
	{
		a[x][y]=i;		//往方阵里填放数字i
		//x正方向填放数字
		if(x==p&&y!=N-p+1)
		{
			y++;	//焦点往x正方向步进
			if(a[x][y]==0)
				continue;	//跳出本次循环,继续下一次循环
		}
		//y负方向填放数字
		if(y==N-p+1&&x!=N-p+1)
		{
			x++;	//焦点往y负方向步进
			if(a[x][y]==0)
				continue;	//跳出本次循环,继续下一次循环			
		}
		//x负方向填放数字
		if(x==(N-p+1)&&y!=p)
		{
			y--;	//焦点往x负方向步进
			if(a[x][y]==0)
				continue;	//跳出本次循环,继续下一次循环	
		}
		//y正方向填放数字
		if(y==p&&x!=p+1)
		{
			x--;	//焦点往y正方向步进
			if(a[x][y]==0)
				continue;	//跳出本次循环,继续下一次循环	
		}
		y++;
		p++;
	}
	//打印方阵里的所有元素
	for(x=1;x<=N;x++)
	{
		//一行行地打印出来
		for(y=1;y<=N;y++)
		{
			printf("%d\t",a[x][y]);
		}
		//为了美观,恰当地空行
		printf("\n");
		printf("\n");
		printf("\n");
	}
	return 0;
}

/*
014.文件名为IsNarcissus.c
	要求:寻找指定区间的水仙花数。如407 = 4^3 + 0^3 +7^3.407就是一个水仙花数。
*/

#include <stdio.h>
void Narcissus();
int IsNarcissus(int a);

int main()
{
	printf("100~999之间的水仙花数有:\n");
	Narcissus();
	printf("\n");
	return 0;
}

void Narcissus()
{
	//寻找100~999之间的水仙花数
	int i;
	for (i=100;i<=999;i++)
		if (IsNarcissus(i))
			printf("%d ", i);
}

int IsNarcissus(int a)
{
	int tmp;
	int sum = 0;
	tmp = a;
	while (tmp>0)
	{
		sum = sum + (tmp%10) * (tmp%10) * (tmp%10);
		tmp = tmp/10;
	}
	if (sum == a)
		return 1;
	else
		return 0;
}
/*文件名为PrimeFactor.c
015.任何一个合数都可以写成几个质数相乘的形式。如24 = 2 * 2 *2 *3.
对于一个质数,它的质因数可定义为它本身。
要求:编写一个程序实现分解质因数。
*/

#include <stdio.h>
void PrimeFactor(int n);
int isPrime(int a);

int main()
{
	int n;
	printf("Please input a integer for getting prime factor:\n");
	scanf("%d", &n);
	PrimeFactor(n);		//对n分解质因数
	printf("\n");
	return 0;
}
//对参数n分解质因数
void PrimeFactor(int n)
{
	int i;
	if(isPrime(n))
		printf("%d", n);
	else
	{
		for (i=2;i<=n-1;i++)
		{
			if (n%i == 0)
			{
				printf("%d ", i);	//第一个因数一定是质因数
				if (isPrime(n/i))	//判断第二个因数是否是素数
				{
					printf("%d ", n/i);
					break;				//找到全部质因子
				}
				else
				{
					PrimeFactor(n/i);		//递归
					break;
				}
			}
		}
	}
	return;
}
//判断a是否是质数, 是质数返回1, 不是质数返回0
int isPrime(int a)
{
	int i;
	for (i=2;i<=a-1;i++)
		if(a%i == 0)
			return 0;
	return 1;
}

/*
016.判断闰年。
	需求:输入一个年份,判断该年是否是闰年。
*/
#include <stdio.h>
int isLeapYear(int y);

int main()
{
	int year;
	printf("Please input a year:\n");
	scanf("%d", &year);
	if(isLeapYear(year))
		printf("%d is leap year!\n", year);
	else
		printf("%d is not leap year!\n", year);
	return 0;
}
//判断是否是闰年
int isLeapYear(int y)
{
	if((y%4 == 0 && y%100 != 0) || (y%400 == 0))
		return 1;
	else
		return 0;
}
/* 
	017.输入两个数,求这两个数的最大公约数。 
*/ 

#include <stdio.h>
int rgcd(int v1, int v2);

int main()
{
	printf("请输入两个整数:\n");
	int n, m;
	scanf("%d %d", &n, &m);
	//vs2013下不支持scanf(), 而提供了scanf_s()函数的支持。 
	//scanf_s("%d %d", &n, &m);
	printf("%d和%d的最大公约数为%d!\n", n, m, rgcd(n, m));
	return 0;
}

int rgcd(int v1, int v2)
{
	if (v2 != 0)
		return rgcd(v2, v1%v2);
	return v1;
}
/*
018.输入一个整数n,打印各个三角的层数为n的正反三角的图形。 如: 
	输入n的值(整数):
	5
			*********
			 *******
			  *****
			   ***
			    *
			   ***
			  *****
			 *******
			*********
*/

#include <stdio.h>

int main() 
{
	int n;	//n可理解为从图形最上方到图形中间的层数 
	int i;	//控制行 
	int j;	//控制打印空格 
	int k;	//控制打印"*" 
	while(1)
	{
		do   
        {  
            printf("输入n的值(整数):\n");  
            scanf("%d", &n);  
        } while (n<-1);  
          
        if(n == -1)  //输入"-1"退出程序 
            break;  
      
		for(i=0;i<2*n-1;i++)	//共2n-1行 
		{
			//打印一行 
			if(i<n)
			{
				for(j=0;j<i;j++)	//打印空格 
					printf(" ");
				for(k=0;k<2*n-2*i-1;k++)	//打印"*" 
					printf("*");
			}
			else		//打印一行 
			{
				for(j=2*n-i-2;j>0;j--)	//打印空格 
					printf(" ");
				for(k=0;k<2*(i-n+1)+1;k++)	//打印"*" 
				 	printf("*");	
			}
			printf("\n");	//每打印完一行就进行换行 
		} 
	}
	return 0;
}





































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值