2022年7月7日 星期四

algorithm

 #include <iostream>

#include <string.h>

using namespace std;

int main(int argc, char** argv) 

{

for(int j=2;j<=100;j++)//j=4

{

bool prime =true;

for(int i=2 ;i<=j/2;i++)//i=2 2<=4/2=2

{                       / 

if(j%i==0)//4%2=0

{

prime=false;

break;//跳出整個loop 

}

}

if(prime)

{

cout<<j<<"\t";

}

}


return 0;

}

2022年7月2日 星期六

迴文

 #include <stdio.h>//基本輸入輸出指令 

#include <stdlib.h>

#include <string.h>//字串長度要引入字串標頭檔 

int main(int argc, char *argv[]) 

{

int T;//根據題目要讀幾筆測資 Test

char S[101];//不超過100+反斜線0 

scanf("%d",&T) ;

while(T--)

{

scanf("%s",S);//字串變數不用加& 

int L=strlen(S);

int i=0,j=L-1;//i指到最前 j指到最後=字串長度-1 

int Yes=1;

while(i<j)//什麼條偉要繼續比較   i=j 或 i>j 

{

if(S[i]!=S[j])//判斷,一開始先假設yes, 

{

Yes=0;//發現有一個不一樣,就no不用比把1改0 

break;//脫離loop 

}

i++;//i<j繼續判斷 

j--;

}

if(Yes==1)//1就是回文 

{

printf("yes\n");//yes是小寫 

}

else

{

printf("no\n");

}

}

return 0;

}

印出星星


 

#include <stdio.h>

int main()

{

    int star;

    scanf("%d",&star);

    int i,j;

    for (i=0; i<star; i=i+1) //外loop5層 

{

        for (j=0; j<star-i; j=j+1) {

            printf (" "); 

        }

        for ( j=0; j<=i; j=j+1) { 

            printf ("* ");

        }

        printf ("\n");

    }   

    return 0;

印星星

 #include <stdio.h>

int main()

{

    int space = 4;//印空白 

    int star = 1;//印出星星 

    int i,j;

    for (i=1; i<=5; i=i+1) //外loop5層 

{

        for (j=1; j<=space; j=j+1) {

            printf (" "); 

        }

        for ( j=1; j<=star; j=j+1) { 

            printf ("* ");

        }

        printf ("\n");

        space = space - 1;//空候每次減1 

        star = star + 1;//控制星星的數量 

    }   

    return 0;

}

2022年7月1日 星期五

二進制轉十進制

 #include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

char arr[1001];//創建一個陣列char arr[1001]用來接收要轉換進制的數。(注意是char類型的陣列哦)

while (gets(arr) != 0)

{

int len, i, sum = 0, num, j;//初始化變數。num是每一位的數值,sum是每一位數值最後的加和。

len = strlen(arr);//len是輸入的字元陣列的長度。

for (i = 0; i < len; i++)

{

num = 1;

if (arr[i] == '1')//如果位上是1那麼就進行次方運算,如果是0的話就不用管(0不參與計算)

{

for (j = 1; j <= len - i - 1; j++)//j是每一位上的2的次方的個數。陣列要在扣1 

{

num = num * 2;

}

sum = sum + num;//sum就是最後的十進位的值。

}

}

printf("%d\n", sum);

}

return 0;

}

直角巴斯卡三角形



 #include <stdio.h>

int main(void)

{

int A[100][100];

A[0][0]=1;

printf("%d",A[0][1]);

int i,j;

for(i=1;i<100;i++)

{

A[i][0]=1;

for(j=1;j<100;j++)

{

A[i][j]=A[i-1][j]+A[i-1][j-1];

}

}

int n;

scanf("%d",&n);

for(i=0;i<=n;i++)

{

for(j=0;j<=i;j++)

{

printf(" %d",A[i][j]);

}

printf("\n");

}

return 0;

}


巴斯卡三角形

 //https://tonytonyjan.net/2010/10/27/44/

