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;

}

111年資訊科教甄上榜人員

 


字串反轉

 #include <stdio.h>

#include <stdlib.h>

#include <string.h>

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

{

int i;

char a[101];

scanf("%s",a);

int length=strlen(a);//abc字串長度=3 

for(i=length-1;i>=0;i--)//從最大-1,因為陣列是從0開始 

{

printf("%c",a[i]);//一個字一固字印所以用%c 

}

printf("\n");

return 0;

}

求hcf

 #include <stdio.h>

#include <stdlib.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 num1,num2;

int i;

scanf("%d %d",&num1,&num2);

int hcf=1;

int min=num1;//  2  1

if(num1>num2)

min=num2;

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

{

if(num1%i==0 && num2%i==0)

{

hcf=i;

}

}

printf("%d",hcf);

return 0;

}

2022年6月28日 星期二

亂數產生10個數字,由小排到大

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

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

{

srand(time(NULL));

int table[10]={0};//一維陣列要填index, 不填會screen會出現一片黑 

int k;

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

{

table[k]=rand()%100+1;

}

int i,j;

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

{

for(j=0;j<10-i;j++)//bubble sort要雙回圈,不可單loop big O(n的平方) 

{

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

    {

  int temp=table[j];

  table[j]=table[j+1];

  table[j+1]=temp;

    }

        }

}

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

{

printf(" %2d ",table[i]);

}

return 0;

}

bubble sort 練習

 #include <stdio.h>

#include <stdlib.h>

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

{

int table[]={10,9,8,7,6,5,4,3,2,1};

int i,j;

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

{

for(j=0;j<10-i;j++)//bubble sort要雙回圈,不可單loop big O(n的平方) 

{

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

    {

  int temp=table[j];

  table[j]=table[j+1];

  table[j+1]=temp;

    }

        }

}

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

{

printf(" %2d ",table[i]);

}

return 0;

}

列印ASCII code

#include <stdio.h>

#include <stdlib.h>

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

{

int i;

printf("DEC\t HEX\t CHR\n");

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

{

printf("%d\t %x\t %c\n",i,i,i);

}

return 0;

}

參考出處 https://kknews.cc/code/gmb2j5y.html

16宮格亂數

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

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

{

srand(time(NULL));

int table[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

int i,j;

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

{

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

{

int r=rand()%16;

int a=r/4;

int b=r%4;

int temp=table[i][j];

table[i][j]=table[a][b];

table[a][b]=temp;

    }

}

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

{

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

{

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

}

printf("\n");

}

return 0;

}

九宮格亂數

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

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

{

srand(time(NULL));

int table[3][3]={{1,2,3},{4,5,6},{7,8,9}};

int i,j;

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

{

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

{

int r=rand()%9;

int a=r/3;

int b=r%3;

int temp=table[i][j];

table[i][j]=table[a][b];

table[a][b]=temp;

    }

}

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

{

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

{

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

}

printf("\n");

}

return 0;

}

大A轉小a

 #include <stdio.h>

#include <stdlib.h>

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

{

char word;

scanf("%c",&word);

printf("%c",word-32);

return 0;

}

四則運算 itch case:break

 #include <stdio.h>

#include <stdlib.h>

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

{

while(1)

{

int num1,num2,op;

scanf("%d%c%d",&num1,&op,&num2);

float ans;

switch(op)

{

case '+':

ans=num1+num2;

printf("%.0f",ans);

break;

case '-':

ans=num1-num2;

      printf("%.0f",ans);

      break;

case '*':

ans=num1*num2;

printf("%.0f",ans);

break;

case '/':

ans=num1/num2;

printf("%.2f",ans);

break;

default:

printf("請輸入+-*/");

  }

    } 

return 0;

}

查詢

 #include <stdio.h>

#include <stdlib.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 id;

scanf("%d",&id) ;

switch(id)

{

case 2:

case 3:

case 4:

printf("John\n");break;

case 5:

printf("Mary\n");break;

case 6:

printf("Amy\n");break;

default:

printf("not found\n");

}

return 0;

}

