系列一:(选择结构与循环结构)含答案解析 C语言经典编程题 期末复习笔记

清华大学出版社 C语言程序设计教程内容

如果对您有帮助,别忘了关注博主~

包含内容:选择结构,循环结构,数组,函数,结构体,共用体


目录

清华大学出版社 C语言程序设计教程内容

一、选择结构与循环结构

1.输入长方形的长、宽,求其面积。

         2.从键盘输入一个字符,如果是小写字母将其转换成大写字母输出,其他字符原样输出。

3.从键盘上输入三个整数,输出平均值。

4.输入三个整数,输出其中的最大数。

5.有分段函数,请编程实现(假设x为整型数据)

6.编写程序,从键盘输入三个数,计算以这三个数为边长的三角形的面积。

7.输入一学生成绩,输出其所在等级。

8.输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。

9.某个电力公司对其用户的收费规定如下,编写程序,对于一个输入的用电数量,计算用户的缴费额。(if...else...if语句实现)

10.计算某年某月有几天(注意要区分闰年)

11.编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。

12.数据处理。

13.求n的阶乘(n!)。

14.求5!

15.求1+1/2+1/3+1/4+……+1/n

16.求1-1/2+1/3-1/4+……1/n

17.求1-1/3+1/5-1/7+……1/n

18.求X^n。

19.输入一个正整数n,再输入n个数,输出最大值

20.从键盘上输入m,判断m是否为素数。

21.输出九九乘法表。

22.输出100~200之间所有素数。

23.若口袋里放12个球,3个红球,3个白球,6个黑球,从中任取8个,编写程序列出所有可能的取法。

24.已知鸡兔若干只,共有98个头,386只脚,请问鸡兔各多少只?

25.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

26.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

27.编写指定程序,输出下列图形

二、总结


一、选择结构与循环结构


1.输入长方形的长、宽,求其面积。

#include<stdio.h>

int main()
{
	int a,b,s;
	scanf("%d",&a);
	scanf("%d",&b);
	s=a*b; 
	printf("S=%d",s);
	return 0;
 } 


2.从键盘输入一个字符,如果是小写字母将其转换成大写字母输出,其他字符原样输出。

#include <stdio.h>
main()
{
	char ch;
	ch=getchar();
	if(ch>='a'&&ch<='z') 
		ch=ch-32;
	putchar(ch);
	return 0;
}

3.从键盘上输入三个整数,输出平均值。

#include<stdio.h>

int main()
{
	int a,b,c,sum=0;
	scanf("%d",&a);
	scanf("%d",&b);
	scanf("%d",&c);
	sum=a+b+c; 
	printf("%d\n",sum/3);
	return 0;
 } 


4.输入三个整数,输出其中的最大数。

//实现方法一:if 实现
#include <stdio.h>
int main()
{
	int a,b,c,max;
	scanf("%d%d%d",&a,&b,&c);
	max=a;
	if(max<b)max=b;
	if(max<c)max=c;
	printf("max=%d\n",max);
	return 0;
}
//实现方式二:if else if 实现
#include <stdio.h>
main()
{
	int x,y;
	scanf("%d",&x);
	if(x<1)y=x+1;
	else if(x<2)y=x+2;
	else if(x<3)y=x+3;
	else y=y+4;
	printf("x=%d,y=%d\n",x,y);
	return 0;
}
//实现方法三:if-else实现
#include <stdio.h>
main()
{
	int x,y;
	scanf("%d",&x);
	if(x<2)
	{
		if(x<1)y=x+1;
		else y=x+2;	
	}
	else
	{
		if(x<3)y=x+3;
		else y=x+4;	
	}
	printf("x=%d,y=%d\n",x,y);
	return 0;
}

5.有分段函数,请编程实现(假设x为整型数据)

//if-else实现
#include <stdio.h>
main()
{
	int x,y;
	scanf("%d",&x);
	if(x<2)
	{
		if(x<1)y=x+1;
		else y=x+2;	
	}
	else
	{
		if(x<3)y=x+3;
		else y=x+4;	
	}
	printf("x=%d,y=%d\n",x,y);
	return 0;
}
//if else if 实现
#include <stdio.h>
main()
{
	int x,y;
	scanf("%d",&x);
	if(x<1)y=x+1;
	else if(x<2)y=x+2;
	else if(x<3)y=x+3;
	else y=y+4;
	printf("x=%d,y=%d\n",x,y);
	return 0;
}

6.编写程序,从键盘输入三个数,计算以这三个数为边长的三角形的面积。

#include<stdio.h> 
#include<math.h>
main()
{
	float a,b,c,l,s; 
	scanf("%f%f%f",&a,&b,&c);
	if(a+b>c&&a+c>b&&b+c>a)
	{

		l=(a+b+c)/2;
		s=sqrt(l*(l-a)*(l-b)*(l-c));
	}

	printf("%.2f",s);	
}

