หน่วยที่ 6 การสร้างฟังก์ชั่นในภาษาซี (พิเศษ)

การเขียนโปรแกรมโดยใช้ฟังชั่นมาตรฐานและสร้างขึ้นเอง                      

ตัวอย่างโปรแกรม แปลงเลขฐานสองสลับเลขฐานสิบ และแปลงเลขฐานแปดสลับเลขฐานสิบ

  • #include <stdio.h>  //สร้างสูตรคำนวณขึ้นมาเอง  
  • #include <math.h>
  • int binary_decimal(int n);
  • int decimal_binary(int n);
  • int decimal_octal(int n);
  • int octal_deciaml(int n);
  • int main()
  • int n; char c;
  •    printf("Instructions:\n");
  •    printf("A. Enter 'a' to convert binary to decimal.\n");
  •    printf("B. Enter 'b' to convert decimal to binary.\n");
  •    printf("C. Enter 'c' to convert decimal to octal.\n");
  •    printf("D. Enter 'd' to convert octal to decimal.\n");
  •    printf("Input a or b or c or d :: "); 
  •    loop: scanf("%c",&c);
  •  
  •    if (c =='a' || c == 'A')
  •    {   printf("Enter a binary number: "); scanf("%d", &n);
  •        printf("%d in binary = %d in decimal", n, binary_decimal(n));}
  •    else if (c =='b' || c == 'B')
  •    {   printf("Enter a decimal number: "); scanf("%d", &n);
  •        printf("%d in decimal = %d in binary", n, decimal_binary(n));}
  •    else if (c =='c' || c == 'C')
  •    {   printf("Enter an octal number: "); scanf("%d", &n);
  •        printf("%d in octal = %d in decimal", n, octal_decimal(n));}
  •    else if (c =='d' || c == 'D')
  •    {   printf("Enter a decimal number: "); scanf("%d", &n);
  •        printf("%d in decimal = %d in octal", n, decimal_octal(n));}
  •    else
  •     { goto loop; }
  •    return 0; }
  •  
  • int decimal_octal(int n) /* Function to convert decimal to octal */
  • {   int rem, i=1, octal=0;
  •     while (n!=0)
  •     {   rem=n%8; n/=8;
  •         octal+=rem*i; i*=10;
  •     } return octal; }
  • int octal_decimal(int n) /* Function to convert octal to decimal */
  • {   int decimal=0, i=0, rem;
  •     while (n!=0)
  •     {   rem = n%10; n/=10;
  •         decimal += rem*pow(8,i); ++i;
  •     } return decimal; }
  • int decimal_binary(int n)  /* Function to convert decimal to binary.*/
  • {   int rem, i=1, binary=0;
  •     while (n!=0)
  •     {   rem=n%2; n/=2;
  •         binary+=rem*i; i*=10;
  •     } return binary; }
  • int binary_decimal(int n) /* Function to convert binary to decimal.*/
  • {   int decimal=0, i=0, rem;
  •     while (n!=0)
  •     {   rem = n%10; n/=10;
  •         decimal += rem*pow(2,i); ++i;
  •     } return decimal; }

          ปรับรูปย่อ การเขียนโปรแกรมได้ดังตัวอย่างต่อไปนี้

          ตัวอย่างโปรแกรม ใส่เลขฐานสิบสลับแปลงเลขฐานสองฐานแปดฐานสิบและฐานสิบหก

  • #include <stdio.h> //ประยุกต์จากคำสั่งฟังก์ชั่นมาตรฐาน
  • int main()
  • { int n;
  •   printf("Enter a decimal number: ");
  •   scanf("%d",&n);
  •   printf(": %o in octal: %d in decimal: %x in hex", n, n, n, n);
  •   return 0; }