大寫變小寫轉換

 #include <stdio.h>

#include <stdlib.h>

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

{

char input,output;//字元是用編號去設計的

scanf("%c",&input);

output=input+32;//A=65  a=97 差32 

printf("%c\n",output);

return 0;

}

2022年6月27日 星期一

亂數產生10字數字,由小到大排

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

/*

  (0,0) (0,1) (0,2)

  (1,0) (1,1) (1,2)

  (2,0) (2,1) (2,2)

*/

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

{

  srand(time(NULL));

  int table[10]={0};

  table[0]=rand()%999+1;

  table[1]=rand()%999+1;

  table[2]=rand()%999+1;

  table[3]=rand()%999+1;

  table[4]=rand()%999+1;

  table[5]=rand()%999+1;

  table[6]=rand()%999+1;

  table[7]=rand()%999+1;

  table[8]=rand()%999+1;

  table[9]=rand()%999+1;

 

  int i,j;

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

  {

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

  {

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

  {

     int temp = table[j];

     table[j]=table[j+1];

     table[j+1]=temp;

}

}

}

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

{

printf(" %d ",table[i]);

}

return 0;

}

亂數產生3個數字,印出最大數

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

/*

  (0,0) (0,1) (0,2)

  (1,0) (1,1) (1,2)

  (2,0) (2,1) (2,2)

*/

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

{

  srand(time(NULL));

  int a=rand()%99+1;

  int b=rand()%99+1;

  int c=rand()%99+1;

  printf("%d  %d  %d \n",a,b,c);

  int max=a;

  if(b>a)

  {

  max=b;

}

if(c>a)

{

max=c;

}

printf("%d",max);

return 0;

}

九宮格練習

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

/*

  (0,0) (0,1) (0,2)

  (1,0) (1,1) (1,2)

  (2,0) (2,1) (2,2)

*/

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

{

int table[3][3]={{1,2,3},{4,5,6},{7,8,9}};//二維陣列 

srand(time(NULL));

int i,j;

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

{

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

{

int r=rand()%9;//0~8

int a=r/3;

int b=r%3;

int temp =table[i][j];

table[i][j]=table[a][b];

table[a][b]=temp;

}

}

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

{

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

{

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

}

printf("\n");

}

return 0;

}

九宮格

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

/*

   (0,0) (0,1) (0,2)

   (1,0) (1,1) (1,2)

   (2,0) (2,1) (2,2)

   

*/

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

{

srand(time(NULL));

int i,j;

char table[3][3]={{1,2,3},{4,5,6},{7,8,9}};

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

{

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

{

int r=rand()%9;

printf("r=%d\n",r); 

int m=r/3;

printf("m=%d\n",m);

int n=r%3;

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

int t=table[i][j];//00 01 02 

printf("t=%d\n",t);

table[i][j]=table[m][n];

table[m][n]=t;

printf("t=%d\n",table[m][n]);

}

}

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

{

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

{

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

}

printf("\n");

}

return 0;

}

九宮格

 #include <stdio.h>

#include <stdlib.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 v[3][3]=

{

{1,2,3},

{4,5,6},

{7,8,9}

};

int i,j;

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

{

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

    {

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

    }

    printf("\n");

}


return 0;

}

泡沫排序法

 #include <stdio.h>

#include <stdlib.h>

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

{

int v[3],i,j;/v[0] v[1] v[2]


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

{

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

}

for(i=0;i<2;i++)//泡沫排序法用雙迴圈 

{

for(j=0;j<2-i;j++)//做一樣的事 

{

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

{

int t=v[j];

v[j]=v[j+1];

v[j+1]=t;

}

}

}

printf("%d ",v[1]);


return 0;

}

猜三次拳

 #include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

int gen_num()