7.输入一学生成绩,输出其所在等级。

          A:90~100、 B:80~89、C:70~79、

          D:60~69、E:0~59

#include <stdio.h>
main()
{
	int sc;
	scanf("%d",&sc);
	if(sc>=0&&sc<=100)
	{

		switch(sc/10)
		{
			case 10:
			case 9:
				printf("A\n");break;
			case 8:
				printf("B\n");break;
			case 7:
				printf("C\n");break;
			case 6:
				printf("D\n");break;
			default:
				printf("E\n");break;
		}
	}
	else printf("error!\n");
	return 0;
}

8.输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。

#include <stdio.h>
#include <math.h>
int main()
{  
    double salary,rate,tax;
    scanf("%lf",&salary);
    if(salary<=850)rate=0;
    else if(salary<=1350)rate=0.05;
    else if(salary<=2850)rate=0.10;
    else if(salary<=5850)rate=0.15;
    else rate=0.20;
    tax = rate * (salary - 850);
    printf("tax=%.2f\n",tax);
	return 0;
}

9.某个电力公司对其用户的收费规定如下,编写程序,对于一个输入的用电数量,计算用户的缴费额。(if...else...if语句实现)

#include <stdio.h>
#include <math.h>
int main()
{  
    int x;
    float m;
    scanf("%d",&x);
    if(x>=0)
    {
	    if(x<=200)m=x*0.5;
	    else if(x<=400)m=100+(x-200)*0.65;
	    else if(x<=600)m=230+(x-400)*0.8;
	    else m=390+(x-600)*1.0;
	    printf("m=%.2f\n",m);
	}
	else printf("error!\n");
	return 0;
}

10.计算某年某月有几天(注意要区分闰年)

#include <stdio.h>
#include <math.h>
int main()
{  
    int yy,mm,dd;
    scanf("%d%d",&yy,&mm);
    if(mm>=1&&mm<=12)
    {

	    switch(mm)
	    {
	    	case 1:case 3:case 5:case 7:
	    	case 8:case 10:case 12:
	    		dd=31;break;
	    	case 4:case 6:case 9:case 11:
	    		dd=30;break;
	    	case 2:
	    		if((yy%4==0&&yy%100!=0)||(yy%400==0))
	    			dd=29;
	    		else dd=28;
	    		break;
		}
	    printf("dd=%d\n",dd);
	}
	return 0;
}

11.编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。

#include <stdio.h>
#include <math.h>
int main()
{  
    float a,b;
    char op;
    scanf("%f%c%f",&a,&op,&b);
    switch(op)
    {
    	case '+':printf("%f+%f=%.2f\n",a,b,a+b);break;
    	case '-':printf("%f-%f=%.2f\n",a,b,a-b);break;
    	case '*':printf("%f*%f=%.2f\n",a,b,a*b);break;
    	case '/':printf("%f/%f=%.2f\n",a,b,a/b);break;
	}
	return 0;
}

12.数据处理。

①输入两个正整数m和n,求其最大公约数。

②从键盘上输入一个正整数,将其逆序输出。

//求最大公约数
#include <stdio.h>
#include <math.h>
int main()
{  
    int m,n,r,t;
    scanf("%d%d",&m,&n);
    if(m<n)
	{
    	t=m;
		m=n;
		n=t;		
	}
	r=m%n;
	while(r!=0)
	{
		m=n;
		n=r;
		r=m%n;
	}
	printf("%d\n",n);
	return 0;
}
//逆序输出
#include<stdio.h>
int main()
{
	int a,b;
	scanf("%d",&a);
	while(a!=0)
	{
		b=a%10;
		a=a/10;
		printf("%d",b);
	}
}

13.求n的阶乘(n!)。

#include<stdio.h>
int main()
{
	int a,b=1,c;
	scanf("%d",&a);
	c=a;
	for(a=a;a>0;a--)
	{
		b=b*a;
	}
	printf("%d!=%d\n",c,b);
}

14.求5!

#include <stdio.h>
#include <math.h>
int main()
{  
    int i,f=1;
    for(i=1;i<=5;i++)
    	f=f*i;
    printf("5!=%d\n",f);
	return 0;
}

15.求1+1/2+1/3+1/4+……+1/n

#include <stdio.h>
#include <math.h>
int main()
{  
   int i,n;
   float s=0;
   scanf("%d",&n); 
   for(i=1;i<=n;i++)
   		s=s+1.0/i;
	printf("s=%.2f\n",s);
	return 0;
}

16.求1-1/2+1/3-1/4+……1/n

#include <stdio.h>
#include <math.h>
int main()
{  
   int i,n,flag=1;
   float s=0;
   scanf("%d",&n); 
   for(i=1;i<=n;i++)
   {

   		s=s+flag*1.0/i;
   		flag=-flag;
   	}
	printf("s=%.2f\n",s);
	return 0;
}

17.求1-1/3+1/5-1/7+……1/n

