Лекц №12
Сэдэв: Тэмдэгт мөр
Тэмдэгт мөр
Тэмдэгт мөр
Тэмдэгт
мөрийн
эхлэл
Тэмдэгт
мөрийг
зааглагч
“ ”
Хоосон
тэмдэгт мөр
“H” тэмдэгт
мөр
Тэмдэгт
мөрийн
төгсгөл
Тэмдэгт мөр
төрлийн массивын
төгсгөл биш
Массивын хэсэг
боловч мэмдэгт мөр
төрлийн хэсэг биш
Тэмдэгт ‘H’
Тэмдэгт мөр
Тэмдэгтийг дан хашилт ‘ ’ дотор, тэмдэгт мөрийг давхар хашилт “ “
дотор бичнэ.
Тэмдэгтийн зарлах char s[5];
Тэмдэгтэд анхны утга оноох
char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '0'};
char c[5] = {'a', 'b', 'c', 'd', '0'};
Тэмдэгт Тэмдэгт мөр
Тэмдэгт мөр
Жишээ №1: Тэмдэгтийг scanf(); функцээр гараас оруулах
#include <stdio.h>
int main()
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
printf("Your name is %s.", name);
return 0;
}
Үр дүн:
Enter name: Dennis Ritchie
Your name is Dennis.
D e n n i s -
[0] [1] [2] [3] [4] [5] [6]name
Утга
Дээрх жишээнд Dennis Ritchie гэсэн
тэмдэгт мөрний зөвхөн "Dennis"
хадгалагдаж байна. "Dennis" дараа
хоосон зай авсанаас хойшх тэмдэг
мөр хадгалагдахгүй.
Тэмдэгт мөр
Жишээ №2: Тэмдэгтийг fgets() функцээр гараас оруулж, puts()
хэвлэх
#include <stdio.h>
int main()
{
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); // read string
printf("Name: "); puts(name); // display string
return 0;
}
Үр дүн:
Enter name: Tom Hanks
Name: Tom Hanks
T o m H a n k s
[0] [1] [2] [3] [4] [5] [6] [7] [8]name
Утга
Хэрэглэгчийн оруулсан мөрийг уншихын тулд fgets() функцийг ашигласан
болно.
Тэмдэгт мөр
fgets() функцын бичигдэх хэлбэр
fgets(нэр, sizeof(нэр), stdin); // read string
sizeof(name) дээд тал нь 30 тэмдэгт авах боломжтой.
Мөрийг хэвлэхийн тулд бид puts(name); -ийг ашигласан болно.
Тэмдэглэл: get() функц нь хэрэглэгчийн оролтыг авах явдал байж болно.
Гэсэн хэдий ч С стандартаас хасагдсан болно.
Get() нь дурын урт тэмдэгт оруулах боломжийг олгодогтой холбоотой юм.
Тиймээс буфер хальж магадгүй юм.
Тэмдэгт мөр
Жишээлбэл: Тэмдэгтийн мөрийг хэвлэх
Тэмдэгт мөр
Тэмдэгт мөр
Тэмдэгт мөрийг ашиглахаас өмнө тэмдэгт мөрт зориулсан санах ойг
хуваарилах ёстой.
Тэмдэгт мөртэй
ажилладаг
функцууд
Тэмдэгт мөр
Мөртэй ажилладаг функцууд
C <string.h> толгой файл нь тэмдэгт мөрүүдтэй ажиллах дараах
функцуудтай.
Мөрийг хуулбарлах strcpy();
Бичигдэх хэлбэр
char* strcpy(char* s1, const char* s2);
Үйлдэл: s2 мөрийг s1 мөр рүү хуулна.
Мөрүүдийг нэгтгэх strcat();
Бичигдэх хэлбэр
char* strcat(char* s1, const char* s2);
Үйлдэл: S2 мөрийг s1 мөрний төгсгөлд холбоно.
Тэмдэгт мөр
Мөрийн уртыг олох strlen();
Бичигдэх хэлбэр
char* strlen(char* s1);
Үйлдэл: S1 мөрийн уртыг буцаана.
Мөрийг харьцуулах strcmp();
Бичигдэх хэлбэр
char* strcmp(char* s1, const char* s2);
Үйлдэл: s1 ба s2 ижил байвал 0 буцаана; s1<s2 бол 0-ээс бага; s1> s2 бол
0-ээс их.
Жич: Хэрэглэгч s2 тэмдэгт мөрүүдийг гараас оруулж дуусаад 0 тэмдэгтийг
оруулснаар тэмдэгт мөр дуусна.
Тэмдэгт мөртэй
ажиллах
/функц ашиглаагүй
жишээ/
Тэмдэгт мөр
Жишээ №3: Мөр дэх тэмдэгтүүдийн давтамжийг олох
1. #include <stdio.h>
2. int main() {
3. char str[1000], ch; int count = 0;
4. printf("Enter a string: ");
5. fgets(str, sizeof(str), stdin);
6. printf("Enter a character to find its frequency: ");
7. scanf("%c", &ch);
8. for (int i = 0; str[i] != '0'; ++i)
9. {
10. if (ch == str[i]) ++count;
11.}
12.printf("Frequency of %c = %d", ch, count);
13.return 0;
14.}
Үр дүн:
Enter a string: This website is awesome.
Enter a character to find its frequency: e
Frequency of e = 4
Тэмдэгт мөр
Жишээ №4: Мөр дэх тэмдэгтүүдээс эгшиг, гийгүүлэгч, тоог олох
1. include <stdio.h>
2. int main() {
3. char line[150]; int vowels, consonant, digit, space;
4. vowels = consonant = digit = space = 0;
5. printf("Enter a line of string: ");
6. fgets(line, sizeof(line), stdin);
7. for (int i = 0; line[i] != '0'; ++i) {
8. if (line[i] == 'a' || line[i] == 'e' || line[i] == 'i' || line[i] == 'o' || line[i] == 'u' ||
9. line[i] == 'A' || line[i] == 'E' || line[i] == 'I' || line[i] == 'O' || line[i] == 'U')
10. { ++vowels; }
11. else if ((line[i] >= 'a' && line[i] <= 'z') || (line[i] >= 'A' && line[i] <= 'Z'))
12. { ++consonant; }
13. else if (line[i] >= '0' && line[i] <= '9') { ++digit; } else if (line[i] == ' ')
14. { ++space; } }
15. printf("Vowels: %d", vowels);
16. printf("nConsonants: %d", consonant);
17. printf("nDigits: %d", digit);
18. printf("nWhite spaces: %d", space);
19. return 0; }
Үр дүн:
Enter a line of string: adfslkj34 34lkj343 34lk
Vowels: 1
Consonants: 11
Digits: 9
White spaces: 2
Тэмдэгт мөр
Жишээ №5: Бичсэн өгүүлбэрийг дэд функц буюу рекурс ашиглан
урвуу хэлбэр рүү шилжүүлэх
1. #include <stdio.h>
2. void reverseSentence();
3. int main() {
4. printf("Enter a sentence: ");
5. reverseSentence(); return 0;
6. }
7. void reverseSentence()
8. {
9. char c; scanf("%c", &c);
10.if (c != 'n') { reverseSentence(); printf("%c", c); }
11.}
Үр дүн:
Enter a sentence: margorp emosewa
awesome program
Тэмдэгт мөр
Жишээ №6: Мөрийн уртыг олох
1. #include <stdio.h>
2. int main()
3. {
4. char s[] = "Programming is fun";
5. int i; for (i = 0; s[i] != '0'; ++i);
6. printf("Length of the string: %d", i);
7. return 0;
8. }
Үр дүн:
Length of the string: 18
Тэмдэгт мөр
Жишээ №7: Хоёр мөрийг нэгтгэх
1. #include <stdio.h>
2. int main() {
3. char s1[100] = "programming ", s2[] = "is awesome"; int length, j;
4. // store length of s1 in the length variable
5. length = 0;
6. while (s1[length] != '0') { ++length; }
7. // concatenate s2 to s1
8. for (j = 0; s2[j] != '0'; ++j, ++length)
9. { s1[length] = s2[j]; }
10. // terminating the s1 string
11. s1[length] = '0';
12. printf("After concatenation: ");
13. puts(s1);
14. return 0; }
Үр дүн:
After concatenation:
programming is awesome
Тэмдэгт мөр
Жишээ №8: Мөрийг хуулбарлах
1. #include <stdio.h>
2. int main()
3. {
4. char s1[100], s2[100], i;
5. printf("Enter string s1: ");
6. fgets(s1, sizeof(s1), stdin);
7. for (i = 0; s1[i] != '0'; ++i)
8. { s2[i] = s1[i]; }
9. s2[i] = '0';
10. printf("String s2: %s", s2);
11. return 0;
12. }
Үр дүн:
Enter string s1: Hey fellow programmer.
String s2: Hey fellow programmer.
1. #include <stdio.h>
2. int main() {
3. char line[150];
4. printf("Enter a string: ");
5. fgets(line, sizeof(line), stdin); // take input
6. for (int i = 0, j; line[i] != '0'; ++i) {
7. // enter the loop if the character is not an alphabet
8. // and not the null character
9. while (!(line[i] >='a' && line[i] <='z') && !(line[i] >='A' && line[i] <='Z') && !(line[i] =='0'))
10. { for (j = i; line[j] != '0'; ++j) {
11. // if jth element of line is not an alphabet,
12. // assign the value of (j+1)th element to the jth element
13. line[j] = line[j + 1]; } line[j] = '0'; } }
14. printf("Output String: ");
15. puts(line);
16. return 0; }
Тэмдэгт мөр
Жишээ №9: Цагаан толгойноос бусад тэмдэгт тэмдэгтүүдийг устгах
Үр дүн:
Enter a string: p2'r-o@gram84iz./
Output String: programiz
Тэмдэгт мөртэй
ажиллах
/функц ашигласан
жишээ/
Тэмдэгт мөр
Жишээ №10: Мөрийн уртыг strlen() функц ашиглах олох
1. #include <stdio.h>
2. #include <string.h>
3. int main() {
4. char a[20]="Program";
5. char b[20]={'P','r','o','g','r','a','m','0'};
6. // using the %zu format specifier to print size_t
7. printf("Length of string a = %zu n",strlen(a));
8. printf("Length of string b = %zu n",strlen(b));
9. return 0;
10.}
Үр дүн:
Length of string a = 7
Length of string b = 7
Тэмдэгт мөр
Жишээ №11: Strcat() ашиглан хоёр мөрийг нэгтгэх
1. #include <stdio.h>
2. #include <string.h>
3. int main() {
4. char str1[100] = “Programming", str2[] = “C 2020";
5. // concatenates str1 and str2
6. // the resultant string is stored in str1.
7. strcat(str1, str2);
8. puts(str1);
9. puts(str2);
10.return 0; }
Үр дүн:
Programming C 2020
Programming
Тэмдэгт мөр
Жишээ №12: Strcpy() ашиглан мөрийг хуулбарлах
1. #include <stdio.h>
2. #include <string.h>
3. int main()
4. {
5. char str1[] = "abcd", str2[] = "abCd", str3[] = "abcd";
6. int result;
7. // comparing strings str1 and str2
8. result = strcmp(str1, str2);
9. printf("strcmp(str1, str2) = %dn", result);
10.// comparing strings str1 and str3
11.result = strcmp(str1, str3);
12.printf("strcmp(str1, str3) = %dn", result);
13.return 0;
14. }
Үр дүн:
C programming
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "abcd", str2[] = "abCd", str3[] = "abcd";
int result;
// comparing strings str1 and str2
result = strcmp(str1, str2);
printf("strcmp(str1, str2) = %dn", result);
// comparing strings str1 and str3
result = strcmp(str1, str3);
printf("strcmp(str1, str3) = %dn", result);
return 0;
}
Тэмдэгт мөр
Жишээ №13: strcmp() функц ашиглан мөрүүдийг харьцуулах
Үр дүн:
strcmp(str1, str2) = 32
strcmp(str1, str3) = 0
Тайлбар:
str1 ба str2 мөрүүдийн хоорондох
харьцуулахад гурав дахь тэмдэгт ‘с' -ийн
ASCII утга 99, 'C' -ийн ASCII утга 67
байна. Тиймээс буцах утга 32 болно.
Str1 ба str3 мөрүүдийг харьцуулж үзэхэд
хоёр мөр адилхан тул үр дүн нь 0 болно.