{

srand(time(NULL));

int no=rand()%3;

return no;

}

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


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

 {

int computer_guess;

int player_guess;

int win_cnt;

int guess_cnt=0;

while(guess_cnt<3)

{

printf("請輸入 0:剪刀 1:石頭 2:布 9:離開");

scanf("%d",&player_guess);

if(player_guess==9)

{

printf("Byte bye...");

break;//跳出回圈 

}

computer_guess=gen_num();

printf("電腦出拳:%d\n",computer_guess);

if(computer_guess==player_guess)

{

printf("平手\n");

continue;

}

switch(player_guess)

{

case 0:

if(computer_guess==2)

{

printf("玩家贏了\n");

win_cnt++;

}

else

{

printf("玩家輸了\n");

}

break;//遇到 break 後離開 switch 區塊

case 2:

if(computer_guess==1)

{

printf("玩家贏了\n");

win_cnt++;

}

else

{

printf("玩家輸了\n");

}

break;

default:

        printf("別在亂出拳了\n");

}

guess_cnt++;

}//end of while

if(win_cnt>=2)

{

printf("player win\n");

}

else

{

printf("computer win\n");

}

return 0;

}

break vs continu用法

 break 與 continue 敘述的使用

(一) break 敘述

◎✽使用時機: 在迴圈(不論是for迴圈或while迴圈)執行時,通常要把「要重複的敘述群」執行完一遍之後,再去檢視迴圈「條件式」是否成立。如果需要臨時強迫離開迴圈,也就是把還沒執行完的敘述群丟在一邊,直接離開迴圈時(不必管條件式成不成立),就是使用break敘述的時機。此敘述一般要搭配 if 敘述使用才恰當。

◎✽圖示:

for 或 while ( ..... )
{
    ....... A段 .......
    if (條件式)
        break ;

    ....... B段 .......
}
....... C段 .......

從上段程式來說,如果執行到 if 敘述時其「條件式」成立,那麼接下來執行 break敘述之後,程式流程就會省略B段部分,直接跳到C段去執行,換言之就是離開迴圈了

◎✽範例:電腦以亂數產生一數(num)之後,使用者不斷猜測該數(guess),每次猜測時電腦必須提示猜的太大或太小,此動作一直重複直到猜中為止。

count = 1 ;
while (true)
{
    printf ("第 %d 次猜測:\n", count) ;
    printf ("請猜測一數:") ;
    scanf ("%d", &guess) ;
    if (guess > num)
        printf ("太大!\n") ;
    else if (guess < num)
        printf ("太小!\n") ;
    else
    {
        printf ("猜中了!\n") ;
        break ;
    }
    count++ ;         //  如果猜中了則此行不會執行
}   // while loop

 

(二) continue 敘述

◎✽使用時機: 在迴圈(不論是for迴圈或while迴圈)執行時,通常要把「要重複的敘述群」執行完一遍之後,再去檢視迴圈「條件式」是否成立。在某些時候如果需要暫停『本次』迴圈,也就是把還沒執行完的敘述群先丟在一邊,重新檢視迴圈「條件式」準備重啟迴圈時,就是使用continue敘述的時機。此敘述一般要搭配 if 敘述使用才恰當。

◎✽圖示:

for 或 while ( ..... )
{
    ....... A段 .......
    if (條件式)
        continue ;

    ....... B段 .......
}

從上段程式來說,如果執行到 if 敘述時其「條件式」成立,那麼接下來執行continue敘述之後,程式流程就會省略B段部分(當作本次迴圈已經執行完畢),重回到迴圈的條件式判斷。換言之就是本次迴圈執行完畢,要繼續下一次的條件式檢視了。

◎✽範例:將 2到100中的偶數相加,但必須排除10的倍數,也就是2+4+6+8+12+14+.....,最後印出總和。

