C语言(期末复习上)

1【问题描述】从键盘任意输入一个三位数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如:输入-123,则输出321。

#include  <math.h>
int main()
{
	int x,a,b,c,y;
	scanf_s("%d", &x);
	x = abs(x);  //绝对值
	a = x / 100;
	b = (x - a * 100) / 10;
	c = x % 10;
	y = c * 100 + b * 10 + a;
	printf("%d", y);
	return 0;
 }

2.【问题描述】编程并计算一元二次方程ax^2+bx+c=0的两个实根。其中a、b、c的值从键盘输入。假设输入的a、b、c能保证方程有两个不相等的实根。(实根保留两位小数)
【输入形式】三个整数
【输出形式】两个实根
【样例输入】1 2 1
【样例输出】-1.00 -1.00

#include<math.h>
int main()
{
	float x1, x2;
	int a, b, c, z,;
	scanf_s("%d%d%d", &a, &b, &c);
	z = b * b - 4 * a * c;
	x1 = (-b + sqrt(z)) / (2 * a);
	x2 = (b + sqrt(z)) / (2 * a);
	printf("%.2lf %.2lf", x1, x2);
	return 0;
}

在这里插入图片描述3. 【问题描述】使用宏定义定义π的值3.14,编程计算一个球的体积(小数点后保留3位有效数字)。球的半径从键盘输入。
【样例输入】1
【样例输出】4.187

#define PI 3.14
int main()
{
	double r, volume;
	scanf_s("%lf", &r);
	volume = 4 / 3 * PI * r * r * r; 
	printf("%.3lf\n", volume); //单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。
	return 0;
}

在这里插入图片描述4. 【问题描述】求三角形斜边长的值
【样例输入】3 4
【样例输出】c=5.0

#include<math.h>
int main()
{
	int a, b;
	double c;
	scanf_s("%d%d",&a,&b);
	c = sqrt(a * a + b * b);
	printf("c=%.1f", c);
	return 0;
 }

在这里插入图片描述
5【问题描述】已知平面上两点的坐标(x1,y1),(x2,y2),求这两个点之间的距离(结果保留一位小数)。
【输入形式】1 1 1 2(输入时请按照x1,y1,x2,y2的顺序输入)
【输出形式】distance=1.0

#include<math.h>
int main()
{
	float  x1, x2, y1, y2;
	double distance;
	scanf_s("%f%f%f%f", &x1, &x2, &y1, &y2);
	distance = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
	printf("distance=%.lf\n", distance);
	return 0;
}

在这里插入图片描述
6.【问题描述】已知银行整存整取不同期限存款的年利率分别为:
要求从键盘输入本金和期限,求到期时能从银行得到的利息与本金的总和(保留2位小数)。
【输入形式】100 1
【输出形式】102.25
在这里插入图片描述

int main()
{
    double a;
    int year;
    scanf_s("%lf %d", &a, &year);
    switch (year)
    {
    case 1:
        a = (1 + 0.0225) * a;
        printf("%.2f", a);
        break;
    case 2:
        a = (1 + 0.0243) * (1 + 0.0243) * a;
        printf("%.2f",a);
        break;
    case 3:
        a = (1 + 0.0270) * (1 + 0.0270) * (1 + 0.0270) * a;
        printf("%.2f", a);
        break;
    case 5:
        a = (1 + 0.0288) * (1 + 0.0288) * (1 + 0.0288) * (1 + 0.0288) * (1 + 0.0288) * a;
        printf("%.2f", a);
        break;
    case 8:
        a = (1 + 0.0300) * (1 + 0.0300) * (1 + 0.0300) * (1 + 0.0300) * (1 + 0.0300) * (1 + 0.0300) * (1 + 0.0300) * (1 + 0.0300) * a;
        printf("%.2f", a);
        break;
        return 0;
    }
}

在这里插入图片描述7.【问题描述】从键盘输入一个百分制的成绩score,转换成五分制的等级成绩grade后输出。转换标准为:
如果输入的成绩小于0或者大于100,则输出input error!
在这里插入图片描述


int main()
{
    double score;
    scanf_s("%lf", &score);
    if (score >= 90 && score <= 100)
    {
        printf("A");
    }
    if (score >= 80 && score < 90)
    {
        printf("B");
    }
    if (score >= 70 && score < 80)
    {
        printf("C");
    }
    if (score >= 60 && score < 70)
    {
        printf("D");
    }
    if (score < 60)
    {
        printf("E");
    }
    if (score > 100 || score < 0)
    {
        printf("input error!");
    }
    return 0;
}

