• [c/c++] programming之路(6)、ASCII码,数据类型、随机数、字符转换及拼接等


    一、变量

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main0(){
     5     //数据使用必须在范围内,否则产生溢出
     6     unsigned short num=65535+1;//+1之后溢出为0
     7     //printf("%d",sizeof(num));
     8     printf("阿飞有%d元",num);
     9     getchar();
    10 }
    11 
    12 void main1(){
    13     short num=32767+1;//+1之后溢出为-32768
    14     printf("阿飞有%d元",num);
    15     getchar();
    16 }
    17 
    18 void main2(){
    19     //printf的本质是按照自己的方式,将变量转换为字符串,无论变量以前是什么类型,而且printf不会自动转换
    20     printf("%d",1);//%d整数
    21     printf("
    %f",1);//%f实数    打印出0.000000  1改成1.0之后打印正确
    22     getchar();
    23 }
    24 
    25 void main3(){
    26     //使用printf打印的时候,必须要类型匹配,否则出错
    27     printf("%d,%u",-1,-1);//%d有符号十进制,%u无符号十进制
    28     getchar();
    29 }
    30 //能编译,不能保证结果正确
    31 void main(){
    32     printf("%d",-10);//正确
    33     printf("
    %u",-10);//错误
    34     printf("
    %x",-10);//无符号16进制,错误
    35     printf("
    %o",-10);//无符号8进制,错误
    36     getchar();
    37 }

     二、随机数

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 
     5 void main(){
     6     //三目运算符:0就执行notepad,非0执行calc
     7     //-1?system("calc"):system("notepad");
     8     int num=rand()%100;//0~99的随机数
     9     printf("%d
    ",num);
    10     num>80?printf("你赢了"):printf("你输了");
    11     getchar();
    12 }

    经过测试,上述代码只能产生一次随机数,即多次运行结果不变。那么如何让程序每次都产生不同的随机数呢?

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 
     5 void main(){
     6     int num;
     7     time_t t;//定义时间类型的变量
     8     //time是一个函数,获取时间,复制给t,转换为unsigned int类型
     9     srand((unsigned int)time(&t));
    10 
    11     num=rand()%100;//0~99的随机数
    12     num=rand()%100+100;//100~199的随机数
    13     printf("%d
    ",num);
    14     num>80?printf("你赢了"):printf("你输了");
    15     getchar();
    16 }

    三、随机恶作剧

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<windows.h>
     4 #include<time.h>
     5 
     6 _declspec(dllexport) void go1(){
     7     while(1){
     8         malloc(10*1024*1024);//10M
     9         Sleep(1000);
    10     }
    11 }
    12 
    13 _declspec(dllexport) void go2(){
    14     while(1){
    15         MessageBoxA(0,"马化腾邀请你共进晚餐","享受终生QQ红钻",0);
    16         Sleep(3000);
    17     }
    18 }
    19 
    20 _declspec(dllexport) void randgo(){
    21     int num;
    22     time_t t;
    23     srand((unsigned int)time(&t));
    24     num=rand()%100;
    25     num>60?go1():go2();
    26 }

    然后注射到程序中,实现恶作剧

    四、数据类型

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main()
     5 {
     6     int num=0;
     7     char ch='0';
     8     printf("%d,%c",num,num);
     9     printf("
    %d,%c",ch,ch);
    10     system("pause");
    11 }

    稍作修改如下

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main(){
     5     printf("%d",sizeof(4));//int的常量 4个字节
     6     printf("
    %d",sizeof(4.0));//double 8个字节
     7     printf("
    %d",sizeof(4.0f));//float 4个字节
     8     printf("
    %d",sizeof(4u));//unsigned int 4个字节
     9     getchar();
    10 }

     1 #include<stdio.h>
     2 
     3 void main(){
     4     //数据类型指明了二进制该如何解析
     5     int num1=10;
     6     float num2=10.0;
     7     printf("%x,%f",num1,num1);
     8     printf("
    %x,%f",num2,num2);
     9     printf("
    %x,%x",&num1,&num2);
    10     getchar();
    11 }

    五、三角形面积

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 
     5 void main(){
     6     float a,b,c,s,p;
     7     scanf("%f%f%f",&a,&b,&c);//数据输入,初始化a,b,c
     8     printf("a=%f,b=%f,c=%f
    ",a,b,c);
     9     p=(a+b+c)/2;
    10     s=sqrt(p*(p-a)*(p-b)*(p-c));//sqrt求平方根
    11     printf("面积s=%f",s);
    12     system("pause");
    13 }

    六、字符转换成整数

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main(){
     5     //字符0的编号是48,按照字符是0
     6     printf("字符0编号=%d,字符0的字符=&c",'0','0');
     7     printf("
    整数0编号=%d,整数0的字符=&c",0,0);
     8     printf("
    %d",'0'-0);//字符转换成整数
     9     printf("
    %d",'1'-1);//都等于48
    10     system("pause");
    11 }

    七、大小写转换

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main()
     5 {
     6     char ch=getchar();
     7     //putchar(ch+32);//大写->小写
     8     putchar(ch-32);//小写->大写
     9     system("pause");
    10 }

    八、字符串拼接

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main(){
     5     char str1[10]="note";
     6     char str2[10]="pad";
     7     char str3[10];
     8     sprintf(str3,"%s%s",str1,str2);
     9     system(str3);
    10     getchar();
    11 }
  • 相关阅读:
    (转)基于svnserve的服务器,权限文件authz配置的常见问题及解答
    How to merge two images into one using Actionscript
    Flash builder 4 (Flex builder 4) 正式版序列号生成器
    Linux安全配置步骤简述
    linux运行级别查看并更改研究
    Flex(flash)检测摄像头的3种状态(是否被占用,没安装摄像头,正常)
    推荐几个Adobe Flex Builder 3的插件(代码格式化和fms服务器通讯文件(main.asc)编写)
    OldHawk TODO on Unrealircd
    install flashpolicyd
    (转)谈linux安全设置
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7209836.html
Copyright © 2020-2023  润新知