sum = 0 ;
for (x=2 ; x<=100 ; x+=2)
{
    if  (x % 10 == 0)          //  如果 x是10的倍數則閃過後面的 sum = sum + x; 敘述
        continue ;
    sum = sum + x;
}
printf ("總和:%d \n", sum) ;

參考網址:http://rs2.ocu.edu.tw/~jengchi/break_continue.htm

身分證練習

 #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 temp ,sum;

  char id_num[10];

  scanf("%s",&id_num[0]);

  switch(id_num[0])

  {

    case 'A':sum=1;break;

    case 'B':sum=10;break;

    case 'C':sum=19;break;

    case 'D':sum=28;break;

    case 'E':sum=37;break;

    case 'F':sum=46;break;

    case 'G':sum=55;break;

    case 'H':sum=64;break;

    case 'I':sum=39;break;

    case 'J':sum=73;break;

    case 'K':sum=82;break;

    case 'L':sum=2;break;

    case 'M':sum=11;break;

    case 'N':sum=20;break;

    case 'O':sum=48;break;

    case 'P':sum=29;break;

    case 'Q':sum=38;break;

    case 'R':sum=47;break;

    case 'S':sum=56;break;

    case 'T':sum=65;break;

    case 'U':sum=74;break;

    case 'V':sum=83;break;

    case 'W':sum=21;break;

    case 'X':sum=3;break;

    case 'Y':sum=12;break;

    case 'Z':sum=30;break;

}

temp=sum+

8*(id_num[1]-48)+

7*(id_num[2]-48)+

6*(id_num[3]-48)+

5*(id_num[4]-48)+

4*(id_num[5]-48)+

3*(id_num[6]-48)+

2*(id_num[7]-48)+

1*(id_num[8]-48)+

1*(id_num[9]-48);

if(temp%10==0)

{

printf("合法\n");

}

else

{

printf("不合法\n");

}

return 0;

}

身分證驗證

 #include<stdio.h>  

#include<stdlib.h>

#include<string.h>//標頭檔要字串.h 

main()

{

int sum,temp;

char id_num[10];

scanf("%s",&id_num);//要%s字串 

switch(id_num[0])

{

case 'A':sum=1;break;

case 'B':sum=10;break;

case 'C':sum=19;break;

case 'D':sum=28;break;

case 'E':sum=37;break;

case 'F':sum=46;break;

case 'G':sum=55;break;

case 'H':sum=64;break;

case 'I':sum=39;break;

case 'J':sum=73;break;

case 'K':sum=82;break;

case 'L':sum=2;break;

case 'M':sum=11;break;

case 'N':sum=20;break;

case 'O':sum=48;break;

case 'P':sum=29;break;

case 'Q':sum=38;break;

case 'R':sum=47;break;

case 'S':sum=56;break;

case 'T':sum=65;break;

case 'U':sum=74;break;

case 'V':sum=83;break;

case 'W':sum=21;break;

case 'X':sum=3;break;

case 'Y':sum=12;break;

case 'Z':sum=30;break;

}

temp=sum+

8*(id_num[1]-48)+

7*(id_num[2]-48)+

6*(id_num[3]-48)+

5*(id_num[4]-48)+

4*(id_num[5]-48)+

3*(id_num[6]-48)+

2*(id_num[7]-48)+

1*(id_num[8]-48)+

1*(id_num[9]-48);

if(temp%10==0)

{

printf("合法");

}

else

{

printf("不合法");

}

return 0;    


}

2022年6月26日 星期日

三角形

 #include <stdio.h>

#include <stdlib.h>

/*

11 12 13

21 22 23 

31 32 33

*/

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

{

int i,j,num;

scanf("%d",&num);

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

{

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

{

if(i<=j)

printf("*");//用座標做,其他補空白,否則星號都會靠左 

else

printf(" ");

}

printf("\n");

}

return 0;

}

