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;

algorithm

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