週報2【C語言】【Web安全】

賈四嫦發表於2020-11-29

週報2
1.輸入一個整數x,如果x是奇數,輸出x,如果x是偶數,輸出比x大的第一個奇數。
第一種最容易想到的程式碼:

#include <stdio.h>
int main(void)
{
    int x;
    scanf("%d",&x);
    if(x%2){
    printf("%d",x);
    }
    else{
    printf("%d",x+1);
    }
    return 0;
 }

優化(省去else的執行語句,但改變了x的值):

#include <stdio.h>
int main(void)
{
    int x;
    scanf("%d",&x);
    if(!(x%2)){
    x+=1;
    }
    printf("%d",x);
    return 0;
 }

再優化(省去if語句,沒有改變x的值):

#include <stdio.h>
int main(void)
{
   int x;
   scanf("%d",&x);
   printf("%d",x+!(x%2));
   return 0;
}

多項式求和
樣例

#include <stdio.h>
#include <math.h>
#define MAXN 10
double f(int n,double a[],double x)
{
   int i;
   double add=0.0;
   for(i=0;i<n+1;i++){
	   add+=a[i]*pow(x,i);
   }
   return add;
}
int main(void)
{
   int n,i;
   double a[MAXN],x;
   scanf("%d%lf",&n,&x);
   for(i=0;i<n+1;i++){
	   scanf("%lf",&a[i]);
   }
   printf("%.1f",f(n,a,x));
   return 0;
}

本題要求統計一個整型序列中出現次數最多的整數及其出現次數。

#include <stdio.h>
int main(void)
{
    int n,i,j,sum,x,m;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0,m=0;i<n;i++)
    {
        sum=0;
        for(j=0;j<n;j++)
        {
            if(a[i]==a[j])
            {
                sum++;
            }
        }
         if(sum>m)
            {
                m=sum;
                x=i;
            }
    }
    printf("%d %d",a[x],m);
    return 0;
}

本題要求編寫程式,對順序讀入的n個整數,順次計算後項減前項之差,並按每行三個元素的格式輸出結果。
輸入的第一行給出正整數n(1<n≤10)。隨後一行給出n個整數,其間以空格分隔。
順次計算後項減前項之差,並按每行三個元素的格式輸出結果。數字間空一格,行末不得有多餘空格。``

#include <stdio.h>
int main(void)
{
    int n,i,cnt=1;
    scanf("%d",&n);
    int a[10];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
    {
        a[i]=a[i+1]-a[i];
    }
    printf("%d",a[0]);
    for(i=1;i<n-1;i++)
    {
        if(cnt==3)
        {
            printf("\n%d",a[i]);
            cnt=0;
        }
        else
            printf(" %d",a[i]);
        cnt++;
    }
    return 0;
}

有序數列插入整數後依然有序輸出

#include <stdio.h>
int main(void)
{
    int n,i,j;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int x;
    scanf("%d",&x);
    i=0;
    while(a[i]<x&&i<n)
        i++;
            for(j=n-1;j>i-1;j--)
            {
                a[j+1]=a[j];
            }
            a[i]=x;
    for(i=0;i<n+1;i++)
    printf("%d ",a[i]);
    return 0;
    }

本題要求編寫程式,找出給定的n個數中的最大值及其對應的最小下標(下標從0開始)。

#include <stdio.h>
int main(void)
{
    int n,i,k;
    scanf("%d",&n);
    int a[10];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
    {
        if(a[0]<a[i])
        {
            a[0]=a[i];
            k=i;
        }
        else if(a[0]==a[i])
        {
            if(k>i)
            {
                k=i;
            }
        }
    }
	printf("%d %d",a[0],k);
	return 0;
}

輸出滿足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多餘空格。
給定不超過6的正整數A,考慮從A開始的連續4個數字。請輸出所有由它們組成的無重複數字的3位數。

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

#include <stdio.h>
int main(void)
{
    int a,x,y,z,cnt=0;
    scanf("%d",&a);
    for(x=a;x<=a+3;x++)
    {
        for(y=a;y<=a+3;y++)
        {
            for(z=a;z<=a+3;z++)
            {
                if(x!=y&&x!=z&&y!=z)
                {
                    printf("%d%d%d",x,y,z);
                    cnt++;
                if(cnt==6)
                {
                    printf("\n");
                    cnt=0;
                }
                else
                    printf(" ");
                }
            }
        }
    }
    return 0;
}

Web安全深度剖析學習:

第1章 Web安全簡介

1.網際網路中伺服器如何被攻擊者入侵:
必需條件:攻擊者的計算機與伺服器必須能夠正常通訊
伺服器提供各種服務供客戶使用,是依靠(或者說計算機提供的服務)與客戶端通訊的,攻擊者入侵也是靠

2.Web強大的要點:
優秀的Web應用程式的設計者設計程式,程式語言將這些設計變為真實的存在,與資料庫連線,讓資料庫儲存好這些資料,Web容器作為終端解析使用者請求和指令碼語言。

3.HTML文件:
當使用者通過統一資源定位符(URL)訪問Web時,最終看到的是Web容器處理後的內容,即HTML文件。

4.攻擊者在滲透伺服器時的三種直接對目標下手的手段:
(1).C段滲透:
攻擊者通過滲透同一網段內的一臺主機對目標主機進行ARP等手段的滲透。
(2).社會工程學
(3).Services:直接針對服務進行溢位

第2章 深入HTTP請求流程

1.HTTP協議解析:
HTTP(HyperText Transfer Protocol)即超文字傳輸協議,是一種詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則,它是全球資訊網交換資訊的基礎,它將允許HTML(超文字標記語言)文件從Web伺服器傳送到Web瀏覽器。

2.發起HTTP請求:
(1).瀏覽器位址列輸入URL(統一資源定義符)
URL也被稱為網頁地址,是網際網路標準的地址。
格式:協議://伺服器IP[:埠]/路徑/[?查詢]
例如:http://www.xxser.com/post/httpxieyi.html
(2)Linux系統中的curl命令
在Windows中,也可用curl.exe工具(不自帶,需下載)來發起請求,通過curl+URL命令

3.HTTP協議詳解:
HTTP是一種無狀態協議,無狀態是指Web瀏覽器與Web伺服器之間不需要建立持久的聯絡,這意味著當一個客戶端向伺服器發出請求,然後Web伺服器返回響應(Response),連線就被關閉了,在伺服器端不保留連線的有關資訊。也就是說,HTTP請求只能由客戶端發起,而伺服器不能主動向客戶端傳送資料。

相關文章