猜三次拳

 /*

  說明:1.電腦會先隨機產生0,1,2三個數字(0:剪刀 1:石頭 2:布)

       2.請使用者輸入一個數字,0: 剪刀,1:石頭 2:布, >=3:不玩了,並輸出勝負場數,9:不玩了,並輸出勝負場數 

   3.比較你的出拳跟電腦的出拳,輸出勝負或平手

   4.使用計數器,記只錄輸贏狀況

   

   使用到的技術:

       1.if ...else /switch ...case判斷式( 判斷輸贏)

   2.while loop重複玩

   3.變數用來記錄電腦產生的數字,你猜拳的數字,還有輸贏次數

   4.使用I/O:printf,scanf

   5.使用函數random隨機產生數字 

*/

#include<stdio.h>  

#include<stdlib.h>

#include <time.h>

int gen_number()//負責產生亂數數字0~2 

{

//設定亂數種子為當下時間

srand(time(NULL)) ;

int number=rand()%3;//產生[0,1,2]的整數亂數 

return number;

}

main()

{

 int computer_guess;

 int player_guess;

 int win_count=0;

 int guess_count=0; 

 while(guess_count<3)

 {

  printf("請輸入 0: 剪刀,1:石頭 2:布 [9:離開遊戲]: ");

  scanf("%d",&player_guess);

 

  if(player_guess==9)//判斷是否離開 

  {

  printf("Byte bye...");

  break;

}

computer_guess=gen_number();

printf("電腦出拳:%d \n",computer_guess);

guess_count++;//累加的意思 

if(computer_guess==player_guess)

{

printf("平手\n");

continue;

}

switch(player_guess)

{

case 0://0: 剪刀

   if(computer_guess==2)

   {

    printf("玩家贏了\n");

    win_count++;

    }

else

    {

     printf("你輸了\n");

    }

       break;

case 1://1: 石頭

if(computer_guess==0)

   {

    printf("玩家贏了\n");

    win_count++;

    }

else

    {

     printf("你輸了\n");

    }

       break;

case 2://2: 布

if(computer_guess==1)

   {

    printf("玩家贏了\n");

    win_count++;

    }

else

    {

     printf("你輸了\n");

    }

       break;

default:

   printf("別要在亂出拳\n");

       

}

 }//end of while

 if(win_count>=2)

 {

  printf("player win\n");

 }

 else

 {

  printf("computer win\n");

 }

  //printf("你總共現了%d次,贏了%d次\n",guess_count,win_count);

 return 0;    

}

猜拳

/*

  說明:1.電腦會先隨機產生0,1,2三個數字(0:剪刀 1:石頭 2:布)

       2.請使用者輸入一個數字,0: 剪刀,1:石頭 2:布, >=3:不玩了,並輸出勝負場數,9:不玩了,並輸出勝負場數 

   3.比較你的出拳跟電腦的出拳,輸出勝負或平手

   4.使用計數器,記只錄輸贏狀況

   

   使用到的技術:

       1.if ...else /switch ...case判斷式( 判斷輸贏)

   2.while loop重複玩

   3.變數用來記錄電腦產生的數字,你猜拳的數字,還有輸贏次數

   4.使用I/O:printf,scanf

   5.使用函數random隨機產生數字 

*/

#include<stdio.h>  

#include<stdlib.h>

#include <time.h>

int gen_number()//負責產生亂數數字0~2 

{

//設定亂數種子為當下時間

srand(time(NULL)) ;

int number=rand()%3;//產生[0,1,2]的整數亂數 

return number;

}

main()

