C语言简单程序设计题01

C语言简单程序设计题01,第1张

C语言简单程序设计题01 C语言简单程序设计题01

文章目录
  • C语言简单程序设计题01
    • 1、打印hello Word
    • 2、圆的周长及面积
    • 3、存款利率
    • 4、判断闰年
    • 5、数字翻转
    • 6 、求方程的解
    • 7、求薪水
    • 8、1+2+3+…+100
    • 9、100!
    • 10、2^100
    • 11、计算1+1/2+1/3+…+1/100之和
    • 12、判断闰年
    • 13、韩信点兵
    • 14、最大公约数

1、打印hello Word
#include
void main()
{
	printf("Hello World!n");
}
2、圆的周长及面积

编程并输出半径r=5.3的圆的周长及该圆的面积PI取3.14159。要求必须利用宏常量表示。

#include
#define PI 3.14159
void main()
{
	float r = 5.3;                 
	printf("circum = %fn", 2*PI*r);	
	printf("area = %fn", PI*r*r);	
}

思考:如何改进?求任意圆的面积?

3、存款利率

设银行定期存款的年利率rate为2.25%,已知存款期为n年,存款本金为capital元,试编程计算并输出n年后的本利之和deposit。要求分别使用%lf, %8.2lf格式输出结果。

#include
void main()
{
	int i,n; float rate; double capital,deposit;
	printf("Please enter rate, year, capital:n");
	scanf("%f,%d,%lf", &rate, &n, &capital);
	for(i=1;i<=n;i++)
		capital=capital*(1+rate);
	deposit=capital;
	printf("deposit=%lfn",deposit);
	printf("deposit=%8.2lfn",deposit);
	}
4、判断闰年

编程实现如下功能:从键盘任意输入一个年号,判断它是否是闰年。若是闰年输出“Yes”,否则输出“No”。
提示:使用if-else双分支语句。
已知符合下列条件之一者是闰年:
(1)能被4整除,但不能被100整除;
(2)能被400整除。

#include
void main()
{
	int n;
	printf("Please input n:");
	scanf("%d",&n);
	if((n%4==0 && n%100!=0) || n%400==0)
		printf("Yes!n");
	else
		printf("No!n");
}
5、数字翻转

输入123,由123分离出其百位1、十位2、个位3,然后计算3100+210+1 = 321,并输出321;

