• 竞赛入门


    编译带数学库源程序 gcc xxx.c -o xxx -lm

    测试本机各种数据类型的位数

    printf("%d",sizeof(int))
    printf("%d",sizeof(char))
    printf("%d",sizeof(float))
    printf("%d",sizeof(double))
    

      

    输入正整数n,输出n度的正弦、余弦值

     1 #include <stdlib.h>
     2 #include <math.h>
     3 #include <stdio.h>// 消除链接库问题
     4 int main()
     5 {
     6   int a;
     7 scanf("%d",&a);
     8 double c=(a*3.14159/180); // 角度转弧度 
     9 double b=sin(c);
    10   printf("%.3lf
    ",b);
    11 }

     问题 scanf("%lf%lf%lf%lf",&a,&b,&c,&d)得出的abcd有问题 输入0011 输出0 1.870 1.870 0

    用printf输出浮点型不能控制小数位数

    问题 printf("%.3lf" ,a) 输入1.4142144 输出1.4144

     1 scanf("%d
    ", &i);           格式串中有
    ,所以需要输入两次回车才能继续;
     2 
     3 scanf("%2d%2d", &i, &j);     %2d指整形占用两位,所以当输入1234时, 12被赋值给i, 34被赋值给j;
     4 
     5 float f;  scanf("%4.1f", f);  scanf的格式串中没有类似小数位数的格式,所以这样的输入经常会导致输入错误;
     6 
     7 输入一个double型浮点数,怎么会不管怎么输入都得不到正确的结果
     8 
     9 #include <stdio.h>
    10 
    11 int main()
    12 {
    13     double d;
    14     scanf("%f", &d);
    15     printf("%f
    ", d);
    16     return 0;
    17 }
    18 这个问题在于, scanf格式中的%f表示输入的是一个float类型,在笔者的平台上是4字节的,而实际上却被保存在double类型变量中,所以它被保存到变量d的低4个字节中(intel小端),但是整个double变量的值却和低4个字节的值根本不能直接运算,可以参考IEEE 754关于浮点数的标准。解决这个问题不复杂,只需要将格式%f改为%lf即可
    19 scanf用于输入字符,但是第二个需要输入的字符却使用不正确,为什么呢?
    20 #include <stdio.h>
    21 
    22 int main()
    23 {
    24     char ch1, ch2;
    25     scanf("%c%c", &ch1, &ch2);
    26     printf("|%c|%c|
    ", ch1, ch2);
    27     return 0;
    28 }
    29 因为在输入a后的回车也被当做了一个字符用于存储在b当中导致的。记得,scanf在输入整形、浮点型等数据的时候可以忽略回车、空格、制表符等字符,但是输入格式为%c的时候就不这样了,此时它会很认真。所以,将输入的代码改为scanf("%c
    %c", &ch1, &ch2);
    假如定义的变量是int,但scanf确实%lf 也会导致输入出问题

    %s,通常配对使用的是开辟一个char 型数组读入标准输入流中的一个字符串存入数组中,并且添加结束标记'/0'填入到读入的最后一个字符末尾中,可以用数组下标访问字符串的每一个成员
    %c,读入单个的字符
    char s[10]
    printf("%s",s) //输出一个字符串
    for(i=0;i<strlen(s);i++
    printf("%c",s[i])//输出字符串


    sscanf函数用法

     1 int main()
     2 {
     3 char *s="11:22:33"; //注意这里,要声明为指针变量不然会出错
     4   int HH,MM,SS;
     5   sscanf(s,"%02d:%02d:%02d",&HH,&MM,&SS);
     6   printf("%d",HH);
     7 
     8   return 0;
     9 
    10 }
  • 相关阅读:
    Python开发——数据类型【字典】
    Python开发——数据类型【元祖】
    Python开发——数据类型【列表】
    Python开发——基础
    Python开发——数据类型【运算符】
    c#中IList<T>与List<T>
    观察者模式(Observer Pattern)
    中介者模式(Mediator Pattern)
    策略模式(Strategy Pattern)
    命令模式
  • 原文地址:https://www.cnblogs.com/been/p/4063059.html
Copyright © 2020-2023  润新知