1.程序设计入门

内容

算数表达式

#include<stdio.h>
#include<math.h>

int main()
{
    printf("%.8f\n", 1+2*sqrt(3)/(5-0.1));
    return 0;
}
  1. #include<stdio.h> 头文件,标准输入输出,standard input output.header
  2. #include<math.h> 头文件,关于数学的一些运算
  3. 整数/整数=整数,浮点数/浮点数=浮点数
  4. sqrt(x),计算x的算数平方根

变量及其输入

计算圆柱体的表面积

#include<stdio.h>
#include<math.h>
 
int main()
{
    const double pi = acos(-1.0);
    double r, h, s1, s2, s;
    scanf("%lf%lf", &r, &h);
    s1 = pi*r*r;
    s2 = 2.0*pi*r*h;
    s = s1*2.0 + s2;
    printf("Area = %.3f\n", s);
    return 0;
}
  1. const关键字声明常数
  2. acos为求反余弦函数,cosπ=-1,arccos(-1) = π

顺序结构程序设计

一、 三位数反转

  1. #include<stdio.h>
    
    int main()
    {
        int n;
        scanf("%d", &n);
        printf("%d%d%d\n", n%10, n/10%10, n/100);
        return 0; 
    }
    
  2. #include<stdio.h>
    
    int main()
    {
        int n, m;
        scanf("%d", &n);
        m = (n%10)*100+(n/10%10)*10+n/100;
        printf("%03d\n", m);
        return 0; 
    }
    

二、交换变量

  1. 使用中间变量
    #include<stdio.h>
    
    int main()
    {
        int a, b, t;
        scanf("%d%d", &a, &b);
        t = a;
        a = b;
        b = t;
        printf("%d %d", a, b);
        return 0;
    }
    
  2. 不使用中间变量
    #include<stdio.h>
    
    int main()
    {
        int a, b, t;
        scanf("%d%d", &a, &b);
        a = a + b;
        b = a - b;
        a = a - b;
        printf("%d %d", a, b);
        return 0;
    }
    

注: 算法竞赛是在比谁能更好地解决问题,而不是在比谁写的程序看上去更高级。

分支结构程序设计

  1. 鸡兔同笼
    #include<stdio.h>
    
    int main()
    {
      int a, b, n, m;
      scanf("%d%d", &n, &m);
      a = (4*n-m)/2;
      b = n-a;
      if(m % 2 == 1 || a<0 || b<0)
      {
          printf("No answer\n");  
      }
      else
      {
          printf("%d %d\n", a, b);
      }
      return 0;
    }
    
    C语言中的逻辑运算符都是短路运算符。一旦能够确定整个表达式的值,就不再继续计算。用数学知识算出表达式,再用程序实现。
  2. 三整数排序
    #include<stdio.h>
    
    int main()
    {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        if(a > b)
        {
            a = a+b;
            b = a-b;
            a = a-b; 
        }
        if(a > c)
        {   
            a = a+c;
            c = a-c;
            a = a-c; 
        }
        if(b > c)
        {
            b = b+c;
            c = b-c;
            b = b-c;
        }
        printf("%d %d %d\n", a, b, c);
        return 0; 
    }
    
    此处后面设计数组之后可用排序算法。

练习

  1. 输出%d
    #include<stdio.h>
    
    int main()
    {
    
        printf("%%d");
        
        return 0;
    }
    
  2. 输入三个整数,输出他们的平均值,保留三位小数。
    #include<stdio.h>
    
    int main()
    {
      int a, b, c;
      scanf("%d%d%d", &a, &b, &c);
      printf("%.3f",(float)(a+b+c)/3.0);
      return 0;
    }
    
  3. 输入华氏温度f,输出对应的摄氏温度c,保留三位小数。c=5(f-32)/9
    #include<stdio.h>
    
    int main()
    {
        float f, c;
        scanf("%f", &f);
        c = 5*(f-32)/9;
        printf("%.3f", c);
        return 0;
    }
    
  4. 输入正整数n,输出1+2+...+n。
      #include<stdio.h>
    
    int main()
    {
        int n, sum;
        scanf("%d", &n);
        sum = 0;
        for(int i = 1; i<=n; i++){
            sum = sum+i;
        }
        printf("%d", sum);
        return 0;
    }
    
  5. 输入正整数n,输出n度的正弦、余弦函数值。
    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
        int n, sum;
        scanf("%d", &n);
    
        printf("%f,%f",sin(n),cos(n));
        return 0;
    }
    
  6. 一件衣服95元,若消费满300元,可打85折。输入购买衣服件数,输出需要支付的金额,保留两位小数。
    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
        const int eachJ = 95;
        int a, all;
        scanf("%d", &a);
        all = a*eachJ;
        if(all >= 300){
            printf("%.2f", (float)all*0.85);
        }else{
            printf("%.2f", (float)all);
        }
        return 0;
    }
    
  7. 输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的三个边长,如果可以,输出yes,如果不能,则输出no。如果根本无法构成三角形,则输出not a triangle。
    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
        int a, b, c, max;
        scanf("%d%d%d", &a, &b, &c);
        if(a > b){
            if(a > c){
                max = a;
            }else{
                max = c;
            }
        }else{
            if(b > c){
                max = b;
            }else{
                max = c;
            }
        } 
        if((a+b+c-max) > max){
            // 如果c是斜边,判断是直角三角形(a+b)*(a+b) = c*c +2*a*b 
            int cheng = 2;
            if(a != max){
                cheng = cheng*a;
            }
            if(b != max){
                cheng = cheng*b;
            }
            if(c != max){
                cheng = cheng*c;
            }
            if((a+b+c-max)*(a+b+c-max) == max*max+cheng){
                printf("yes");
            }else{
                printf("no");
            }
        }else{
            printf("not a triangle");
        }
        return 0;
    }
    
  8. 输入年份,判断是否为闰年,如果是,则输出yes,否则输出no。
    #include<stdio.h>
    
    int main()
    {
      int a;
      scanf("%d", &a);
      if(a%4 == 0 && a%100 != 0){
          printf("yes");
      }else{
          printf("no");
      }    
      return 0;
    }  
    
  9. int 的最大值最小值?
    #include<stdio.h>
    
    int main()
    {
        int a;
        a = 1;
        while(a+1>0){
            a++;
        }
        printf("int max: %d", a);
        a = -1;
        while(a-1<0){
            a--;
        }
        printf("int min: %d", a);
        return 0;
    }
    
  1. double 最多精确到小数点多少位?
    #include<stdio.h>
    
    int main()
    {
        double a;
        a = 4.0;
        printf("%.30f", a/3.0);
        return 0;
    }
    
  1. double最大正数值,最小正数值?
    思路,最小正数值,就是即将变为0的特别小的值,根据上一问题,最多精确到小数点后16位,最小值也就是0.0000000000000001
    最大值目前还不清楚,,,
  2. 逻辑运算符的优先级
    #include<stdio.h>
    
    int main()
    {
      int a, b, c;
      a = 1;
      b = 1;
      c = 0;
    // printf("%d", a || (b && c));
      printf("%d", a || b && c);
      return 0;
    }
    
    加不加括号都一样,表明逻辑与比逻辑或优先级高
  3. if(a)if(b)x++;else y++;的确切含义?
    else是与第二个if配对,if没有大括号时只会执行下一条语句,如果没有特殊情况不会执行第二条指令,但是由于此题中if的下一条语句是if根据判断执行相应的x++或y++。
个人感受

学完这一章收获还是不小的吧,之前也是学过c语言的,忘了差不多了,今天从头开始学,学到了很多以前不会的地方,加油!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。