{

 int computer_guess;

 int player_guess;

 int win_count=0;

 int guess_count=0; 

 while(1)

 {

  printf("請輸入 0: 剪刀,1:石頭 2:布 [9:離開遊戲]: ");

  scanf("%d",&player_guess);

 

  if(player_guess==9)//判斷是否離開 

  {

  printf("Byte bye...");

  break;

}

computer_guess=gen_number();

printf("電腦出拳:%d \n",computer_guess);

guess_count++;//累加的意思 

if(computer_guess==player_guess)

{

printf("平手\n");

continue;

}

switch(player_guess)

{

case 0://0: 剪刀

   if(computer_guess==2)

   {

    printf("玩家贏了\n");

    win_count++;

    }

else

    {

     printf("你輸了\n");

    }

       break;

case 1://1: 石頭

if(computer_guess==0)

   {

    printf("玩家贏了\n");

    win_count++;

    }

else

    {

     printf("你輸了\n");

    }

       break;

case 2://2: 布

if(computer_guess==1)

   {

    printf("玩家贏了\n");

    win_count++;

    }

else

    {

     printf("你輸了\n");

    }

       break;

default:

   printf("別要在亂出拳\n");

       

}

 }//end of while

  printf("你總共現了%d次,贏了%d次\n",guess_count,win_count);

 return 0;    

}

出處:https://www.youtube.com/watch?v=koI0eY04Crw

身分證驗證

善用xcel





 #include<stdio.h>  

#include<stdlib.h>

#include<string.h>

main()

{

 int sum,temp;

 char x[11];

 scanf("%s",x);  

   switch(x[0])

    {

     case 'A':sum=1;break;

     case 'B':sum=10;break;

     case 'C':sum=19;break;

     case 'D':sum=28;break;

     case 'E':sum=37;break;

     case 'F':sum=46;break;

     case 'G':sum=55;break;

     case 'H':sum=64;break;

     case 'I':sum=39;break;

     case 'J':sum=73;break;

     case 'K':sum=82;break;

     case 'L':sum=2;break;

     case 'M':sum=11;break;

     case 'N':sum=20;break;

     case 'O':sum=48;break;

     case 'P':sum=29;break;

     case 'Q':sum=38;break;

     case 'R':sum=47;break;

     case 'S':sum=56;break;

     case 'T':sum=65;break;

     case 'U':sum=74;break;

     case 'V':sum=83;break;

     case 'W':sum=21;break;

     case 'X':sum=3;break;

     case 'Y':sum=12;break;

     case 'Z':sum=30;break;

    }

     temp=sum+

8*(x[1]-48)+

7*(x[2]-48)+

6*(x[3]-48)+

5*(x[4]-48)+

4*(x[5]-48)+

3*(x[6]-48)+

2*(x[7]-48)+

(x[8]-48)+

(x[9]-48);

    if(temp%10==0)

     printf("合法\n");

    else

     printf("非法\n");  

 return 0;    

}

參考網址:https://mypaper.pchome.com.tw/iustlovefish/post/1312502058
參考網址:https://www.youtube.com/watch?v=jjb0QdFU3S8

2022年6月25日 星期六

連分數

 #include <stdio.h>

#include <stdlib.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 a,b;

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

while(a%b !=0)

{

int temp=a%b;

printf("%d %d %d 連分數:%d\n",a,b,a%b,a/b);

a=b;

b=temp;

}

printf("連分數:%d\n",a/b);

return 0;

}

體積、表面積計算

 #include <stdio.h>

#include <stdlib.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 h,w,d;

scanf("%d %d %d",&h,&w,&d);//會不會+-*/讀資料掃瞄資料進來 

printf("%d ",(h*w + w*d + d*h)*2);//會不會印表機印資料出來 

printf("%d ",h*w*d); 

return 0;

}

菱形的星星

 #include <stdio.h>

#include <stdlib.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,j;

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

{

for(j=1;j<=5-i;j++)

{

printf(" ");

}

for(j=1;j<=i*2-1;j++)

{

printf("*");

}

for(j=1;j<=5-i;j++)

{

printf(" ");

}

printf("\n");

}

for(i=5-1;i>=1;i--) //中間會多一行,減1即變對稱菱形 

