c 1.pdf
TRANSCRIPT
Бүлэг 1 .
1
Бүлэг I
Си хэлний элементүүд
Аливаа хэл дээр бичигдсэн программ нь тухайн хэлний элементүүдийг
ашиглан бичигддэг. Си хэл нь
Үсэг
Тогтмолууд
Нэр (идентификатор)
Түлхүүр үг
Тайлбар
гэсэн элементүүдээс тогтоно.
Цагаан толгой
Си хэл нь олон тооны үсэг, цифр, цэгэн тэмдэгтүүдээс тогтох бөгөөд эдгээр
нь компиляторт тодорхойлогдсон байна. Том жижиг үсэг ялгаатай. Латин
цагаан толгойн том, жижиг үсгүүд: (A, B, ..., Z, a, b, ..., z), Цифрүүд: (0-9)
Идентификатор (нэр)
Програмчлалын хэлэнд ашиглагдах функц, тэмдэг, хувьсагчийн нэр,
функцийн операторын тэмдгийг зарлахад нэрийг хэрэглэнэ. Нэр нь үсгээр
эхэлсэн хэд хэдэн дараалсан тэмдэгт байж болох бөгөөд 32 тэмдэгтээс ихгүй
байна.
Төрөл, Оператор, Илэрхийлэл
Программд хувьсагч болон тогтмолууд нь өгөгдлийн үндсэн хэрэглүүр
болдог. Хувьсагчийн төрөл, анхны утгыг нь олгож болно. Операторууд нь
тэдгээрийн юу гүйцэтгэхийг зааж өгдөг. Илэрхийлэл нь хувьсагч болон
тогтмолуудын хооронд үйлдэл хийж, тэдгээрийн шинж чанараас хамааран
ямар үйлдэл хийхийг тодорхойлдог.
Өгөгдлийн төрлүүд
int Бүхэл тоон төрөл
long Урт бүхэл тоо
float Бодит тоон төрөл
double Урт бодит тоон төрөл
char Тэмдэгт болон тэмдэгт мөр төрөл
struct Бүтэц төрөл /хэрэглэгчийн тодорхойлсон/
Програмын эх код-д тайлбар хийх аргачлал
1. Мөрөөр // энэ бол нэг мөр тайлбар
2. Олон мөрөөр /* Энэ завсар олон мөр тайлбар байж болно. */
Дасгал бодлого
Хувьсагч ба тогтмолыг зарлах тухай
өгөгдлийн_төрөл хувьсагчийн_нэр;
int x, y, z; /*x, y, z нь int төрлийн хувьсагчууд*/
float a, b, c; /* a, b, c нь float төрлийн хувьсагчууд*/
double e, f; /* e, f нь double төрлийн хувьсагчууд*/
сhar ch,a; /* ch, a нь char төрлийн хувьсагчууд*/
const тогтмолын_төрөл тогтмолын_нэр = тогтмолын _утга;
const double E = 2.718282, e=2.832 ;
const long M = 99999999 ;
Үйлдлийн тэмдэг
Үйлдэл Тайлбар Үйлдэл Тайлбар
+ нэмэх /= Ноогдвор олгох
- Хасах ! Логик үгүйсгэл
* Үржих && Логик ба
/ Хуваах || Логик буюу
% Үлдэгдэлтэй хуваах ?: Нөхцөлт үйлдэл
++ Нэгээр нэмэгдүүлэх < Бага
+= Нийлбэр олгох <= Бага буюу тэнцүү
-- Нэгээр хорогдуулах >= Их буюу тэнцүү
-= Ялгавар олгох == Тэнцүү
*= Үржвэр олгох != Тэнцүү биш
Оролт гаралтын форматууд
Оролтын оператор - scanf( );
“%d” – int төрлийн бүхэл утга
“%ld” – long төрлийн урт бүхэл утга
“%c” – char төрлийн бүхэл утга
“%f” – float төрлийн бодит утга
“%lf” – double төрлийн бодит утга
Гаралтын оператор - printf( );
“%d” – int төрлийн бүхэл утга утга
“%ld” – long төрлийн урт бүхэл утга
“%c” – char төрлийн бүхэл утга
“%f” – float төрлийн бодит утга
“%lf” – double төрлийн бодит утга)
Бүлэг 1 .
3
Шугаман алгоритмын дасгал бодлого № 1
1.1. Өгөгдсөн гурван оронтой тооны цифрүүдийн үржвэрийг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int a,b,c,s,n;
printf("3-n orontoi
too oruulna uu=");
scanf("%d",&n);
a=n/100;
b=(n/10)%10;
c=n%10;
s=a*b*c;
printf("Tsifruudiin
urjwer=%d\n",s);
system("pause");
}
Тэмдэглэгээ:
a-зуутын орны цифр
b-аравтын орны цифр
c-нэгжийн орны цифр
n-өгөгдсөн гурван оронтой тоо
s- гурван оронтой n тооны цифрүүдийн
үржвэр
scanf("%d",&n); /*𝑎𝑏𝑐̅̅ ̅̅ ̅ ,n=100*a+10*b+c
хэлбэрийн тоо байна.*/ -гараас оруулсан гурван
оронтой тооны утгыг n хувьсагчид оноох
үйлдэл
a=n/100; /*n тоог 100-д хуваахад [𝑎, 𝑏𝑐̅̅ ̅̅ ̅̅ ]
хэлбэрийн тоо үүсэх бөгөөд a хувьсагчийг бүхэл
тоон төрлийн хувьсагч гэж зарласан учир
ноогдворын бүхэл хэсгийг авна. Үр дүнд а буюу
эхний цифр олдоно. */
b=(n/10)%10; /* n – тоог 10-т хуваахад
[𝑎𝑏, 𝑐̅̅ ̅̅ ̅̅ ] хэлбэрийн тоо үүсэх бөгөөд бүхэл хэсгийг
авахад ab хэлбэрийн тоо үүснэ.
(𝑎𝑏̅̅ ̅) хэлбэрийн тоог 10-т хуваахад
{𝑎, 𝑏̅̅ ̅̅̅} хэлбэрийн тоо үүсэх ба бутархай хэсгийг
авснаар b тоо буюу 10-тын орны цифр олдоно.
*/
printf("Tsifruudiin
urjwer=%d\n",s); -нэг мөрөнд багтаагүй хэсгийг
нэг мөрөнд оруулж бичихийг анхаарна уу?
printf("Tsifruudiin urjwer=%d\n",s);
1.2. Өгөгдсөн дөрвөн оронтой тооны цифрүүдийн үржвэрийг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int n,s;
printf("4-n orontoi too oruulna uu=");
Тэмдэглэгээ:
n-өгөгдсөн 4
оронтой тоо
s-өгөгдсөн n
тооны цифрүүдийн
нийлбэр
Дасгал бодлого
scanf("%d",&n);
s=(n/1000)+((n%100)/10)+((n/100)%10)+(n%10);
printf("Tsifruudiin niilber=%d\n",s);
system("pause");
}
s=(n/1000)+((n%100)/
10) +((n/100)%10)+
(n%10); цифрүүдийг
олох үйлдлийг
хураангуйлав.
1.3. Координатуудаараа өгөгдсөн гурван цэгийг холбосон гурвалжны
талбайг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main() {
int p,AB,BC,AC,Ax,Ay,Bx,By,Cx,Cy,S;
printf("Ax="); scanf("%d",&Ax);
printf("Ay="); scanf("%d",&Ay);
printf("Bx="); scanf("%d",&Bx);
printf("By="); scanf("%d",&By);
printf("Cx="); scanf("%d",&Cx);
printf("Cy="); scanf("%d",&Cy);
AB=sqrt((Ax-Bx)*(Ax-Bx)+(Ay-By)*(Ay-By));
AC=sqrt((Ax-Cx)*(Ax-Cx)+(Ay-Cy)*(Ay-Cy));
BC=sqrt((Bx-Cx)*(Bx-Cx)+(By-Cy)*(By-Cy));
p=(AB+BC+AC)/2;
S=sqrt(p*(p-AB)*(p-AC)*(p-BC));
printf("Gurwaljnii talbai=%d\n",S);
system("pause"); }
Тэмдэглэгээ:
p-хагас периметр
AB,BC,AC-гурвалжны
талууд
Ax,Ay- A цэгийн
координат
S-гурвалжны талбай;
#include <math.h>-
математик функцийн сан
sqrt()-квадрат язгуур
гаргах үйлдэл
AB=sqrt((Ax-Bx)*(Ax-
Bx)+(Ay-By)*(Ay-By));
Гурвалжны талуудыг хоѐр
цэгийн хоорондох зай олох
аргаар олно.
S=sqrt(p*(p-AB)*(p-
AC)*(p-BC)); Гурвалжны
талбайг Героны томъѐо
ашиглан олов.
1.4. Трапецийн дээд, доод суурь болон өндөр өгөгдсөн бол талбайг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main() {
int a,b,h,s;
printf("a="); scanf("%d",&a);
printf("b="); scanf("%d",&b);
printf("h="); scanf("%d",&h);
s=((a+b)/2)*h;
Тэмдэглэгээ:
a-трапецийн дээд суурь
b-трапецийн доод суурь
h-трапецийн өндөр
s-трапецийн талбай
Бүлэг 1 .
5
printf("s=%d\n",s);
system("pause"); }
1.5. Ромбын талууд өгөгдсөн бол талбайг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main() {
int d1,d2,s;
printf("d1="); scanf("%d",&a);
printf("d2="); scanf("%d",&b);
s=(a*b)/2;
printf("s=%d\n",s);
system("pause");}
Тэмдэглэгээ:
d1-ромбын 1-р диагональ
d2-ромбын 2-р диагональ
s-ромбын талбай
1.6. Тэгш өнцөгтийн талууд өгөгдсөн бол талбайг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int a,b;
printf("a="); scanf("%d",&a);
printf("b="); scanf("%d",&b);
printf("s=%d \n p=%d\n",a*b,
(a+b)/2);
system("pause");
}
Тэмдэглэгээ:
a-тэгш өнцөгтийн урт
b-тэгш өнцөгтийн өргөн
printf("s=%d \n
p=%d\n",a*b,(a+b)/2); тэгш
өнцөгтийн талбай ба периметрийг
шууд тооцоолон хэвлэх үйлдэл
1.7. Өгөгдсөн натурал дөрвөн оронтой тооны зуутын орныг мянгатын
оронтой харьцуулсан харьцааг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int n,a,b;
printf("4-orontoi too oruulna uu=");
scanf("%d",&n);
a=n/1000;
b=(n/100)%10;
Тэмдэглэгээ:
n-өгөгдсөн 4 оронтой тоо
a-өгөгдсөн n тооны
мянгатын орны цифр
b-өгөдсөн n тооны
зуутын орны цифр
Дасгал бодлого
printf("Zuutiin orniig myangatiin orond
haritsuulbal=%d\n",b/a);
system("pause"); }
1.8. Өгөгдсөн натурал n тооны сүүлчийн цифрийг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int n;
printf("n=");
scanf("%d",&n);
printf("Suuliin ornii tsifr=%d\n",n%10);
system("pause");
}
Тэмдэглэгээ:
n-өгөдсөн натурал тоо
printf("Suuliin ornii
tsifr=%d\n",n%10); n – тоо
хэдэн оронтой байсан ч
ялгаагүй
10-т хувааж бутархай хэсгийг
авахад нэгжийн орны цифр
олдоно.
1.9. Өгөгдсөн гурван тооны арифметик дунджийг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int a,b,c;
printf("a="); scanf("%d",&a);
printf("b="); scanf("%d",&b);
printf("c="); scanf("%d",&c);
printf("Arifmetik dundaj=%d\n",(a+b+c)/3);
system("pause");
}
Тэмдэглэгээ:
a,b,c-өгөгдсөн тоонууд
𝑎1+𝑎2+𝑎3+...+𝑎𝑛
𝑛-
aрифметик дундаж
1.10. Өгөгдсөн хоёр тооны геометр дунджийг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
int a,b,k;
printf("a="); scanf("%d",&a);
printf("b="); scanf("%d",&b);
Тэмдэглэгээ:
a,b-өгөгдсөн тоонууд
k-өгөгдсөн a,b тоонуудын
геометр дундаж
√𝑎1 ⋅ 𝑎2 ⋅ 𝑎3 ⋅. . .⋅ 𝑎𝑛𝑛 - геометр
дундаж
Бүлэг 1 .
7
k=sqrt(a*b);
printf("Geometr dundaj=%d\n",k);
system("pause");
}
1.12. Координатууд нь өгөгдсөн 2 цэгийн дундаж цэгийн координатыг ол.
Бодолт Тайлбар
#include <stdio.h>
#include <stdlib.h>
main()
{
int Ax,Ay,Bx,By,Cx,Cy;
printf("Ax="); scanf("%d",&Ax);
printf("Ay="); scanf("%d",&Ay);
printf("Bx="); scanf("%d",&Bx);
printf("By="); scanf("%d",&By);
printf("Dundaj tsegiin koordinat:\n");
Cx=(Ax+Bx)/2; Cy=(Ay+By)/2;
printf("Cx=%d\n Cy=%d\n", Cx,Cy);
system("pause");
}
Тэмдэглэгээ:
Ax,Ay-A цэгийн координатууд
Bx,By-B цэгийн координатууд
Cx,Cy-C цэгийн координатууд