Upload
mongoo
View
1.474
Download
4
Embed Size (px)
Citation preview
Утга өсгөх бууруулах
Илүү богино арга
i++ or ++i == i = i + 1i-- or --i == i = i – 1i += a == i = i + ai -= a == i = i - ai *= a == i = i * ai /= a == i = i / a
Давталт
Ижил заавруудыг дахин дахин биелүүлэх.
Бүлэг кодууд
Зарим төлөв Өөрчлөгдөнө
Нөхцөл биелэх үед давтагдана
Давталт
C -д дараах давталтууд байдаг. for, while, do-while.
while давталт
while (condition)
{
statement(s);
}
Нөхцөл үнэн бол statement биелнэ
Нөхцөл худал болвол давталт дуусна.
Жишээ факториал
#include <stdio.h>int main(){
int i, n, fact = 1;printf("Enter a number\n");scanf("%d", &n);i=1; /* тоолуур */while (i<=n){
fact = fact*i;i++; /* i = i+1 */
}printf("the factorial is %d\n", fact);return 0;
}
Жишээ Фибончийн дараалал
fibonacci.c
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0
Screen
5
lim0
fib11
fib2---
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0
Screen
5
lim0
fib11
fib2---
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1
Screen
5
lim0
fib11
fib2---
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1
Screen
5
lim0
fib11
fib21
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1
Screen
5
lim1
fib11
fib21
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1
Screen
5
lim1
fib11
fib21
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1
Screen
5
lim1
fib11
fib21
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1
Screen
5
lim1
fib11
fib21
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1
Screen
5
lim1
fib11
fib22
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1
Screen
5
lim1
fib11
fib22
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1
Screen
5
lim1
fib12
fib22
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1
Screen
5
lim1
fib12
fib22
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2
Screen
5
lim1
fib12
fib22
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2
Screen
5
lim1
fib12
fib23
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2
Screen
5
lim2
fib12
fib23
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2
Screen
5
lim2
fib13
fib23
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2
Screen
5
lim2
fib13
fib23
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2 3
Screen
5
lim2
fib13
fib23
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2 3
Screen
5
lim2
fib13
fib25
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2 3
Screen
5
lim3
fib13
fib25
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2 3
Screen
5
lim3
fib15
fib25
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2 3
Screen
5
lim3
fib15
fib25
fib_next
Фибоначи алхмаар
fib1 = 0;fib2 = 1;
printf("%d ", fib1);
while (fib2 < lim){
printf("%d ", fib2);fib_next = fib1 + fib2;fib1 = fib2;fib2 = fib_next;
}
printf("\n");
0 1 1 2 3
Screen
5
lim3
fib15
fib25
fib_next
getchar
getchar() хэрэглэгчийн тэмдэгтийг хүлээн авна.
stdio.h-д агуулгагдана Алдаа гарвал сөрөг утга буцаана. scanf адил.
char c;
c = getchar();
char c;
scanf(“%c”, &c);====
Putchar
putchar(char)хаалтан дахь тэмдгийг хэвлэнэ.
stdio.h байна Printf адил.
char c;
putchar(c);
char c;
printf(“%c”, c);====
Жишээ – жижиг үсгийг том болгох.
low2up.c
Low2up – алхмаар
#include <stdio.h>
int main(){ char c; char upper_c;
printf(“Enter a string: ");
c = getchar();
Buffer
‘#’ ‘@’
c upper_c
Screen
Low2up – алхмаар
#include <stdio.h>
int main(){ char c; char upper_c;
printf(“Enter a string: ");
c = getchar();
yeS\n
Buffer
‘#’ ‘@’
c upper_c
Screen
Low2up – алхмаар
#include <stdio.h>
int main(){ char c; char upper_c;
printf (“Enter a string: ");
c = getchar();
eS\n
Buffer
‘y’ ‘@’
c upper_c
Screen
Low2up – алхмаар
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
eS\n
Buffer
‘y’ ‘@’
c upper_c
Screen
Low2up – алхмаар
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
eS\n
Buffer
‘y’ ‘@’
c upper_c
Screen
Low2up – алхмаар
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
eS\n
Buffer
‘y’ ‘Y’
c upper_c
Screen
Low2up – алхмаар
eS\n
Buffer
‘y’ ‘Y’
c upper_c
Y
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
S\n
Buffer
‘e’ ‘Y’
c upper_c
Y
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
S\n
Buffer
‘e’ ‘Y’
c upper_c
Y
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
S\n
Buffer
‘e’ ‘Y’
c upper_c
Y
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
S\n
Buffer
‘e’ ‘E’
c upper_c
Y
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
S\n
Buffer
‘e’ ‘E’
c upper_c
YE
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
\n
Buffer
‘S’ ‘E’
c upper_c
YE
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
\n
Buffer
‘S’ ‘E’
c upper_c
YE
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
\n
Buffer
‘S’ ‘E’
c upper_c
YE
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
\n
Buffer
‘S’ ‘S’
c upper_c
YE
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
\n
Buffer
‘S’ ‘S’
c upper_c
YES
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
Buffer
‘\n’ ‘S’
c upper_c
YES
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
Buffer
‘\n’ ‘S’
c upper_c
YES
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Low2up – алхмаар
Buffer
‘\n’ ‘S’
c upper_c
YES
Screen
while (c != '\n' && c >= 0){ if (c >= 'a' && c <= 'z') upper_c = c - 'a' + 'A'; else upper_c = c;
/* Print the converted character.*/ putchar(upper_c);
/* Get the next character */ c = getchar();
}putchar('\n');
Дасгал
Оролт: A B бүхэл тоонууд
Гаралт: A нь B –г хэдэн удаа агуулж байна вэ Мэдээж үр дүн A/B
тайлбар: Хуваах үйлдэл ашиглахгүй!
Бодолт
#include <stdio.h>
int main(){
int a, b, res;
printf("Please enter two numbers.\n");scanf("%d%d", &a, &b);
res = 0;while ( (res+1) * b <= a)
res = res + 1;
printf("%d / %d = %d", a, b, res);return 0;
}
Давталт дахь break
break таармагц давталт дуусна. Тэгээд програм давталтын дараагийн
алхмыг биелүүлнэ. break давхар давталтын дотор таарвал
дотрох давталт дуусна.
Жишээ – Энэ юу хийж байна вэ?
#include <stdio.h>
int main() {int i=1; printf("Enter a line of text:\n");char c = getchar();while (c != '\n' && c >= 0) {
if (c==' ') break;i++;c = getchar();
}
………
}
Жишээ – үсэг тоолъё
#include <stdio.h>
int main() {int i=1; printf("Enter a line of text:\n");char c = getchar();while (c != '\n' && c >= 0) {
if (c==' ') /* Found the first space - exit the loop */ break;i++;c = getchar();
}
if (c==' ') /* We found a space */ printf("There are %d letters before the first space.\n", i-1);else /* The loop ended without finding spaces */ printf("There are no spaces in the input line.\n");return 0;
}
continue
continue таарвал дараагийн хэсэг алгасагдна.
Тэгээд давталтын эхнээс биелүүлнэ.
for давталт
for нь тоолуур хувьсагчийн тусламжтай хэрэгжнэ.
for (c = begin; c <= end; c += inc)
{
давталтын бие
}
initialization condition increment
For -факториал
#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
---
i
3
n
1
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
1
i
3
n
1
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
1
i
3
n
1
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
2
i
3
n
1
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
2
i
3
n
2
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
3
i
3
n
2
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
3
i
3
n
6
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
4
i
3
n
6
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
Алхам алхмаар for факториаль
Алхам алхмаар for факториаль
4
i
3
n
6
fact#include <stdio.h>int main(){ int i, n, fact = 1;
printf("Enter a number\n"); scanf("%d", &n);
for (i=1; i<=n; ++i) { fact *= i; }
printf("the factorial is %d\n", fact); return 0;}
for давталт (үрг.)
Аль ч for –г while –р орлуулж болно.
Гэхдээ заримдаа for тохиромжтой. Тодорхой тоогоор давтах бол for -г
хэрэглэ Хэзээ дуусах нь тодорхойгүй бол while.
Жишээ – fahrenheit-celsius хувиргах хүснэгт
/* Print a Fahrenheit-to-Celsius conversion table */
#include <stdio.h> int main ( ) {
int fahr;double celsius; int lower = 0, upper = 300;int step = 20;
for (fahr=lower; fahr<=upper; fahr += step){
celsius = 5.0*(fahr -32.0)/9.0;printf("%d\t%g\n", fahr, celsius);
}return 0;
}
Давхар for давталт тэгш өнцөгт/* Print a rectangle of *. The height and width are defined by
the user */#include <stdio.h>
int main( ){
int i, j;int height, width;
printf("Please enter the two box dimensions: \n");scanf("%d%d", &height, &width);
for (i = 1; i <= height; i++){
for (j = 1; j <= width; j++) printf("*");
printf("\n");}
}
Дасгал
Өндөр өгөгдөхөд * тэмдэг ашиглан зурагт харагдах пирамидыг хэвлэ.
*****
*****
****
*
Бодолт
#include <stdio.h>
int main(){
int i, j, size;
printf(“Please enter a size:\n”);scanf(“%d”,&size);for (i = 1; i <= size; i++){
for (j = i; j <= size; j++) printf("*");
printf("\n");}
return 0;}
Дасгал
Өгөгдсөн натурал тоо хүртлэх анхны тоонуудыг хэвлэ
Бодолт
#include <stdio.h>int main(){
int i, j, last;
printf("enter a number\n");scanf("%d", &last);for (i = 2; i <= last; i++){
for (j = 2 ; j < i; j++){ if (i % j == 0)
break;}if (j == i) printf("the number %d is prime\n", i);
}return 0;
}
Дасгал
Өмнөх програмыг уг тооноос бага эсвэл тэнцүү байх хамгийн том анхны тоог хэвлэдэг болгох өөрчил.
Бодолт 1#include <stdio.h>int main(){
int i, j, last;int found = 0; /* This indicates if we found the largest prime */
printf("enter a number\n");scanf("%d", &last);i = last;while (!found) /* Loop until we find our guy */{
for (j = 2 ; j < i; j++) if (i % j == 0) break;
if (j == i) /* If this is true then i is prime */ found = 1;else i--;
}printf("The largest prime not larger than %d is %d.\n", last, i);return 0;
}
Бодолт 2 (with break)
#include <stdio.h>int main(){
int i, j, last;printf("enter a number\n");scanf("%d", &last);for (i=last; i>1; i--){
for (j = 2 ; j < i; j++) if (i % j == 0) break;
if (j == i) /* i is prime. We found our guy */ break;
}printf("The largest prime not larger than %d is %d.\n",
last, i);return 0;
}
do while loops
do {statement(s)
} while (expression);
while тай адил Давталтын бие биелсний дараа нөхцөл
шалгана Иймд давталт ядаж нэг биелнэ
Жишээ зөв оролт хүлээх
#include <stdio.h>int main(){
int i;
printf("Please enter a positive number.\n");do {
scanf("%d", &i); if (i <= 0)
printf("Try again.\n");
} while (i<=0);
/* The program continues.... */return 0;
}