【手把手带你刷题】-C语言编程入门篇(三)

简介: 【手把手带你刷题】-C语言编程入门篇(三)

前言:

今天是更新刷题篇的第三天,对于初学者而言,题目在不断的变难,希望大家可以坚持下去,刷完这130题,我们一定会有很大的进步,冲冲冲!!!

 

1.计算三角形的周长和面积

题目链接:计算三角形的周长和面积

题目:

题解:本题只要学习两点:

<1>知道三角形的三条边怎么计算三角形的面积:海伦公式S=sqrt(p*(p-a)*(p-b)*(p-c)),其中p为三角形周长的一半,即p=(a+b+c)/2

<2>sqrt这个函数是开平方的意思,它作用于double类型的变量,用这个函数要引头文件#include<math.h>

拓展:在C语言中怎么计算次方,这里介绍一个函数:pow(double x,double y),它的返回值也是double类型,eg:pow(2.0,6.0)=64,同样这是数学中的,所以用这个函数之前要引头文件#include<math.h>

#include <stdio.h>
#include<math.h>
int main()
{
    double a=0.0;
    double b=0.0;
    double c=0.0;
    //输入
    scanf("%lf %lf %lf",&a,&b,&c);
    //计算
    double circumference=(a+b+c);//周长
    double p=circumference/2;
    double area=sqrt(p*(p-a)*(p-b)*(p-c));
    //输出
    printf("circumference=%.2lf area=%.2lf",circumference,area);
    return 0;
}

2. 计算球体的体积

题目链接: 计算球体的体积题目

题目:

题解:本题应注意:

<1>定义pi的时候不能写成float类型,因为float类型只能到小数点后6-7位,而double类型可以到小数点后15-16位

<2>计算体积的时候不能写成4/3,这样就算的结果之间就是1,那么本题的真实结果就会相差很大,解决办法就是写为4.0/3或者4/3.0,或者把/3写在整个表达式的后面eg:4*pi*n*n*n/3

#include <stdio.h>
int main() 
{
    double r=0.0;
    double v=0.0;
    double pi=3.1415926;
    //输入
    scanf("%lf",&r);
    //计算
    v=4/3.0*pi*r*r*r;
    printf("%.3lf",v);
    return 0;
}

3.成绩输入输出

题目链接:成绩输入输出

题目:

题解1:

#include <stdio.h>
int main()
 {
    int s1=0;
    int s2=0;
    int s3=0;
   scanf("%d %d %d",&s1,&s2,&s3);
   printf("score1=%d,score2=%d,score3=%d\n",s1,s2,s3);
    return 0;
}

题解2:如果输入的数据很多,采用数组输入

#include <stdio.h>
int main()
 {
    int score[3]={0};
    int i=0;
   for(i=0;i<3;i++)
   {
    scanf("%d",&score[i]);
   }
   printf("score1=%d,score2=%d,score3=%d\n",score[0],score[1],score[2]);
    return 0;
}

4.变种水仙花

题目链接: 变种水仙花

题目:

题解:

拿12345举个例子,怎么取出各个数

1*2345       -     (12345/10000 )*(12345%10000)

12*346       -      (12345/1000)  *(12345%1000)

123*45       -        (12345/100)  * (12345%100)

1234*5       -         (12345/10)  *  (12345%10)

所以就是一个数i,(i除以10的次方)和(i取10的次方的模)的乘积

                                                   (i/j)*(i%j)

#include <stdio.h>
#include<math.h>
int main()
{
    int i=0;
    for (i = 10000; i <= 99999; i++) //取出五位数
    {
        //判断i是否为Lily Number
        int j=0;
        int sum=0;
        for(j=10;j<=10000;j*=10)
        {
            sum+=(i/j)*(i%j);
        }
        if (sum == i)
            printf("%d ", i);
    }
    return 0;
}

5.kiki算数

题目链接: kiki算数

题目:

题解:这题主要是考查取余

#include <stdio.h>
int main() 
{
   int a=0;
   int b=0;
   //输入
   scanf("%d %d",&a,&b);
   //计算
   int sum =(a+b)%100;//这里也可以写成a%100+b%100
   //输出
   printf("%d",sum);
    return 0;
}

6.浮点数的个位数字

题目链接: 浮点数的个位数字

题目:

题解1:本题主要学会(int)(double)强制转化类型,要转换啥类型直接在变量或常量前面写上(想转的类型)

#include <stdio.h>
int main() 
{
    double a=0;
    scanf("%lf",&a);
    int  n=(int)a;
    printf("%d\n",n%10);
    return 0;
}


题解2:直接输入时13.141,但是程序录入只取整数部分