#include
void main()
{
	int x=123; int a,b,c;
	a=x/100;
	//b=x/10%10;  
	b=x%100/10;
	c=x%10;
	printf("%dn",c*100+b*10+1);

思考1:从键盘任意输入一个3位整数,编程计算并输出它的逆序数。
思考2:从键盘任意输入一个整数,编程计算并输出它的逆序数。

6 、求方程的解

从键盘上输入ax^2+bx+c=0方程的三个系数a,b,c,编程求出该方程的解。
提示:使用else if多分支。
区分四种情况:

a<>0; 
delta>0; 
delta==0;
delt<0(要求打印输出复数根);
#include 
#include 
void main()
{
   float a,b,c,d;
   printf("Please input a,b,c:");
   scanf("%f,%f,%f",&a,&b,&c);
   d=b*b-4*a*c;
   if(a==0)
	   printf("x=%fn",-b/c);
   else if(d>0)
		{
			printf("x1=%fn", (-b+sqrt(d))/(2*a));
			printf("x2=%fn", (-b-sqrt(d))/(2*a));
		}
		else if(d==0)
	             printf("x1=x2=%fn",(-b)/(a*2));
			 else
			 {
				 printf("x1=%f+%fin", (-b)/(2*a),sqrt(-d)/(2*a));
				 printf("x2=%f-%fin", (-b)/(2*a),sqrt(-d)/(2*a));
7、求薪水

已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元):

profit<=1000			没有提成;
1000 

要求输入某员工的某月的工程利润,输出该员工实领薪水。
版本1:if else版本

#include
void main()
{
    long profit;     
    int grade;    
    float salary=500;
    printf("Input profit:");
    scanf("%ld",&profit);
    if(profit<0)
        printf("Input error!");
    else
    {
        if (profit>0 && profit<=1000)
            salary=salary;
        else if(profit>1000 && profit<=2000)
            salary=salary+(profit-1000)*0.1;
        else if(profit>2000 && profit<=5000)
            salary=salary+1000*0.1+(profit-2000)*0.15;
        else if(profit>5000 && profit<=10000)
            salary=salary+1000*0.1+3000*0.15+(profit-5000)*0.2;
        else
            salary=salary+1000*0.1+3000*0.15+5000*0.2+(profit-10000)*0.25;
        printf("salary=%8.2fn",salary);
    }

}

版本2:switch case 版本

#include
void main()
{
	  long profit;    
	  int grade;    
	  float salary=500;
    printf("Input profit:");
    scanf("%ld",&profit);
	if( profit<0)
		printf("Input error!n");
	else
	{	grade=(profit-1)/1000;
        switch(grade)
        {
            case 0: break;
            case 1: salary=salary+(profit-1000)*0.1; break;
            case 2:
            case 3:
            case 4: salary=salary+1000*0.1+(profit-2000)*0.15;break;
            case 5:
            case 6:
            case 7:
            case 8:
            case 9: salary=salary+1000*0.1+3000*0.15+(profit-5000)*0.2;break;
            default: salary=salary+1000*0.1+3000*0.15+5000*0.2+(profit-10000)*0.25;
        }
        printf("salary=%8.2fn",salary);
8、1+2+3+…+100
#include
void main()
{
	int i;  int sum; sum=0;
	for(i=1;i<=100;i++)
		sum=sum+i;
	printf("sum=%dn",sum);
 }
9、100!
#include
void main()
{
	int i;  float sum;  sum=1;
	for(i=1;i<=100;i++)
	{
		sum=sum*i;
		printf("sum=%fn",sum);
	}
	printf("sum=%fn",sum);
 }
10、2^100
#include
void main()
{
	 int  i; float  sum; sum=1;
	for( i=1;i<=100;i++)
		sum=sum*2;
	printf("sum=%fn“ , sum);
	printf("sum=%en“ , sum);
 }
11、计算1+1/2+1/3+…+1/100之和
#include
void main()
{
	int i;
	float sum;
	sum=0;
	for(i=1;i<=100;i++)
		sum=sum+1.0/i;
	printf("sum=%fn",sum);
12、判断闰年

判断输出1000-2000之间所有年份是否闰年。若是闰年输出“Yes”,否则输出“No”。

#include
void main()
{
	int i;
	for(i=1000;i<=2000;i++)
		if((i%4==0 && i%100!=0) || i%400==0)
			printf("%d is Yes!n",i);
		else
			printf("%d is No!n",i);
}
13、韩信点兵

韩信有一队兵,按从1至5排队报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。请问韩信至少有多少兵。
版本1://for,exit

#include
void main()
{
	int x;
	for(x=1; ;x++)
	{
		if(x%5==1 && x%6==5 && x%7==4 && x%11==10)
		{
			printf("x=%dn",x);
			break;
		}
	}
}

版本2://for,标志变量flag

#include
void main()
{
	int x;int flag=0;
	for(x=1; !flag ;x++)
	{
		if(x%5==1 && x%6==5 && x%7==4 && x%11==10)
		{
			printf("x=%dn",x);
			flag=1;
		}
	}
}

版本3://while

#include
void main()
{
	int x=0;
	while(!(x%5==1 && x%6==5 && x%7==4 && x%11==10))
	{
		x++;
	}
    printf("x=%dn",x);
}

版本4://do while

#include
void main()
{
	int x=0;
	do
	{
		x++;
	}while(!(x%5==1 && x%6==5 && x%7==4 && x%11==10));
    printf("x=%dn",x);
}

思考:总结while 、do while、 for 的异同

14、最大公约数

输入两个正整数,用辗转相除法求它们的最大公约数
版本1://while

#include
main()
{
	int m,n,t,m0,n0;
	printf("m,n:");
	scanf("%d%d",&m,&n);
	m0=m;n0=n;
	while(m%n!=0)
	{
		t=m;
		m=n;
		n=t%n;
	}
	printf("gcd(%d,%d)=%dn",m0,n0,n);
}

版本2://do-while

#include
main()
{
	int m,n,t,m0,n0;
	printf("m,n:");
	scanf("%d%d",&m,&n);
	m0=m;n0=n;
	if(m%n==0)
		printf("gcd(%d,%d)=%dn",m0,n0,n);
	else
	{
		do
		{
			t=m;
			m=n;
			n=t%n;
		}while(m%n!=0);
		printf("gcd(%d,%d)=%dn",m0,n0,n);
	}
}

版本3://for

#include
main()
{
	int m,n,t,m0,n0;
	printf("m,n:");
	scanf("%d%d",&m,&n);
	m0=m;n0=n;
	for(;m%n!=0;)
	{
		t=m;
		m=n;
		n=t%n;
	}
	printf("gcd(%d,%d)=%dn",m0,n0,n);
}

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

原文地址: http://outofmemory.cn/zaji/5502176.html

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

发表评论

登录后才能评论

评论列表(0条)

保存