【啓蒙】C筆記之初學階段(下篇)

下篇繼續點贊,謝謝老鐵,不存在下次必定的哈!html

 

c語言簡單判斷質數的方法

int isprime(int a){
    if(a==2) return 1;
    else if(a%2==0||a==0||a==1) return 0;
    else {
        for(int i=2;i<=sqrt(a);i++){
            if(a%i==0) return 0;
        }
    }
    return 1;
}
複製了記得點贊哦!

 

後續會更新線性篩法求質數!c++

記憶搜索法

記憶搜索法就是把算過的數據記錄到數組中,若是以前訪問過此數據點,直接拿來用就能夠了,減小了重複計算,這在後續學習DP頗有用!
 

一道可以體現初學者智慧的題目

給定任意n,輸出邊長爲n的菱形圖形。數組

 

 

 

 

 

 聰明的讀者能夠嘗試一下哦!app

 

 

 

#include <stdio.h>
#include <math.h>
int main()
{
    int n, x, y, t, g;
    scanf("%d", &n);
    for (y = -(n - 1);y <= (n - 1);y++)
    {//將數學的思惟帶入C語言中,作成了線性規劃,實在牛逼!!!!
        for (x = -(n - 1);x <= (n - 1);x++)
        {
            t = abs(x);
            g = abs(y);
            if (t + g <= (n - 1)) printf("*");
            else printf(" ");
        }
        printf("\n");
    }
    return 0;
}
複製了記得點贊哦!

 

此題充分利用了雙重循環+限制條件。ide

 

再來一個變形題,那麼這一次都應該會了吧!學習

作無意菱。測試

 

 

if(t+g==(n-1)) printf("*");//改改限制條件就行了!
感謝關注!!!

 

字典排序

 字典序法中,對於數字一、二、3......n的排列,不一樣排列的前後關係是從左到右逐個比較對應的數字的前後來決定的。例如對於5個數字的排列12354和12345,排列12345在前,排列12354在後。按照這樣的規定,5個數字的全部的排列中最前面的是12345,最後面的是54321。spa

 

首先普及一個知識點(摘自百度百科)3d

extern int strcmp(const char *s1,const char *s2);
當s1<s2時,返回爲負數;
當s1=s2時,返回值= 0;
當s1>s2時,返回正數。
即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現不一樣的字符或遇'\0'爲止。

下面給出代碼:code

#include<stdio.h>
#include<string.h>
char ch[6][5] = { "a","ac","ab","aeg","aef" };
void order() {//用了選擇排序,其實就是按ASCII碼從小到大排序
    char temp[10];
    for (int i = 0;i < 4;i++) {
        int a = i;
        for (int j = i + 1;j < 5;j++) {
            if (strcmp(ch[a], ch[j]) > 0) a = j;
            //後面的字符比前面的大
        }
        if (a != i) {
            strcpy(temp, ch[a]);
            strcpy(ch[a], ch[i]);
            strcpy(ch[i], temp);
        }
    }
}
//排序記住一個原則就行了,用盡全部手段讓其回到它該在的位置,這對於後面的快速排序頗有幫助。

int main() {
    order();
    for (int i = 0;i < 10;i++) {
        printf("%s ", ch[i]);
    }
    return 0;
}
以爲能夠就點個贊吧!

 

 

使用int類型的數據保存字符串數字

for(c=1;c<=m;c++)
{   
    for(d=1;d<=n;d++) { scanf("%1d",&mapp[c][d]); } } 

 

求三個數中的最大值

#include<stdio.h>
int main(){
    int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a; if(max<b) max=b; if(max<c) max=c; printf("%d",max); return 0; }

簡單升級版

int compare(int a,int b,int c){
    int r;
    r=a>b?a:b;
    return r>c?r:c;
}
推薦給你的朋友們吧!

 

 

用遞歸求n!

#include<stdio.h>
int main()
{
    int fac(int n);
    int n,y;
    printf("輸入一個整數階乘:");
    scanf("%d",&n);
    y = fac(n);
    printf("%d!=%d\n",n,y);
    return 0;
}
 
int fac(int n)
{
    int f;
    if(n<0)
        printf("n<0,數據錯誤");
    else if(n == 0||n == 1)
        f = 1;
    else f = fac(n-1)*n;
    return(f);
}
感謝關注!!!

 

 

求N個數 的最小公倍數 

 

普及知識點:最小公倍數=兩整數的乘積÷最大公約數

全是乾貨!

 

求漢字數量

先來作一個例題測測你水不水!

http://www.51cpc.com/problem/4025

題解:

http://www.javashuo.com/article/p-bsozmtvk-cx.html

漲知識了吧!

 

數學思惟經典題

試統計正整數n的階乘n!=1×2×3×…×n尾部連續零的個數。

提交題目點:http://www.51cpc.com/problem/4018

這題用模擬的思路寫的話代碼可能很長,可是用數學的思惟去想的話代碼仍是很簡單滴。

我的題解:http://www.javashuo.com/article/p-qwjvjfvu-q.html

小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。 小朋友來買糖的時候,他就用這兩種包裝來組合。固然有些糖果數目是沒法組合出來的,好比要買 10 顆糖。 你能夠用計算機測試一下,在這種包裝狀況下,最大不能買到的數量是17。大於17的任何數字均可以用4和7組合出來。 本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。

提交題目點:http://www.51cpc.com/problem/4051

 這題用數學公式一下就寫出來了,用正常代碼寫就不必定咯。

看看個人題解,告訴你,如何在不知道數學公式的狀況下,寫出這題。

我的題解:http://www.javashuo.com/article/p-pnqzhayd-bz.html

 

喜歡就點個推薦或者收藏吧!

相關文章
相關標籤/搜索