#include <stdio.h>
int main() 
{
    int a=0;
    scanf("%d",&a);
    printf("%d\n",a%10);
    return 0;
}

7. 你能活多少秒

题目链接: 你能活多少秒

题目:


题解:本题要学会10的7次方怎么写?

<1>3.156*pow(10,7)

<2>3.156e7(e表示的是底数为10的科学计数法的表示形式)

还要注意631200000太大了,不能用int类型,得用long long类型来存储,打印的时候是%lld

#include <stdio.h>
#include<math.h>
int main() 
{
   int age=0;
   //输入
   scanf("%d",&age);
   //计算
   long long time=3.156*pow(10,7)*age;
   //或者这样写long long time=3.156e7*age;
   //输出
   printf("%lld",time);
    return 0;
}

8. 时间转换

题目链接: 时间转换

题目:

题解:本题就是净值换算的一个题  3600s等于1h,seconds%3600就是除了3600以后的余数,用这个余数再除以60就是分钟,取余就是秒

#include <stdio.h>
int main()
{
  //输入
  int seconds=0;
  int h=0;
  int m=0;
  int s=0;
  scanf("%d",&seconds);
  //计算
  h=seconds/3600;
  m=seconds%3600/60;
  s=seconds%3600%60;
  //输出
  printf("%d %d %d\n",h,m,s);
  return 0;
}

9.总成绩和平均分计算

题目链接: 总成绩和平均分计算

题目:

题解1:

#include <stdio.h>
int main()
{
  double arr[3] = {0};//三科成绩
  //输入
  scanf("%lf %lf %lf", &arr[0], &arr[1], &arr[2]);
    //计算
    double sum=arr[0] + arr[1] + arr[2];
  double avg=sum/3.0;
  //输出
  printf("%.2lf %.2lf",sum , avg);
  return 0;
}


题解2:边输入边计算


#include <stdio.h>
int main()
{
  double score=0.0;
  double sum=0.0;
  //输入并计算
  int i=0;
  for(i=0;i<3;i++)
  {
       scanf("%lf",&score);
     sum+=score;
  }
  //输出
  printf("%.2lf %.2lf",sum ,sum/3);
  return 0;
}

10.KiKi和酸奶

题目链接:KiKi和酸奶

题目:


题解1:当总时间正好被喝一瓶所用时间整除,直接减就可以,如果没有被整除,就需要再减一瓶

#include <stdio.h>
int main()
{
    int m = 0;//给的酸奶瓶数
    int n = 0;//喝一瓶所用的时间
    int h = 0;//总共时间
    while ((scanf("%d %d %d", &n, &h, &m) != EOF))
    {
        if (m % h)
            printf("%d", n - m / h - 1);
        else
            printf("%d", n - m / h);
    }
    return 0;
}


题解2:简化(int)强制类型转换


#include <stdio.h>
int main()
{
  float m, n, h = 0;
  scanf("%f %f %f", &n, &h, &m);
  printf("%d", (int)(n - m / h) );
  return 0;
}

总结:

(1)这些编程初学者训练的思路一般都是:输入,计算,输出

(2)sqrt和pow的作用和返回值都是double类型,都要引头文件#include<math.h>

 (3)float类型只能到小数点后6-7位,分数计算的时候记得带上小数点,不然会直接取整eg:4/3.0

 (4)水仙花变种:(i/j)*(i%j)   j为pow(10,n)

 (5)次方运算有两种方法:<1>pow(x,y)    <2>en(以10为底数的科学计数法)

 (6)学会灵活运用强制转换(类型)

 (7)学会灵活运用取余(取模)


结语:   彼方尚有荣光在,少年不惧岁月长

 

感觉笔者写的还可以,或者自己有些许收获的时候,麻烦铁汁们动动小手,给俺来个一键三连,万分感谢


目录
相关文章
|
6天前
|
网络协议 程序员 编译器
C语言:编程世界的基础与魅力
C语言:编程世界的基础与魅力
|
6天前
|
编译器 C语言 C++
C语言,C++编程软件比较(推荐的编程软件)
C语言,C++编程软件比较(推荐的编程软件)
|
9天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
6天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)
|
6天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)
|
9天前
|
C语言
C 语言解 常见编程题(下)
C 语言解 常见编程题
42 0
|
9天前
|
C语言
C 语言解 常见编程题(上)
C 语言解 常见编程题
42 0
|
9天前
|
算法 C语言 芯片
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)
|
21天前
|
存储 Java C语言
从C语言的面向过程编程过渡理解面向对象编程风格
从C语言的面向过程编程过渡理解面向对象编程风格
9 0
|
21天前
|
存储 编译器 程序员
c语言入门篇
c语言入门篇
26 0