//方法一:for循环
#include <stdio.h>
#include <math.h>
int main()
{  
   int i,n,flag=1,t=1;
   float s=0;
   scanf("%d",&n); //n=5
   for(i=1;i<=n;i++)
   {

   		s=s+flag*1.0/t;
   		t=t+2;
   		flag=-flag;
   	}
	printf("s=%.2f\n",s);
	return 0;
}
//方法二:while循环
#include <stdio.h>
#include <math.h>
int main()
{  
   int flag=1,t=1;
   float s=0;

   while(fabs(flag*1.0/t)>=1e-5)
   {

   		s=s+flag*1.0/t;
   		t=t+2;
   		flag=-flag;
   	}
	printf("s=%.2f\n",s);
	return 0;
}

18.求X^n。

#include <stdio.h>
#include <math.h>
int main()
{  
   int i,n;
   double x,y=1;
   scanf("%lf%d",&x,&n);
   for(i=1;i<=n;i++)
   		y=y*x;
   printf("%f\n",y);
	return 0;
}

19.输入一个正整数n,再输入n个数,输出最大值

#include <stdio.h>
#include <math.h>
int main()
{  
    int i,n,max,x; 
    scanf("%d",&n);
    scanf("%d",&x);
    max=x;
    for(i=1;i<n;i++)
    {
    	scanf("%d",&x);
    	if(max<x)max=x;

	}
	printf("max=%d\n",max);
	return 0;
}

20.从键盘上输入m,判断m是否为素数。

#include <stdio.h>
#include <math.h>
int main()
{  
    int i,m;
    scanf("%d",&m);//m=6
    for(i=2;i<m;i++)
    	if(m%i==0)break;
    if(i>=m)printf("yes\n");
    else printf("no\n");
	return 0;
}

21.输出九九乘法表。

样式一:

#include<stdio.h> 
#include<math.h>
main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
			printf("%4d",i*j);
		printf("\n");
	}
	return 0;
}

样式二:

#include<stdio.h> 
#include<math.h>
main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
			printf("%4d",i*j);
		printf("\n");
	}
	return 0;
}

样式三:

#include<stdio.h> 
#include<math.h>
main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=i;j<=9;j++)
			printf("%d*%d=%4d ",i,j,i*j);
		printf("\n");
	}
	return 0;
}

22.输出100~200之间所有素数。

#include <stdio.h>
#include <math.h>
int main()
{  
    int i,m;
    for(m=100;m<=200;m++)
    {

	    for(i=2;i<m;i++)
	    	if(m%i==0)break;
	    if(i>=m)printf("%5d",m);

	}
	return 0;
}

23.若口袋里放12个球,3个红球,3个白球,6个黑球,从中任取8个,编写程序列出所有可能的取法。

#include <stdio.h>
#include <math.h>
int main()
{  
    int r,w,b;
    for(r=0;r<=3;r++)
    {
    	for(w=0;w<=3;w++)
    	{
    		for(b=0;b<=6;b++)
    			if(r+w+b==8)printf("r=%d,w=%d,b=%d\n",r,w,b);
		}
	}
	return 0;
}

24.已知鸡兔若干只,共有98个头,386只脚,请问鸡兔各多少只?

//二重循环解决
#include <stdio.h>
#include <math.h>
int main()
{  
   	int x,y;
   	for(x=1;x<98;x++)
   		for(y=1;y<98;y++)
   			if(x+y==98&&2*x+4*y==386)printf("x=%d,y=%d\n",x,y);

	return 0;
}
//一重循环解决
#include <stdio.h>
#include <math.h>
int main()
{  
   	int x,y;
   	for(x=1;x<98;x++)
	{   

   		y=98-x;
   		if(2*x+4*y==386)printf("x=%d,y=%d\n",x,y);
	}
	return 0;
}

25.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

#include <stdio.h>
int main()
{  
   	int x,y,z;
   	for(x=0;x<=100;x++)
   		for(y=0;y<=100;y++)
   		{
   			z=100-x-y;
   			if(5*x+3*y+z*1/3==100)printf("x=%d,y=%d,z=%d\n",x,y,z);
		}
	return 0;
}

26.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

#include <stdio.h>
int main()
{  
   	int x,y,z;
   	for(x=0;x<=100;x++)
   		for(y=0;y<=100;y++)
   		{
   			z=100-x-y;
   			if(5*x+3*y+z*1/3.0==100)printf("x=%d,y=%d,z=%d\n",x,y,z);
		}
	return 0;
}

27.编写指定程序,输出下列图形

#include <stdio.h>
int main()
{  
   	int i,j;
   	char ch;
   	for(i=0;i<14;i++)
   	{
   		for(j=0;j<i;j++)
		   putchar(' ');
		for(ch='A'+i;ch<='M';ch++)
			putchar(ch);
		putchar('*');
		for(ch='N';ch<='Z'-i;ch++)
			putchar(ch);
		printf("\n");
	}
	return 0;
}

二、总结

如果对您有帮助,别忘了关注博主~

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yali2388

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值