{//正三角形 下三角形 不等式變號 ++變-- 

for(j=1;j<=5-i;j++)

{

printf(" ");

}

for(j=1;j<=i*2-1;j++)

{

printf("*");

}

for(j=1;j<=5-i;j++)

{

printf(" ");

}

printf("\n");

}

return 0;

}

正三角形星星

 #include <stdio.h>

#include <stdlib.h>

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

 {

int i,j;

for(i=1;i<=5;i++)//i為列 j為行 

{

for(j=1;j<=5-i;j++)//左右兩旁印空白 

{

printf(" ");

}

for(j=1;j<=i*2-1;j++)//中問印星星 

{

printf("*");

}

for(j=1;j<=5-i;j++)//左右兩旁印空白 

{

printf(" ");

}

printf("\n");

}

return 0;

}

求gcd用輾轉相除法

 #include <stdio.h>

#include <stdlib.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 a,b,c,temp;//a是被除數 b是除數 c是餘數 

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

  if(a<b)

  {

  temp=a;

  a=b;

  b=temp;

}

c=a%b;//輾轉相除法是取餘數=0,前一個除數就是gcd 

while(c!=0)

{

a=b;

b=c;

c=a%b;

}

int gcd=b;

printf("%d",b);

return 0;

}

2022年6月24日 星期五

bmi

 #include <stdio.h>

#include <stdlib.h>


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


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

{

float bmi;

float w,h;

scanf("%f",&h);

scanf("%f",&w);

bmi=w/((h/100)*(h/100));

if(bmi<18.5)

{

printf("bmi=%.2f",bmi);

printf("過輕");

}

else if(bmi>25)

{

printf("bmi=%.2f",bmi);

printf("過重");

}

else

{

printf("bmi=%.2f",bmi);

printf("標準");

}

return 0;

}

i=j 左上右下印出星號

 #include <stdio.h>

#include <stdlib.h>

int main()

{

int i,j;

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

{

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

{

if(i==j)

{

printf("*");

}

else

{

printf(" ");

}

}

printf("\n");

}

return 0;

}

11.3 - 用文字繪製空心長方形的練習

 #include <stdio.h>

#include <stdlib.h>

int main()

{

int N;

printf("N= ");

scanf("%d",&N);

int i,j;

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

{

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

{

if(i==1 || i==N || j==1 || j==N)//第1列、最後1列、第1行、最後1行印星踸,萁他印空白 

{

printf("*");

}

else

{

printf(" ");

}

}

printf("\n");

}

return 0;

}

用文字繪製長方形的練習

 #include <stdio.h>

#include <stdlib.h>

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

{

int n;

printf("n=") ;

scanf("%d",&n);

int i,j;

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

{

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

{

printf("*");

}

printf("\n");

}

return 0;

}

求最大公因數

#include <stdio.h>

#include <stdlib.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 dividend,divisor,remainder;

scanf("%d %d",&dividend ,&divisor);

if(dividend<divisor)//被除數比除數要交換 

{

int temp =dividend;

dividend=divisor;

divisor=temp;

}

remainder=dividend%divisor;//被除數比除數大才可以求餘數 

while(remainder!=0)//餘數 不等於0就一直除法 

dividend=divisor;//把原來的除數變被除數 

divisor=remainder;//把原來的餘數變除數 

remainder=dividend%divisor;

}

int gcd=divisor;//如果等於0,除數就是最大公因數了 

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

return 0;

}

1~100所有的質數

 #include <stdio.h>

#include <stdlib.h>

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

{

int num;

int flag=1; 

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

{

if(num==1);

else//2以後進到此 

{

int cnt=0;

int i;

for(i=1;i*i<=num;i++)//2 i*i 符合條件,超過就不符合條件 

{

if(num%i==0)//2%1=0 

{

cnt++;

}

if(cnt==2)

{

break;

}

}

if(cnt==1)

{

if(flag==1)

{

printf("%d",num);//第1次不加, 

flag=0;

}

else//第2次加, 

{

   printf(",%d",num);

}

}

}

}

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...