閱讀32 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【C/C++學院】(1)分支結構/熊貓燒香/自我刪除/switch/循環結構/break/contine/goto/遞歸

1.if-else分支結構

void run(int n)
{
    if (1 == n)
    {
        system("taskkill /f /im 360se.exe");//關閉360進程
    }
    else if (2 == n)
    {
        system("shutdown -s -t 60");//60s後關機
    }
    else if (3 == n)
    {
        system("msconfig");//打開係統配置
    }
    else if (4 == n)
    {
        while (1)
        {
            malloc(1024 * 1024);//1M內存,不斷吃直到卡死
        }
    }
    else if (5 == n)
    {
        system("shutdown -a");//取消關機
    }
    else if (6 == n)
    {
        ShellExecuteA(0, "open", "https://www.baidu.com", 0, 0, 3);//打開網址
    }
    else if (7 == n)
    {
        system("echo 小夥你中木馬了");
    }
    else
    {
        system("tasklist");//顯示所有的進程
    }
}  

2.獲取隨機數

#include <time.h>//使用時間數據類型 time_t
time_t ts;//時間的變量
srand((unsigned int)time(&ts));//time是一個函數,獲取時間保存結果ts中
int sNum = rand();//獲取隨機數


3.熊貓燒香

熊貓燒香灰鴿子不同,這是名副其實的病毒,是一種經過多次變種的“蠕蟲病毒”變種,2006年10月16日由25歲的中國湖北武漢新洲區人李俊編寫,擁有感染傳播功能,2007年1月初肆虐網絡,它主要通過下載的檔案傳染,受到感染的機器文件因為被誤攜帶間接對其它計算機程序、係統破壞嚴重。2013年6月病毒製造者張順和李俊夥同他人開設網絡賭場案,再次獲刑。

4.自我刪除

寫一個bat,批處理文件
selfdel.bat
文件內容為:
del path\selfdel.bat

5.解一元二次方程                                                                                                                                                                                                         

//#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)//去掉安全檢查
#include <stdio.h>
#include <stdlib.h>
void calc(int a, int b, int c)
{
    if (a == 0)//bx+c=0
    {
        if (b == 0)//c=0
        {
            if (c == 0)
            {
                printf("x為任意值\n");
            }
            else
            {
                printf("無解\n");
            }
        }
        else//x=-c/b
        {
            printf("x=%f\n",-1.0*c/b);
        }
    }
    else//ax^2+bx+c=0
    {
        int B24AC = b*b - 4 * a*c;
        printf("B24AC = %d\n", B24AC);
        float B_2A = -1.0*b / 2 / a;
        printf("B_2A = %f\n", B_2A);
        if (B24AC == 0)
        {
            printf("x1=x2=%f\n", B_2A);
        }
        else if (B24AC > 0)
        {
            float TmpSqrt = sqrt(B24AC)/2.0/a;
            printf("x1=%f,x2=%f\n", B_2A + TmpSqrt, B_2A - TmpSqrt);
        }
        else//B24AC < 0
        {
            float TmpSqrt = sqrt(-1*B24AC) / 2.0 / a;
            printf("x1=%f+%fi,x2=%f-%fi\n", B_2A , TmpSqrt, B_2A, TmpSqrt);
        }
    }
}
int main()
{
    int a = 0, b = 0, c = 0;
    printf("please input a, b, c:\n");
    scanf("%d %d %d", &a, &b, &c);
    printf("%dx^2+%dx+%d=0\n", a, b, c);
    printf("解為:\n");
    calc(a, b, c);
    system("pause");
    return 0;
}  


6. switch                                                                                                                                                                                                        

int num;
char ch;
float fl;
double db;
switch(num)//成立
{

}
switch(ch)//成立
{

}
switch(fl)//錯誤
{

}
表達式必須包含整形

7.循環結構                                                                                                                                                                                                           

cmd中敲入命令:
for /l %i in (1,1,5) do echo gogogo
for /? 查看幫助