在这里插入图片描述
8【问题描述】从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母;
如果它是小写英文字母,则将其转换为大写英文字母;然后将转换后的英文字母及其ASCII码值输出到屏幕上;
如果不是英文字母,则不转换并直接将它及其ASCII值输出到屏幕上。
【样例输入】a
【样例输出】A 65

int main()
{
	char x;
	x = getchar();  // getchar()是键盘缓冲输入字符;getch()是无缓冲输入字符直接在屏幕上回显
	if (x >= 'A' && x <= 'z')
	{
		if (x >= 'A' && x <='Z')
		{
			x += 32;
		}
		else if(x >= 'a' && x <= 'z')
		{
			x -= 32;
		}
	}
	printf("%c %d", x, x);
	return 0;
 }

在这里插入图片描述

9.【问题描述】从键盘任意输入一个字符,编程判断该字符是数字字符、字母、空格还是其它字符。如果是数字,则输出"digit";如果是字母,输出“letter";如果是空格,则输出"space";否则,输出"other"。

#include<stdlib.h>
#include<string.h>
int main()
{
    char ch;
    ch = getchar();
  
    if (ch >= 0 && ch <= 255)  //总范围

    {
        if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z')  //字母
        {
            printf("letter");
        }
        else if (ch == 32) //空格  注意是 ==
        {
            printf("space");
        }
        else if (ch >= '0' && ch <= '9')  //数字
        {
            printf("digit");
        }
        else                               //其他
         {
            printf("other");
         }
       
    }
        
   
 return 0;
}

10.【问题描述】根据身高与体重计算体重指数的方法如下:
体重指数t=体重/(身高2)(体重:千克 身高: 米)
当t<18时,偏瘦 thin
当18<=t<25时,正常体重 normal
当25<=t<27时,超重体重 overweight
当t>=27时,肥胖 obesity
从键盘输入身高和体重,根据给定的公式,判断体重类型。
【样例输入】1.65 65
【样例输出】normal

int main()
{
	double ibm, w, h;
	scanf_s("%lf%lf", &h, &w);
	ibm = w / (h * h);
	if (ibm < 18)
	{
		printf("thin");
	}
	else if (ibm >= 18 && ibm <= 25)
	{
		printf("normal");
	}
	else if (ibm>= 25 && ibm <= 27)
	{
		printf("overweight");
	}
	else if (ibm >= 27)
	{
		printf("obesity");
	}
	return 0;
}

在这里插入图片描述
11.【问题描述】从键盘任意输入一个实数,不使用计算绝对值函数编程计算并输出该实数的绝对值。

int main()
{
  double r;
  scanf("%lf",&r);
  if(r>=0)
  {
    printf("%f",r);
  }
  else
  {
r=-r;
   printf("%f",r);
  }
  return 0;
}

12.【问题描述】从1到任意数的平方

#include <stdio.h>
int main(void)
{
    double x, y;
    printf("请输入需要开方到的数:");
    scanf_s("%lf", &x);
    for (y = 1; y <= x; y = y + 1) {
        printf("%lf的平方根是%lf\n", y, pow(y, 0.5));
    }
    return 0;
}

【问题描述】从键盘任意输入三角形的三条边长a,b,c;编程判断a,b,c的值能够构成一个三角形。若能构成三角形,则计算并输出三角形面积,否则输出“It is not a triangle”。构成三角形的条件是:任意两边之和大于第三边。

#include<math.h>
int main()
{
    double a, b, c, s, p;
    scanf_s("%lf,%lf,%lf", &a, &b, &c);
    if (c < a + b && a < b + c && b < a + c)  //判断是否构成三角形
    {
        p = (a + b + c) / 2;   //海伦公式 P
        s = sqrt(p * (p - a) * (p - b) * (p - c));
        printf("area=%f", s);
    }
    else
    {
        printf("It is not a triangle");
    }
    return 0;
}

14.【问题描述】一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数。
【输出形式】6, its factors are 1 2 3

#include<math.h>