#include<stdio.h>

void pascal(int n)

{

if(n>20 || n <1)

{

printf("range: 1~20");

}

int buf[20]={1};

int i, j;

for(i=0;i<n;i++)//i=0 j=0 

{

for(j=i;j>0;j--) 

{

buf[j] = buf[j] + buf[j-1];//存放1 11 121 

}

for(j=0;j<n-i;j++)

{

printf("     ");

}

for(j=0;j<=i;j++) 

{

printf("%5d", buf[j]);

}

printf("\n");

}

}

int main(void){

int in;

while(1)

{

printf("Give me a number 1~20: ");

scanf("%d", &in);

pascal(in);

}

return 0;

}

gcd lcm求法

 #include <stdio.h>

int getgcd(int a, int b)

{

int temp ;

if(b>a)

{

temp =a;

a=b;

b=temp;

}

int r=a%b;

while(r !=0)

{

a=b;

b=r;

r=a%b;

}

return b;

}

int main() 

{

int x,y;

    scanf("%d %d",&x,&y);

    int gcd=getgcd(x,y);

    int lcm;

lcm=x*y/gcd;

printf("%d %d",gcd,lcm);

印出1~7000的質數

 #include <stdio.h>



int main() 

{

int prime[7001];

int i;

for(i=0;i<=7000;i++)

{

prime[i]=1;

}

prime[0]=0;

prime[1]=0;

for(i=2;i<=7000;i++)

{

if(prime[i]==1)

{

int j;

for(j=i*2;j<=7000;j=j+i)//印出2(3、4....)數的倍數 

{

prime[j]=0;

}

}

}

int T;

scanf("%d",&T) ;

while(T--)//測式幾筆 

{

int A,B;

scanf("%d %d",&A,&B);

int money=0;//一開始價錢設為0 

for(i=A;i<=B;i++)//A到B之間 

{

if(prime[i]==0)//如果不是質數 

{

money=money+i;//價錢=價錢+非質數 

}

}

printf("%d\n",money);

}

    return 0;

2022年6月30日 星期四

巴斯卡三角形

 //https://openhome.cc/zh-tw/algorithm/basics/pascal-triangle/

#include <stdio.h>

int combi(int r, int n){

    int p = 1;

    int i;

    for(i = 1; i <= n; i++) {

        p = p * (r - i + 1) / i;

    }

    return p;

}


int main() {

int HEIGHT;

scanf("%d",&HEIGHT);

    int r;

    for(r = 0; r < HEIGHT; r++) {

        char format[5];            

        sprintf(format, "%%%ds", (HEIGHT - r) * 3);

        printf(format, "");

        int n;

        for(n = 0; n <= r; n++) {

            printf("%6d", combi(r, n));

        }

        printf("\n");

    }

    return 0;

遞迴函數介紹(以費式數列為例)

 /*

 Fibonacci Sequence

 費式數列 :1 1 2 3 5 8 13 24 34 55 89 ....?

 第n項     1 2 3 4 5 6  7  8  9 10 11 ....n

 規則:

 第1項為1

 第2項為1

 第3項=第2項(前項)+第1項(前前項)  

 第4項=第3項+第2項 

 ...

 第n項(第3項為前2項之和)=第n-1項+第n-2項 

*/

#include <stdio.h>

#include <stdlib.h>

int F(int n)

{

if(n==1 || n==2) 

   return 1;

else 

   return F(n-1)+F(n-2);

   /*n=4

      F(3) +F(2)

   /     

     F(2)+F(1)

       1 +  1

   */

}

int main(int argc, char *argv[])

{

int n;

scanf("%d",&n);

int ans=F(n);

printf("%d\n",ans);

return 0;

}

點心+ 飲料 總共需要多少錢

 #include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

int N;

scanf("%d",&N);

while(N--)//輸入3 321   0(不成立就跳出loop) 

{

int a,b;

scanf("%d %d",&a,&b);

printf("%d\n",(a+b)*2);

}

return 0;

}

一定中大樂透

 #include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

while(1)

{

int N,M;

scanf("%d %d",&N,&M);

if(N==0 && M==0)

break;

if((N%2==0 && M%2==0) || (N%2==1 && M%2==1))

{

printf("Win\n");

}

else 

{

printf("Loss\n");

}

}

return 0;

}

打印半金字塔數字https://www.educba.com/number-patterns-in-c/

 

#include<stdio.h>

#include<conio.h>

int main()

{

int n, i, j;

printf("Enter the number of rows: ");

scanf("%d",&n);

for(i = 1; i <= n; i++)//跑n遍 i跑1遍j跑1遍

{

for(j = 1; j <= i; j++)//

{

   printf("%d",i);//印外loop的數字 1 22 333 4444

}

printf("\n");

}

return 0;

}

打印半金字塔數字

 


#include<stdio.h>
#include<conio.h>
int main()
{
int n, i, j;
printf("Enter the number of rows: ");
scanf("%d",&n);
for(i = 1; i <= n; i++)//外loop優先順序先 
{
for(j = 1; j <= i; j++)//左邊不用印空白 
{
   printf("%d",j);
}
printf("\n");
}
    return 0;
}

打印數字金字塔圖案

 

#include<stdio.h>

#include<conio.h>

int main()

{

int n, i, j;

printf("Enter the number of rows: ");

scanf("%d",&n);

for(i = 1; i <= n; i++)//1~n列 

{

  for(j = n; j >= i; j--)//每一列連續印n個空白 3 2 1個空白 列每增加1列空白就少一格

  {

    printf(" ");

  }

  for(j = 1; j <= i; j++)//印數字 

  {

  printf("%d ",j);//印完數字要加空白 

  }

printf("\n");

}

    return 0;

}

英文三角形

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]) 