for,while, do-while, 
1加到100; 

#include <stdio.h>
void addfor()
{
    int sum = 0;
    for (int i = 1; i <= 100; i++)
    {
        sum += i;
        printf("i=[%d], sum=[%d]\n", i, sum);
    }
}
void addwhile()
{
    int n = 1;
    int sum = 0;
    while (n <= 100)
    {
        sum += n;
        printf("n=[%d], sum=[%d]\n", n, sum);
        n++;
    }
}
void adddowhile()
{
    int sum = 0;
    int n = 1;
    do
    {
        sum += n;
        printf("n=[%d], sum=[%d]\n", n, sum);
        n++;
    }while (n<=100);
}
void main()
{
    adddowhile();
    system("pause");
} 

2的n次方;

#pragma warning(disable:4996)
#include <stdio.h>
void funfor()
{
    int n = 0;
    int iRes = 1;
    printf("please input n:\n");
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        iRes = iRes * 2;
    }
    printf("2的%d次方=%d\n", n, iRes);
}
void funwhile()
{
    int n = 0;
    int iRes = 1;
    printf("please input n:\n");
    scanf("%d", &n);
    printf("2的%d次方=", n);
    while (n>0)
    {
        iRes = iRes * 2;
        n--;
    }
    printf("%d\n", iRes);
}
void fundowhile()
{
    int n = 0;
    int iRes = 1;
    printf("please input n:\n");
    scanf("%d", &n);
    printf("2的%d次方=", n);
    do
    {
        if (n != 0)
        {
            iRes = iRes * 2;
        }        
        n--;
    } while (n > 0);
    printf("%d\n", iRes);
}
void main()
{
    fundowhile();
    system("pause");
}  

 整數逆序輸出;
#pragma warning(disable:4996)
#include <stdio.h>
void main()
{
    int ShuZi = 0;
    printf("please input n:\n");
    scanf("%d", &ShuZi);
    printf("----------------------\n");
    int WeiShu = 0;
    while (ShuZi)
    {
        printf("%d", ShuZi % 10);
        ShuZi = ShuZi / 10;
    }    
    system("pause");
}  

8. break                                                                                                                                                                                                                  

節約計算機資源,找到就退出循環。
窮舉法;
//316 = 11 * x + 15 * y;
#include <stdio.h>
void main()
{
    int x = 0;
    for (x = 0;; x++)
    {
        if( (316 - 11 * x )% 15 == 0)
        {
            printf("%d,%d\n", x, (316 - 11 * x)/15);
            break;
        }
    }
    system("pause");
}  

9.continue                                                                                                                                                                                                              

停止當前循環,進行下一次。
打印不能被3整除的數字
#include <stdio.h>
void main()
{
    for (int i = 1; i <= 100; i++)
    {
        if (i % 3 == 0)
        {
            continue;
        }
        printf("%d\n", i);
    }
    system("pause");
}  

10.goto                                                                                                                                                                                                                     

死循環
1加到100
#include <stdio.h>
void main()
{
    int i = 1;
    int sum = 0;
loop:
    if (i<=100)
    {
        sum += i;
        printf("%d,%d\n", i, sum);
        i++;
    }
     goto loop;
     system("pause");
}  

11.遞歸                                                                                                                                                                                                                   

//10進製轉2進製 
 #define _CRT_SECURE_NO_WARNINGS
//10進製轉2進製
#include <stdio.h>
#include <stdlib.h>
void change2(int n)
{
    if (n == 1)//終止循環條件
    {
        printf("%d", n);
    }
    else
    {
        change2(n / 2);
        printf("%d", n%2);
    }
}
void main()
{
    int num = 0;
    printf("please input:\n");
    scanf("%d", &num);
    change2(num);
    system("pause");
}


最後更新:2017-04-03 16:48:53

  上一篇:go 【C大事】第二講:對話框程序
  下一篇:go Android軟件架構及子係統介紹