int main()
{
	int i, j, sum;
	for (i = 1; i <= 1000; i++)  //求完数
	{
		sum = 1;
		==for (j = 2; j <= i/2; j++) ==
		{
			if (i % j == 0)
			{
				sum += j;
			}
		}

		if (sum == i)
		{
			printf("%d its factors are 1 ", i);
			for (j = 2; j <= i/2; j++)
			{
				if (i % j == 0)
				{
					printf("%d ", j);
				}
			}

			printf("\n");
		}
	}
	return 0;
} 
``
15.【问题描述】编写程序,从键盘读入一个正整数,统计该数的数为,并从低位到高位分别输出每一位。
【输入形式】12345
【输出形式】
This is a 5-digit number.
Its numbers are 5 4 3 2 1 .(from low to high)
【样例输入】123
【样例输出】
This is a 3-digit number.
Its numbers are 3 2 1 .(from low to high)
```#include<stdio.h>
#include<stdlib.h>
int main()
{
	int num;
	int n = 0, i = 0;
	scanf_s("%d", &num);
	i = num;
	while (i > 1)
	{
		i = i / 10;
		n++;
	}
	printf("this is a %d -digit number .\n", n);
	printf("its numbers are ");
	for (i = n; i > 0; i--)
	{
		printf("%d ", num % 10);
		num = num / 10;
	}
	printf(".(from low to high)");
	return 0;
}

16.【问题描述】编写程序,求1!+3!+5!+…+(2*n-1)!
【样例输入1】2
【样例输出1】7
【样例输入2】4
【样例输出2】5167

#include<math.h>
double fac(int n)
{
	double x = 1;
	while (n)
	{
		x *= n--;
	}
	return x;
}
int main()
{
	int i, n;
	double sum = 0;
	scanf_s("%d", &n);
	for (i = 1; i < n; i++)
	{
		sum += fac(2 * i - 1);
	}
	printf("%.0lf\n", sum);
	return 0;
}

17.有一个分数序列: ,求出这个数列的前20项之和。(结果保留4位小数)

#include<stdlib.h>
#include<math.h>
int main()
{
    double r=0,a=2,b=1;
    int t,i,n=20;
    for(i=1;i<=n;i++)
    {
        r=r+a/b;
        t=a;
        a=a+b;
        b=t;
   }
    printf("sum=%.4f",r);
    return 0;
}

18.【问题描述】编写程序,输入两个整数a,b,确保a<b,如果输入值a>b,则a,b交换。求这两个整数之间的所有素数,要求5个一行。
【输入形式】100 200
【输出形式】
101 103 107 109 113
127 131 137 139 149
151 157 163 167 173
179 181 191 193 197
199
【样例输入】200 100
【样例输出】
101 103 107 109 113
127 131 137 139 149
151 157 163 167 173
179 181 191 193 197
199

#include<stdlib.h>
#include<math.h>
int scort(int n)
{
   int i;
   for(i=2;i*i<=n;i++)
   {
     if(n%i==0)
     {
       return 0;
     }
   }
  return n;
}
int main()
{
  int i,a,b,temp=0;
  scanf("%d %d",&a,&b);
   if(a>b)
   {
    temp=a;
    a=b;
    b=temp;
   }
  for(i=a;i<=b;i++)
   {
      if(scort(i))
      {
        printf("%d ",i);
        if(++temp%5==0)
        {
          printf("\n");
        }
      }
   }
 return 0;
}

19.【问题描述】按如下形式,编程输出九九乘法表。
在这里插入图片描述

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

20.【问题描述】已知不等式:1!+2!+3!+…+3!<n,请编程对用户指定的n值计算并输出满足该不等式的m的整数解。
【样例输入】3
【样例输出】m<=1

#include<stdlib.h>
int main()
{
   int i,j;
   int sum=0,term=1;
   scanf("%d",&j);
   for(i=1;sum<j;i++)
   {
      term*=i;
      sum+=term;
      if(sum>=j)
      {
        break;
      }
   }
   printf("m<=%d",i-1);
   return 0;
}

21.【问题描述】爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨2阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,则最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。下面的程序代码计算共有多少阶程序,其中存在一些语法和逻辑错误。请找出并改正。

int main(void)
{
int  x = 1, find = 0;
while (!find);
{
if (x % 2 = 1 && x % 3 = 2 && x % 5 = 4 && x % 6 = 5&& x % 7 = 0)
 {
   printf("x  = %d\n", x);
  find = 1;
   x++; }
} return 0; }
改正后,程序的正确运行结果是:
x  = 119
#include<stdio.h>
int main()
{
   int x=0,find=1;
   while(find)
   {
       if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0)
       {
        find=0;
       }
       else
       {
          ++x;
       }
    }
    printf("x  = %d\n",x);
    return 0;
}

22.【问题描述】编程计算并输出1到n之间的所有数的平方和立方。其中,n的值由用户从键盘输入
【样例输入】
3
【样例输出】
1 4 9
1 8 27

#include<stdlib.h>
int main()
{
    int i,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("%-4d ",i*i);
    }
    printf("\n");
    for(i=1;i<=n;i++)
    {
        printf("%-4d ",i*i*i);
    }
    printf("\n");
    return 0;
}

23.【问题描述】利用π/4=1-1/3+1/5-1/7+…,编程计算π的近似值,直到最后一项的绝对值小于1e-4时为止。输出π的值并统计累加的项数。
【样例输出】
pi=3.141793
count=5001

#include<stdlib.h>
#include<math.h>
int main()
{
    int n=1,count=0;
    double sum=0,term,pi,sign=1.0;
    do
    {
      term=sign/n;
      sign=-sign;
      sum=sum+term;
      count++;
      n=n+2;
    }
   while(fabs(term)>=1e-4);
    pi=sum*4;
    printf("pi=%f\n",pi);
    printf("count=%d",count);
    return 0;
}

24.【问题描述】利用公式e=1+1/1!+1/2!+1/3!+…+1/n!,编程计算e的近似值,直到最后一项的绝对值小于1e-5为止。输出e的值并统计累加的项数。
【样例输出】e=2.718282,count=10

#include<stdlib.h>
int main()
{
    int i,count=1;
    double term=1,sum=1;
    for(i=1;term>=1e-5;i++)
    {
       term=term/i;
       sum=sum+term;
       count++;
    }
    printf("e=%f,count=%d",sum,count);
    return 0;
}

25.【问题描述】水仙花数是指各位数字的立方和等于该数本身的三位数。例如,153是水仙花数,因为153=111+333+555。请编程计算并输出所有的水仙花数。

#include<stdlib.h>
int main()
{
    int i,x,y,z;
    for(i=100;i<1000;i++)
    {
       x=i/100;
       y=i/10%10;
       z=i%10;
       if(i==(x*x*x+y*y*y+z*z*z))
       {
           printf("%d ",i);
       }
    }
    return 0;
}

26.【问题描述】从键盘输入若干正数,编程计算并输出这些正数的和,输入负数或零时表示输入数据结束。
【样例输入】1 2 3 4 5 -1
【样例输出】15

#include<stdlib.h>
int main()
{
    int i,a,sum=0;
    for(i=0; ;i++)
    {
        scanf("%d",&a);
        if(a<=0)
        {
          break;
        }
        else
        {
           sum+=a;
        }
    }
    printf("%d\n",sum);
    return 0;
}
  1. 【问题描述】鸡兔同笼,共有98个头,386只脚,请用穷举法编程计算鸡、兔各有多少只。
#include<stdlib.h>
int main()
{
    int x,y;
    for(x=0;x<=98;x++)
    {
        y=98-x;
        if(2*x+4*y==386)
        {
            break;
        }
    }
    printf("cock=%d,rabbit=%d",x,y);
    return 0;
}

28.【问题描述】按如下格式输出九九乘法表。

#include<stdlib.h>
int main()
{
    int i,j,s;
    for(i=1;i<=9;i++)
    {
        printf("%d   ",i);
    }
    printf("\n");
    for(i=1;i<=9;i++)
    {
        printf("-   ");
    }
    printf("\n");
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
        {
           if(j<i)
           {
             printf("    ");
           }
           else
           {
            s=i*j;
            printf("%-2d  ",s);
           }
        }
        printf("\n");
    }
    return 0;
}

29.【问题描述】编写求阶乘的函数Fact(int n),编程计算并输出从1到n之间所有数的阶乘值。
【样例输入】
3
【样例输出】
1! = 1
2! = 2
3! = 6

#include<stdlib.h>
int Fact(int n)
{
    int i;
    long result=1;
    for(i=1;i<=n;i++)
    {
        result=result*i;
    }
    return result;
}
int main()
{
    int i,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("%d! = %d\n",i,Fact(i));
    }
    return 0;
}

30.【问题描述】编写求阶乘的函数Fact(int n),编程计算并输出1!+2!+…+n!。
【样例输入】1
【样例输出】sum = 1

#include<stdlib.h>
int Fact(int n)
{
   int i;
   long result=1;
   for(i=1;i<=n;i++)
   {
        result=result*i;
   }
    return result;
}
int main()
{
    int i,n;
    long result=1,sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        result=Fact(i);
        sum+=result;
    }
    printf("sum = %ld",sum);
    return 0;
}
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值