{

int row=6;

char ch;

int i;

for(i=0;i<row;i++) 

{

for(ch=('A'+i);ch<('A'+6);ch++)

{

printf("%c",ch);

}

printf("\n");

}

return 0;

}

10進制轉2進制

 

#include<stdio.h>
int main() {
    int i = 0, n, a[100];
    printf("請輸入一個十進制整數.\n");
    scanf("%d", &n);
    while (n > 0) 
{
        a[i] = n % 2;//128除2取餘數0 
        n = n / 2;//128除2
        i ++;//每進來一次,次數加1 
    }
    printf("%d",i);
    printf("十進制整數轉換為二進制數是:\n");
    for (i--; i >= 0; i--)//就看連除法,除幾遍例128 10000000 從後面開始取到最前面1個字,陣列索引是0
        printf("%d", a[i]);
    printf("\n");
    return 0;
}


bubble sort

 #include <stdio.h>

#include <stdlib.h>

#include <string.h>

//反轉字串,用一維陣列即可求解 

int main(int argc, char *argv[]) 

{

int  n[10];

int i,j;

for(i=0;i<10;i++)

{

scanf("%d",&n[i]);

}

for(i=0;i<10;i++)

{

for(j=0;j<10-i;j++)

{

if(n[j]>n[j+1])

{

  int temp =n[j];

  n[j]=n[j+1];

  n[j+1]=temp;

}

}

}

int x;

for(x=0;x<10;x++)

{

printf("%d ",n[x]);

}

return 0;

}

2022年6月29日 星期三

反轉字串



 


#include <stdio.h>

#include <stdlib.h>

#include <string.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//反轉字串,用一維陣列即可求解 

int main(int argc, char *argv[]) 

{

int i;

char a[101];//不能用int只能用字元

scanf("%s",a);//string輸入一串字

int length=strlen(&a[0]);//L=Length 123 長度為3 

for(i=length-1;i>=0;i--)//a[0] a[1] a[2]陣列最大為長度-1 

{

printf("%c",a[i]);//印最後一個 印最後第二個 印1個剛好 

}

return 0;

}

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...