ข้อสอบภาษาซีพร้อมเฉลย

  1. จากโปรแกรมต่อไปนี้จงหาว่าโปรแกรมใดให้ผลลัพธ์ในการทำงานเหมือนกับโปรแกรมนี้

main()

{

int  i;

i =1;

while(i <= 10)

{

printf(“%d”,i);

i:=i+1;

}

main()

{

int i;

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

printf(“%d”,i-1);

}

main()

{

int i;

for( i := 0 ; i <= 9; i++)

printf(“%d”,i+1);

}

ก.                                                                                        ข.            ข.

main()

{

int i;

for( i := 1 ; i <= 9; i++)

printf(“%d”,i+1);

}

main()

{

int i;

for( i := 10 ; i >= 1; i–)

printf(“%d”,11-i);

}

ค.                                                                                            ง.

  1. จากส่วนของโปรแกรมต่อไปนี้

i =1;

f =1;

while( i < n)

{

i = i+1;

f = f * i;

}

ถ้า  n = 6 แล้ว  ค่าผลลัพธ์สุดท้ายของ  f   มีค่าเท่าใด

ก. 30                      ข. 720

ค. 120                    ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้

if(n < 0)

y = 0

else

{

x = 0; y = 1;

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

{

z = x+y;

x = y;

y =z;

}

}

ถ้า n = 6 ค่าของ   z   คือ

ก. 3                        ข. 5

ค. 8                        ง. ไม่มีข้อใดถูก

จากส่วนของโปรแกรมต่อไปนี้ ตอบคำถามข้อ 45

p = 1; i =1;

while i <= n

{

p = p*x;

i = i+1;

}

  1. ถ้า n = 10, x = 2; แล้ว ค่าผลลัพธ์สุดท้ายของ p มีค่าเท่าใด

ก. 20                      ข. 10

ค. 1024                 ง. ไม่มีข้อใดถูก

  1. ความสัมพันธ์ของ p, n และ x คือ

ก. p = x n             ข. p = xn

ค. p = nx                 ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้

x = 2;

z = x + y;

if (y > 0)

z = z+1

else

z = 0;

ถ้า y = 3 แล้ว ค่าผลลัพธ์สุดท้ายของ z มีค่าเท่าใด

ก. z = 2                 ข. z = 0

ค. z = 6                 ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้
a = 414; b = 662;

x = a;

y = b;

while(y  !< 0)

{

r = x % y ;

x = y;

y = r;

}

x    มีค่าเท่าใด

ก. 414                    ข. 662

ค. 2                        ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมในข้อ 7 สรุปการทำงานได้ดังนี้

ก. ใช้คำนวณหา ห.ร.ม. ของ (a,b)

ข. ใช้คำนวณหา ค.ร.น. ของ (a,b)

ค. ใช้คำนวณหาเศษที่ได้จากการนำ y ไปหาร x

ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้
if (n < 0)

a = -n;

else

{

a = n;

k = 0;

x = 0;

}

while(k < a)

{

x = x+m ;

k = k+1 ;

}

if (n < 0)

p = -x;

else

p = x;

ถ้า m = 8, n =5; แล้ว ค่าผลลัพธ์สุดท้ายของ p มีค่าเท่าใด

ก. 40                      ข. –40

ค. 13                      ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมในข้อ 9 นั้นใช้เพื่อคำนวณ

ก. mn                  ข. m+ n

ค. mn                     ง. ไม่มีข้อใดถูก

จากโปรแกรมต่อไปนี้ ตอบคำถาม ข้อ 11-12

main()

{

float  sum, i,j ;

sum =0.0;

j =1.0;

i =2.0;

while(i/j > 0.001)

{

j = j+j;

sum=sum+i/j;

printf(“%f”,sum);

}

 

  1. จากโปรแกรม จะพิมผลลัพธ์กี่บรรทัด

ก.   0 ถึง 9                            ข.    10 ถึง 19

ค.   20 ถึง 29                       ง.    30 ถึง 39

  1. จากโปรแกรม จะพิมพ์ผลลัพธ์ตัวสุดท้ายใกล้เคียงกับจำนวนเต็มค่าใดมากที่สุด

ก. 1                        ข. 2

ค. 3                        ง. 4

จากโปรแกรมต่อไปนี้ จงตอบคำถามข้อ 13-15

 1. main()

2. {

3.  int  i,j ;

4.  i =1;

5.  j=20;

6.  while(i<=5) &&  (j>=15)

7.  {

9.            printf(“i = %d, j=%d”,i,j);

10.          i =i+1;

11.          j =j-1;

12.  }

13. }

  1. ข้อใดคือผลลัพธ์ของโปรแกรมข้างต้น

ก.            1    20            2   19               3   18               4   17                  5   16

ข.            1    20            2    19             3    18             4    17                5    16            6    15

ค.            1    20            2    20             3    20             4    20

ง.            1    20            1    19             1    18             41   17               1    16            1    15

  1. ถ้าตัดบรรทัดที่ 10 ออก ผลลัพธ์จะเป็นอย่างไร

ก.            1    20            2   19               3   18               4   17

ข.            1    20            2    19             3    18             4    17                5    16            6    15

ค.            1    20            2    20             4    20             5    20   …(ไม่รู้จบ)

ง.            1    20            1    19             1    18             1   17                  1    16            1    15

  1. จากโจทย์ต้นฉบับ หลังจากตัดบรรทัดที่ 10 ออกแล้ว ถ้าเปลี่ยนบรรทัดที่ 6 จาก (i<=5) && (j>=15) เป็น (i<5) || (j>15) และ ผลลัพธ์จะเป็นอย่างไร

ก.            1    20            2   19               3   18               4   17

ข.            1    20            1    19             1    18             1   17                  1    16

ค.            1    20            2    19             3    18             4    17                5    16            6    15

ง.            1    20            1    19             1    18             1   17                  1    16…(ไม่รู้จบ)

จากส่วนของโปรแกรมต่อไปนี้ ตอบคำถามข้อ 17-18

1. num =3;

2. count =0;

3. i =1;

4. while(i <20)

5. {

6. if ((i % num) > count)

7. {

8. count =count+1;

9. i =i+1;

10. }

11. }

 

  1. หลังจากจบการทำงานแล้ว count จะมีค่าเป็นเท่าใด

ก. 20                      ข. 6

ค. 3                        ง. 2

  1. ถ้าเปลี่ยนค่า num ในบรรทัดที่ 1 ให้เป็น num:=5 หลังจากจบการทำงานแล้ว count จะมีค่าเป็นเท่าใด

ก. 20                      ข. 6

ค. 5                        ง. 4

จากโจทย์ตอบคำถามข้อ 19-21

int  m,n;

if (n<0)

a = n;

else

a = n;

k = 0;

x = 0;

while(k < a)

{

x = x+m;

k = k+1;

}

if (n < 0)

question = -x

else

question  =  x

  1. เมื่อ m = 0;  n = 6;  question  มีค่าเท่าใด

ก.  0                       ข.  12

ค.  7                       ง.  ไม่มีข้อใดถูก

  1. เมื่อ m = 0;  n = 6;  question  มีค่าเท่าใด

ก.  0                       ข.  12

ค.  36                     ง.  ไม่มีข้อใดถูก

  1. จงสรุปการทำงานของ โปรแกรมนี้
    • คำนวณหาผลคูณของ n  และ  m          ข. คำนวณหาผลบวกของ  n  และ  m
  • คำนวณหาผลบวกของ x  และ  m         ง. ไม่มีข้อถูก

จากโจทย์ตอบคำถามข้อ 22-24

int   a , b;

x = a;

y = b;

while(y != 0)

{

                                r =  x  % y;

x = y;

y =  r;

}

question2 = x;

  1. เมื่อ a = 91;  b = 287;  question2  มีค่าเท่าใด

ก.  0                       ข.  12

ค.  7                       ง.  ไม่มีข้อใดถูก

  1. เมื่อ a =256;  b = 198;  question2  มีค่าเท่าใด

ก.  0                       ข.  18

ค. 36                      ง.  ไม่มีข้อใดถูก

  1. จงสรุปการทำงานของโปรแกรมนี้

ก.   คำนวณหาจำนวนเฉพาะ                           ข.   คำนวณหาตัวหารร่วมมาก

ค.   คำนวณหาตัวคูณร่วมน้อย                         ง.   ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมที่กำหนดให้

x = 1;

i = 1;

while(x <= 10000)

{

x =  2;

i = i+2;

}

หลังจากจบการทำงานแล้ว  ค่าของ  i มีค่าเป็นเท่าใด

ก.  7                       ข. 9                        ค. 11                      ง. ไม่มีข้อใดถูก

  1. กำหนดส่วนของโปรแกรม    จงหาผลลัพธ์ที่ได้

j = 2; i = 1;

do{

if   i<=j-2

do {

printf(“%d”,i);

i=i+2;

}while i<j-2

j = j+i;

}while(j<15);

ก. 1  3  5  7                                         ข. 1  3  5  7  9

ค. 1  3  5  7  9  11                             ง.  ไม่มีข้อใดถูก

ส่วนของโปรแกรมนี้ใช้ตอบคำถามข้อ  27-28

i=20;  j = 10; k = 0;

while(i>j)

{

if ((i>3) && (j>4) || (k >5))

{

printf(“Yeah !!”);

}

i=i-1;  j = j+2; k = i-j;

}

  1. จากส่วนของโปรแกรมข้างบน จงหาผลลัพธ์ของการทำงานว่ามีการพิมพ์  “Yeah !!” กี่บรรทัด

ก.   2                      ข.  3                       ค.  4                       ง.  5

  1. ถ้าเปลี่ยนคำสั่ง if ((i>3) && (j>4) || (k >5)) เป็น  if ((i>3) && (j>4) && (k >5)) จงหาผลลัพธ์ของการทำงานว่ามีการพิมพ์  “Yeah !!” กี่บรรทัด

ก.   1                      ข.  2                       ค.  3                       ง.  4

  1. จากส่วนของโปรแกรมต่อไปนี้ จงหาผลลัพธ์ของ  Count  ว่ามีค่าเท่าไร
i=2;j=0;k=0;count = 0;

while(k>=0)

{

if(i>j)

{

i=i-1;

k = k+1;

}

else

{

j=j+2;

k = k-1;

}

count = count +1;

}

printf(“Count  =  %d”,count);

ก.   2                      ข.  3                       ค.  4                       ง.  5

  1. จากส่วนของโปรแกรม จงหาผลลัพธ์ของ  y  มีค่าเท่ากับเท่าไร  เมื่อ  X มีค่า 3
if (x >=0)

{

if(x<10)

{

y = x*x;

if(x<=5)

x = y/2;

}

else

y = 5*x;

else

y = x*x*x;

printf(“Y =  %5.2f ”,y);

}

ก. 1.00                  ข. 3.00                  ค.9.00                    ง. 12.00

  1. จากส่วนของโปรแกรม ค่า  x และ  y  ในข้อใดที่ทำให้ผลลัพธ์พิมพ์  B  ออกมา

if(x<=200)  ||  (y >=200)

if(x<=100) && (y <= 100)

if (x<=50) && (y >= 50)

printf(“A”);

else

printf(“B”);

else

printf(“C”);

else

printf(“D”);

ก.  x = 50       y=100                        ข. x = 75     y=50

ค.  x = 200     y=100                        ง.  x = 50     y=75

  1. ให้แสดงผลลัพธ์ของ value1 , value2

n  = 20;

value1  = n++;

value2 = ++n;

printf(“%d , %d ”,value1,value2);

ก.   20 , 21           ข. 21 , 20             ค. 21 , 21             ง. 20 , 20

  1. จากโปรแกรมจงหาผลลัพธ์

main()

{

int x =3, y = 2;

float a,b;

a = x/y;

printf(“\n  a = %f ,”,a);

b = x/y;

printf(“b =  %f”,b);

}

ก.  a = 1.000000 , b = 1.500000                                  ข.  b = 1.000000 , a = 1.500000

ค.  a = 1.000000 , b = 1.000000                                  ง.  a = 1.0 , b = 1.5

  1. for(x = 0; x <100; x++) เมื่อจบโปรแกรม  x  มีค่าเท่าใด

ก.  โปรแกรมแสดงเลขคี่ตั้งแต่ 0-100            ข.โปรแกรมแสดง  1-100

ค.   โปรแกรมแสดงเลขคู่ตั้งแต่  0-100          ง. โปรแกรมแสดง  0-100

  1. for(x = 2; x <20; x+=3) เมื่อจบโปรแกรม  x  มีค่าเท่าใด

ก.  5    8   11  14  17  20                                                ข.  2   5   8   11   17

ค.   2   8   11   14   17   20                             ง.  5   10   15   20

ง. 12

มารู้จักความรู้เบื้องต้นเกี่ยวกับภาษาคอมพิวเตอร์กันเถอะ

ภาษาคอมพิวเตอร์

ภาษาคอมพิวเตอร์ คือ ชุดคำสั่งที่เขียนตามรูปแบบหรือกฏเกณฑ์ที่กำหนดไว้ เพื่อสั่งให้เครื่องคอมพิวเตอร์ทำงาน  แบ่งได้เป็น 3 ระดับ ดังนี้

1.ภาษาระดับต่ำ   (Low Level Language)  เป็นภาษาที่ใช้ตัวอักษรแทนตัวเลขล้วนๆ  แต่เป็นคำสั่งสั้นๆ เมื่อจะนำไปใช้ต้องผ่านการแปลคำสั่งให้เป็นภาษาเครื่องก่อนนำไปใช้งาน เช่น  ภาษาแอสเซมบลี (Assembly Language)  ตัวอย่างคำสั่งภาษาแอสเซมบลี

mov ax,200h

mov bx,1

int 20h

ret

2.ภาษาระดับกลาง (Middle Level Language) เป็นภาษาที่เป็นโครงสร้าง และใช้คำสั่งที่มนุษย์สามารถเข้าใจได้ แต่มีการทำงานที่รวดเร็วเหมือนกับภาษาระดับต่ำ สามารถทำงานบนเครื่องคอมพิวเตอร์ที่มีความแตกต่างกันได้เป็นอย่างดี โดยไม่อิงกับฮาร์ดแวร์ เช่น  ภาษาซี (C) ตัวอย่างโปรแกรมภาษาซี

#include <studio.h>

int a =2;

int b=4;

int c;

main()

{

c=a+b;

printf (“answer =%d\n”,c);

}

3.ภาษาระดับสูง (High Level Language) เป็นภาษาที่เป็นโครงสร้าง และใช้คำสั่งที่มนุษย์สามารถเข้าใจได้ แต่ต้องมีการแปลคำสั่งก่อนการใช้งาน เช่น Fortran, Cobol, Pascal, Visual Basic, Java เป็นต้น

ตัวแปลภาษา  (Compiler) 

ในภาษาคอมพิวเตอร์ทุกภาษาจะมีตัวแปลภาษาที่เขียนขึ้นให้เป็นภาษาเครื่องเพื่อสั่งให้คอมพิวเตอร์ทำงาน จำแนกได้เป็น  2  ประเภท  คือ อินเตอร์พรีเตอร์  และ คอมไพเลอร์

อินเตอร์พรีเตอร์  (Interpreter)  เป็นตัวแปลภาษาที่ทำการแปลทีละคำสั่ง เมื่อพบข้อผิดพลาด  (error)  จะแจ้งให้ทราบและหยุดการทำงานในบรรทัดนั้น ข้อดีทำให้ง่ายต่อการตรวจสอบแก้ไขคำสั่ง  ข้อเสีย ทุกครั้งที่สั่งให้ทำงานจะมีการแปลคำสั่งเดิมอีกทุกครั้ง ทำให้ใช้เวลาค่อนข้างมาก ได้แก่

ภาษาเบสิก

คอมไพเลอร์  (Compiler)  เป็นตัวแปลภาษาที่ทำการแปลโปรแกรมทั้งหมดก่อนที่จะทำงาน ถ้าพบส่วนที่ผิดพลาด (error) เครื่องจะรายงานข้อผิดพลาดต่าง ๆให้ทราบทั้งหมด  ข้อดี โปรแกรมที่ผ่านการแปลภาษาแล้ว สามารถสั่งให้ทำงานได้ทันที โดยไม่ต้องแปลคำสั่งใหม่  มีการทำงานที่ไวขึ้น สำหรับข้อเสีย ถ้าพบข้อผิดพลาดเพียงบางส่วนก็จะไม่สามารถสั่งให้โปรแกรมทำงานได้ ต้องแก้ไขข้อผิดพลาดให้ครบก่อนสั่งให้ทำงาน ได้แก่  ภาษาซี, ภาษาฟอร์แทรน , ภาษาปาสคาล, ภาษาโคบอล  เป็นต้น

ขั้นตอนการแปลคำสั่ง และ Run  โปรแกรมของคอมไพเลอร์

เริ่มจากการแปลคำสั่งภาษาต่างๆ (source code) ให้เป็นออบเจ็กต์โค้ด (objects code) ได้ไฟล์ที่มีชนิดของไฟล์เป็น .obj ต่อจากนั้นจึงทำการเชื่อมโยงไฟล์ที่เกี่ยวข้องกับโปรแกรมหลักเข้าด้วยกัน(link) จนเกิดเป็นไฟล์  .EXE   ที่สามารถนำไปrun ได้ต่อไป

ความรู้พื้นฐานเกี่ยวกับภาษาซี

ประวัติภาษาซี

ภาษาซีพัฒนาขึ้นเป็นครั้งแรกโดยนายเดนนิส ริทชี่ (Dennis Ritchie) ที่ห้องปฏิบัติการเบล (Bell Labs) เมื่อปี ค.ศ 1972   โดยได้แนวคิดมาจากภาษา BCPL ของนายมาร์ติน ริชาร์ด (Martin Richards)

เดนนิส ริทชี่ ผู้พัฒนาภาษาซี

ความสามารถของภาษาซี มีดังนี้

-ภาษาซีสามารถนำไปใช้งานในระบบปฏิบัติที่แตกต่างกันได้เป็นอย่างดี

-ภาษาซีสามารถนำไปใช้งานกับเครื่องคอมพิวเตอร์ทุกรุ่น

-โปรแกรมภาษาซีเป็นภาษาที่มีโครงสร้าง มีขนาดเล็กและทำงานได้รวดเร็ว

-ภาษาซีสามารถนำไปใช้ควบคุมการทำงานของอุปกรณ์อิเล็กทรอนิกส์บางอย่างได้

-ภาษาซีมีฟังก์ชันมากมาย และสามารถเขียนขึ้นเองได้

ในปัจจุบันมีผู้ผลิตโปรแกรมภาษาซีออกมาหลากหลายโดยใช้ชื่อเรียกแตกต่างกันดังนี้

-Turbo C /Turbo C++/Borland C++ เป็นของบริษัทบอร์แลนด์

-Microsoft C/C++ เป็นของบริษัทไมโครซอฟท์

โครงสร้างของโปรแกรมภาษาซี

โปรแกรมภาษาซีแบ่งโครงสร้างออกเป็น 2 ส่วนคือ

1.ส่วนหัวของโปรแกรม (Head)

จะเริ่มต้นตั้งแต่บรรทัดแรกสุดของโปรแกรมไปจนถึงบรรทัดก่อนคำว่า main() ภายในส่วนหัวของโปรแกรมยังแบ่ง 2 ส่วนคือ

1.1.พรีโปรเซสเซอร์ไดเร็คทีฟ (Preprocessor directive)

เป็นคำสั่งที่ขึ้นต้นด้วยเครื่องหมาย # คำสั่งนี้จะถูกแปลคำสั่งก่อนคำสั่งอื่นๆ

ตัวอย่างเช่น

#include เป็นคำสั่งที่บอกให้ตัวแปลภาษานำคำสั่งในไฟล์ที่ระบุไว้มารวม

กับโปรแกรมปัจจุบัน

ตัวอย่างเช่น #include <stdio.h> หรือ #include “stdio.h”

#define                  เป็นคำสั่งที่ใช้มาโครและกำหนดค่าให้กับมาโคร

ตัวอย่างเช่น #define ADD(a,b)  a+b

นอกจากนี้ยังมี #error, #if, #endif, #elif, #else, #ifdef, #undef, #line, #pragma

1.2.ส่วนกำหนดข้อมูล

ส่วนนี้จะประกาศตัวแปร(Variable Declaration) สำหรับเก็บข้อมูลไว้ใช้ในตัวโปรแกรมต่อไป ตัวอย่างเช่น                 int a=2;        float b=4; char c=’*’; char d[] = “computer”;

2.ส่วนตัวของโปรแกรม (Body)

จะเริ่มตั้งแต่คำสั่ง main() ไปจนถึงคำสั่งบรรทัดท้ายสุดของโปรแกรม เป็นที่รวมของคำสั่ง หรือฟังก์ชันต่างๆ ตัวแปรที่ใช้ในส่วนตัวของโปรแกรมจะต้องประกาศไว้ในส่วนหัวของโปรแกรมมาก่อนเสมอ

ตัวอย่างเช่น

#include <studio.h>

int a =2;

int b=4;

int c;

ส่วนหัวโปรแกรม
main()

{

c=a+b;

printf (“answer =%d\n”,c);

}

ส่วนตัวโปรแกรม

รูปแบบการเขียนโปรแกรมภาษาซี

1.ในคำสั่ง #include <ชื่อไฟล์>  จะกำหนดให้ตัวแปลภาษาซีเริ่มค้นหาไฟล์จากไดเร็คทอรีที่กำหนดไว้ก่อน ถ้าค้นหาไม่พบจะกลับมาค้นหาที่ไดเร็คทอรีปัจจุบัน (ห้องเดียวกันกับไฟล์โปรแกรม)

2.ในคำสั่ง #include “ชื่อไฟล์”  จะกำหนดให้ตัวแปลภาษาซีเริ่มค้นหาไฟล์จากไดเร็คทอรีปัจจุบันก่อน ถ้าค้นหาไม่พบจะไปค้นหาในไดเร็คทอรีที่กำหนดไว้

3.คำสั่งภาษาซีต้องใช้ตัวอักษรตัวพิมพ์เล็กเท่านั้น

4.ชื่อตัวแปรหรือชื่อมาโคร ที่ใช้ตัวอักษรภาษาอังกฤษตัวเดียวกัน แต่ต่างกันที่ตัวพิมพ์เล็กกับตัวพิมพ์ใหญ่ให้ถือว่าเป็นคนละตัวกัน เช่น int  a=2; int A=3;

5.ทุกคำสั่งต้องจบด้วยเครื่องหมายเซมิโคลอน (;)

6.สามารถเขียนคำสั่งในแนวตั้งหรือเขียนคำสั่งติดต่อกันไปในแนวนอนก็ได้

7.การย่อหน้าหรือเว้นวรรค ไม่มีผลต่อการทำงานของโปรแกรม

8.คำอธิบายหรือหมายเหตุจะต้องเขียนไว้ภายในเครื่องหมาย /* ……. */ ข้อความยาวเกินกว่า

1 บรรทัดได้

9.เครื่องหมาย ‘ ’ (Single quote)ใช้กับข้อมูล 1 ตัวอักษรเท่านั้น

10.เครื่องหมาย “ ” (Double quote) ใช้กับกลุ่มของตัวอักษร

11.เครื่องหมาย = ใช้สำหรับกำหนดค่า

12.เครื่องหมาย == ใช้สำหรับเปรียบเทียบค่า

ชนิดของข้อมูลในภาษาซี

ในโปรแกรมภาษาซีสามารถกำหนดชนิดของข้อมูลได้ 6 ชนิดดังนี้

1.เลขจำนวนเต็ม (Integer)

เป็นเลขที่ไม่มีทศนิยม อาจจะเป็นจำนวนเต็มบวก,จำนวนเต็มศูนย์ หรือจำนวนเต็มลบก็ได้ ตัวเลขชนิดนี้สามารถนำไปคำนวณได้

2.เลขจำนวนจริง (Float)

เป็นเลขที่มีทศนิยม อาจจะมีทศนิยมเป็นเลขศูนย์ เช่น 2.00 ,เลขทศนิยมแบบคงที่ เช่น 2.25,เลขทศนิยมแบบไม่รู้จบ เช่น 1.333333333333….. หรือเลขทศนิยมที่อยู่ในรูปของ E,e ยกกำลัง เช่น 1.6E10

3.เลขฐานแปด (Octal)

การกำหนดชนิดข้อมูลเลขฐานแปดจะใช้เลขศูนย์นำหน้าตัวเลข เช่น 012,05 เป็นต้น

4.เลขฐานสิบหก (Headecimal)

การกำหนดชนิดข้อมูลเลขฐานสิบหกจะใช้เลขศูนย์+ตัว x นำหน้าตัวเลข เช่น 0x12,0x4 เป็นต้น

5.ตัวอักขระ (Character)

ประกอบด้วยตัวเลข ,ตัวอักษร หรือสัญลักษณ์ต่าง ๆก็ได้ เพียง 1 ตัวอักษรเท่านั้น และตัวเลขไม่สามารถนำไปคำนวณได้ ข้อมูลชนิดนี้จะเขียนอยู่ภายใต้เครื่องหมาย ‘’ (Single quote) เช่น ‘A’

,‘a’

6.ข้อความ (String)

ประกอบด้วยกลุ่มของตัวเลข ,ตัวอักษร หรือสัญลักษณ์ต่าง ๆ ตั้งแต่ 1 ตัวอักษรขึ้นไปเรียงต่อๆกัน ซึ่งตัวเลขไม่สามารถนำไปคำนวณได้ ข้อมูลชนิดนี้จะเขียนอยู่ภายใต้เครื่องหมาย “” (Double quote) เช่น “Computer/52”, “คอมพิวเตอร์/52”

การประกาศตัวแปรและการตั้งชื่อ

ก่อนเขียนคำสั่งใช้งานจะต้องมีการประกาศตัวแปรเพื่อกำหนดชนิดข้อมูลที่จะเก็บไว้ในตัวแปรที่กำหนดขึ้น

                ตัวแปร (Variable) คือ ชื่อที่กำหนดขึ้นเพื่อเก็บข้อมูลไว้ในหน่วยความจำของเครื่องคอมพิวเตอร์ ที่สามารถเปลี่ยนแปลงค่าได้

ชนิดของตัวแปรพื้นฐานในภาษาซีตามมาตรฐาน ANSI

 

ชนิดตัวแปร ขนาด

(Bits)

ขอบเขต จำนวน(Byte) ความหมาย
int 16 -32,768 ถึง 32,767 2 เก็บเลขจำนวนเต็มปกติ แบบมีเครื่องหมายลบ
unsigned int 16 0 ถึง 65,535 2 เก็บเลขจำนวนเต็มปกติ แบบไม่มีเครื่องหมายลบ
short 8 -128 ถึง 127 1 เก็บเลขจำนวนเต็มแบบสั้น มีเครื่องหมายลบ
unsigned short 8 0 ถึง 255 1 เก็บเลขจำนวนเต็มแบบสั้น ไม่มีเครื่องหมายลบ
Long 32 -2,147,483,648 ถึง

2,147,483,649

4 เก็บเลขจำนวนเต็มแบบยาว มีเครื่องหมายลบ
unsigned long 32 0 ถึง 4,294,967,296 4 เก็บเลขจำนวนเต็มแบบยาว ไม่มีเครื่องหมายลบ
float 32 3.4*10-38 ถึง 3.4*1038 4 เก็บข้อมูลชนิดตัวเลขทศนิยม (มีทศนิยม 6 ตัว)
double 64 3.4*10-308 ถึง 3.4*10308 8 เก็บข้อมูลชนิดตัวเลขทศนิยม (มีทศนิยม 12 ตัว)
long double 128 3.4*10-4032 ถึง3.4*104032 16 เก็บข้อมูลชนิดตัวเลขทศนิยม (มีทศนิยม 24 ตัว)
char 8 -128 ถึง 127 1 เก็บตัวอักขระเพียง 1 ตัว

การตั้งชื่อตัวแปร

1.ต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์(A-Z)หรือตัวพิมพ์เล็ก(a-z)เท่านั้น

2.ห้ามใช้ตัวเลขนำหน้าตัวแปร

3.สามารถใช้เครื่องหมายขีดล่างได้ (_) เพียง 1 ตัว ต่อการเชื่อมตัวอักษรแต่ละครั้ง เช่น com_it ,_nnn

4.ตัวอักษรตัวที่ 2 เป็นต้นไปสามารถใช้ตัวเลขได้ เช่น m2m , score100

5.การตั้งชื่อตัวแปรที่เหมือนกัน แต่ต่างกันที่ตัวอักษรตัวพิมพ์ใหญ่กับตัวพิมพ์เล็ก จะถือว่าเป็นตัวแปรคนละตัวกัน เช่น Name, name, nAme,namE

6.ห้ามตั้งชื่อตัวแปรซ้ำกับคำสงวน (Reserved word) เช่น

auto default float register Struct
Break do for return switch
Case double goto short typedef
Char else if signed unsigned
Const enum int sizeof void
Continue extern long static while

7.ชื่อตัวแปรสามารถตั้งชื่อได้ไม่จำกัด แต่จะมีค่าเฉพาะ 32 ตัวอักษรแรกเท่านั้น ทั้งนี้อยู่กับตัวแปลภาษาที่ท่านเลือกใช้งาน

8.ห้ามเว้นช่องว่างภายในตัวแปร ให้ใช้เครื่องหมายขีดล่างแทน

รูปแบบการประกาศตัวแปร

             ชนิดของตัวแปร  ชื่อตัวแปร [= ข้อมูลเริ่มต้น] [,ชื่อตัวแปร [= ข้อมูลเริ่มต้น]];

ตัวอย่างเช่น

int a=2;                  ตัวแปร a เก็บเลขจำนวนเต็ม 2 เป็นค่าเริ่มต้น

float b=4.00;        ตัวแปร b เก็บเลขจำนวนเต็ม 4.00 เป็นค่าเริ่มต้น

int c;                       ตัวแปร c เป็นตัวแปรเก็บเลขจำนวนเต็มใดๆ

int d,e,f=0;            ตัวแปร d, e, f  เก็บเลขจำนวนเต็มใด ๆ โดยตัวแปร f มีค่าเริ่มต้นเป็น 0

char[] name,address;          ตัวแปร name,address เก็บกลุ่มของตัวอักขระ แบบไม่จำกัดจำนวน

char status= ‘*’;                  ตัวแปร status เก็บตัวอักษรเพียง 1 ตัวมีค่าเริ่มต้นเป็น *