Лекц №12

  • 1.
  • 2.
  • 3.
    Тэмдэгт мөр Тэмдэгт мөрийн эхлэл Тэмдэгт мөрийг зааглагч “ ” Хоосон тэмдэгтмөр “H” тэмдэгт мөр Тэмдэгт мөрийн төгсгөл Тэмдэгт мөр төрлийн массивын төгсгөл биш Массивын хэсэг боловч мэмдэгт мөр төрлийн хэсэг биш Тэмдэгт ‘H’
  • 4.
    Тэмдэгт мөр Тэмдэгтийг данхашилт ‘ ’ дотор, тэмдэгт мөрийг давхар хашилт “ “ дотор бичнэ. Тэмдэгтийн зарлах char s[5]; Тэмдэгтэд анхны утга оноох char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '0'}; char c[5] = {'a', 'b', 'c', 'd', '0'}; Тэмдэгт Тэмдэгт мөр
  • 5.
    Тэмдэгт мөр Жишээ №1:Тэмдэгтийг scanf(); функцээр гараас оруулах #include <stdio.h> int main() { char name[20]; printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; } Үр дүн: Enter name: Dennis Ritchie Your name is Dennis. D e n n i s - [0] [1] [2] [3] [4] [5] [6]name Утга Дээрх жишээнд Dennis Ritchie гэсэн тэмдэгт мөрний зөвхөн "Dennis" хадгалагдаж байна. "Dennis" дараа хоосон зай авсанаас хойшх тэмдэг мөр хадгалагдахгүй.
  • 6.
    Тэмдэгт мөр Жишээ №2:Тэмдэгтийг fgets() функцээр гараас оруулж, puts() хэвлэх #include <stdio.h> int main() { char name[30]; printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; } Үр дүн: Enter name: Tom Hanks Name: Tom Hanks T o m H a n k s [0] [1] [2] [3] [4] [5] [6] [7] [8]name Утга Хэрэглэгчийн оруулсан мөрийг уншихын тулд fgets() функцийг ашигласан болно.
  • 7.
    Тэмдэгт мөр fgets() функцынбичигдэх хэлбэр fgets(нэр, sizeof(нэр), stdin); // read string sizeof(name) дээд тал нь 30 тэмдэгт авах боломжтой. Мөрийг хэвлэхийн тулд бид puts(name); -ийг ашигласан болно. Тэмдэглэл: get() функц нь хэрэглэгчийн оролтыг авах явдал байж болно. Гэсэн хэдий ч С стандартаас хасагдсан болно. Get() нь дурын урт тэмдэгт оруулах боломжийг олгодогтой холбоотой юм. Тиймээс буфер хальж магадгүй юм.
  • 8.
  • 9.
  • 10.
    Тэмдэгт мөр Тэмдэгт мөрийгашиглахаас өмнө тэмдэгт мөрт зориулсан санах ойг хуваарилах ёстой.
  • 11.
  • 12.
    Тэмдэгт мөр Мөртэй ажилладагфункцууд C <string.h> толгой файл нь тэмдэгт мөрүүдтэй ажиллах дараах функцуудтай. Мөрийг хуулбарлах strcpy(); Бичигдэх хэлбэр char* strcpy(char* s1, const char* s2); Үйлдэл: s2 мөрийг s1 мөр рүү хуулна. Мөрүүдийг нэгтгэх strcat(); Бичигдэх хэлбэр char* strcat(char* s1, const char* s2); Үйлдэл: S2 мөрийг s1 мөрний төгсгөлд холбоно.
  • 13.
    Тэмдэгт мөр Мөрийн уртыголох strlen(); Бичигдэх хэлбэр char* strlen(char* s1); Үйлдэл: S1 мөрийн уртыг буцаана. Мөрийг харьцуулах strcmp(); Бичигдэх хэлбэр char* strcmp(char* s1, const char* s2); Үйлдэл: s1 ба s2 ижил байвал 0 буцаана; s1<s2 бол 0-ээс бага; s1> s2 бол 0-ээс их. Жич: Хэрэглэгч s2 тэмдэгт мөрүүдийг гараас оруулж дуусаад 0 тэмдэгтийг оруулснаар тэмдэгт мөр дуусна.
  • 14.
  • 15.
    Тэмдэгт мөр Жишээ №3:Мөр дэх тэмдэгтүүдийн давтамжийг олох 1. #include <stdio.h> 2. int main() { 3. char str[1000], ch; int count = 0; 4. printf("Enter a string: "); 5. fgets(str, sizeof(str), stdin); 6. printf("Enter a character to find its frequency: "); 7. scanf("%c", &ch); 8. for (int i = 0; str[i] != '0'; ++i) 9. { 10. if (ch == str[i]) ++count; 11.} 12.printf("Frequency of %c = %d", ch, count); 13.return 0; 14.} Үр дүн: Enter a string: This website is awesome. Enter a character to find its frequency: e Frequency of e = 4
  • 16.
    Тэмдэгт мөр Жишээ №4:Мөр дэх тэмдэгтүүдээс эгшиг, гийгүүлэгч, тоог олох 1. include <stdio.h> 2. int main() { 3. char line[150]; int vowels, consonant, digit, space; 4. vowels = consonant = digit = space = 0; 5. printf("Enter a line of string: "); 6. fgets(line, sizeof(line), stdin); 7. for (int i = 0; line[i] != '0'; ++i) { 8. if (line[i] == 'a' || line[i] == 'e' || line[i] == 'i' || line[i] == 'o' || line[i] == 'u' || 9. line[i] == 'A' || line[i] == 'E' || line[i] == 'I' || line[i] == 'O' || line[i] == 'U') 10. { ++vowels; } 11. else if ((line[i] >= 'a' && line[i] <= 'z') || (line[i] >= 'A' && line[i] <= 'Z')) 12. { ++consonant; } 13. else if (line[i] >= '0' && line[i] <= '9') { ++digit; } else if (line[i] == ' ') 14. { ++space; } } 15. printf("Vowels: %d", vowels); 16. printf("nConsonants: %d", consonant); 17. printf("nDigits: %d", digit); 18. printf("nWhite spaces: %d", space); 19. return 0; } Үр дүн: Enter a line of string: adfslkj34 34lkj343 34lk Vowels: 1 Consonants: 11 Digits: 9 White spaces: 2
  • 17.
    Тэмдэгт мөр Жишээ №5:Бичсэн өгүүлбэрийг дэд функц буюу рекурс ашиглан урвуу хэлбэр рүү шилжүүлэх 1. #include <stdio.h> 2. void reverseSentence(); 3. int main() { 4. printf("Enter a sentence: "); 5. reverseSentence(); return 0; 6. } 7. void reverseSentence() 8. { 9. char c; scanf("%c", &c); 10.if (c != 'n') { reverseSentence(); printf("%c", c); } 11.} Үр дүн: Enter a sentence: margorp emosewa awesome program
  • 18.
    Тэмдэгт мөр Жишээ №6:Мөрийн уртыг олох 1. #include <stdio.h> 2. int main() 3. { 4. char s[] = "Programming is fun"; 5. int i; for (i = 0; s[i] != '0'; ++i); 6. printf("Length of the string: %d", i); 7. return 0; 8. } Үр дүн: Length of the string: 18
  • 19.
    Тэмдэгт мөр Жишээ №7:Хоёр мөрийг нэгтгэх 1. #include <stdio.h> 2. int main() { 3. char s1[100] = "programming ", s2[] = "is awesome"; int length, j; 4. // store length of s1 in the length variable 5. length = 0; 6. while (s1[length] != '0') { ++length; } 7. // concatenate s2 to s1 8. for (j = 0; s2[j] != '0'; ++j, ++length) 9. { s1[length] = s2[j]; } 10. // terminating the s1 string 11. s1[length] = '0'; 12. printf("After concatenation: "); 13. puts(s1); 14. return 0; } Үр дүн: After concatenation: programming is awesome
  • 20.
    Тэмдэгт мөр Жишээ №8:Мөрийг хуулбарлах 1. #include <stdio.h> 2. int main() 3. { 4. char s1[100], s2[100], i; 5. printf("Enter string s1: "); 6. fgets(s1, sizeof(s1), stdin); 7. for (i = 0; s1[i] != '0'; ++i) 8. { s2[i] = s1[i]; } 9. s2[i] = '0'; 10. printf("String s2: %s", s2); 11. return 0; 12. } Үр дүн: Enter string s1: Hey fellow programmer. String s2: Hey fellow programmer.
  • 21.
    1. #include <stdio.h> 2.int main() { 3. char line[150]; 4. printf("Enter a string: "); 5. fgets(line, sizeof(line), stdin); // take input 6. for (int i = 0, j; line[i] != '0'; ++i) { 7. // enter the loop if the character is not an alphabet 8. // and not the null character 9. while (!(line[i] >='a' && line[i] <='z') && !(line[i] >='A' && line[i] <='Z') && !(line[i] =='0')) 10. { for (j = i; line[j] != '0'; ++j) { 11. // if jth element of line is not an alphabet, 12. // assign the value of (j+1)th element to the jth element 13. line[j] = line[j + 1]; } line[j] = '0'; } } 14. printf("Output String: "); 15. puts(line); 16. return 0; } Тэмдэгт мөр Жишээ №9: Цагаан толгойноос бусад тэмдэгт тэмдэгтүүдийг устгах Үр дүн: Enter a string: p2'r-o@gram84iz./ Output String: programiz
  • 22.
  • 23.
    Тэмдэгт мөр Жишээ №10:Мөрийн уртыг strlen() функц ашиглах олох 1. #include <stdio.h> 2. #include <string.h> 3. int main() { 4. char a[20]="Program"; 5. char b[20]={'P','r','o','g','r','a','m','0'}; 6. // using the %zu format specifier to print size_t 7. printf("Length of string a = %zu n",strlen(a)); 8. printf("Length of string b = %zu n",strlen(b)); 9. return 0; 10.} Үр дүн: Length of string a = 7 Length of string b = 7
  • 24.
    Тэмдэгт мөр Жишээ №11:Strcat() ашиглан хоёр мөрийг нэгтгэх 1. #include <stdio.h> 2. #include <string.h> 3. int main() { 4. char str1[100] = “Programming", str2[] = “C 2020"; 5. // concatenates str1 and str2 6. // the resultant string is stored in str1. 7. strcat(str1, str2); 8. puts(str1); 9. puts(str2); 10.return 0; } Үр дүн: Programming C 2020 Programming
  • 25.
    Тэмдэгт мөр Жишээ №12:Strcpy() ашиглан мөрийг хуулбарлах 1. #include <stdio.h> 2. #include <string.h> 3. int main() 4. { 5. char str1[] = "abcd", str2[] = "abCd", str3[] = "abcd"; 6. int result; 7. // comparing strings str1 and str2 8. result = strcmp(str1, str2); 9. printf("strcmp(str1, str2) = %dn", result); 10.// comparing strings str1 and str3 11.result = strcmp(str1, str3); 12.printf("strcmp(str1, str3) = %dn", result); 13.return 0; 14. } Үр дүн: C programming
  • 26.
    #include <stdio.h> #include <string.h> intmain() { char str1[] = "abcd", str2[] = "abCd", str3[] = "abcd"; int result; // comparing strings str1 and str2 result = strcmp(str1, str2); printf("strcmp(str1, str2) = %dn", result); // comparing strings str1 and str3 result = strcmp(str1, str3); printf("strcmp(str1, str3) = %dn", result); return 0; } Тэмдэгт мөр Жишээ №13: strcmp() функц ашиглан мөрүүдийг харьцуулах Үр дүн: strcmp(str1, str2) = 32 strcmp(str1, str3) = 0 Тайлбар: str1 ба str2 мөрүүдийн хоорондох харьцуулахад гурав дахь тэмдэгт ‘с' -ийн ASCII утга 99, 'C' -ийн ASCII утга 67 байна. Тиймээс буцах утга 32 болно. Str1 ба str3 мөрүүдийг харьцуулж үзэхэд хоёр мөр адилхан тул үр дүн нь 0 болно.