§4 Решение задач обработки С-строк

  • Работа с кодовой таблицей (ASCII). Дано целое число N (1 ≤ N ≤ 26). Вывести N последних строчных (то есть маленьких) букв латинского алфавита в обратном порядке (начиная с буквы «z»).
  • #include <iostream>
    using namespace std;
    
    int main() {
    	int n;
    	cout << "N = "; cin >> n;
    	for (int i = 122; i > 122 - n; i--) {
    		cout << (unsigned char)i << " ";
    	}
    	return 0;
    }
    
    N = 10
    z y x w v u t s r q 
    
  • Ввод и вывод строки. Дана непустая строка S. Вывести строку, содержащую символы строки S, между которыми вставлено по одному пробелу
  • #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main() {
    	// Исходная строка
    	char str[] = "uuuuuuuuuuuuuuuuuuu";
    	for (auto i = 0; i < strlen(str); i++)
    		cout << str[i] << " ";
    	cout << endl;
    
    	return 0;
    }
    
    u u u u u u u u u u u u u u u u u u u 
    
  • Изменение символов строки (без изменения размера самого массива). Дана строка латинских символов. Поменять в ней регистр символов (прописные буквы сделать строчными, и наоборот)
  • #include <iostream>
    #include <cctype>
    #include <cstring>
    using namespace std;
    
    int main() {
        int buf = 80;
        char s[buf];
        cout << "Введите строку:" << endl;
        cin.getline(s, buf);
        for (auto i = 0; i < strlen(s); i++) {
        	if (isupper(s[i]))
        		s[i] = char(tolower(int(s[i])));
        	else
        		s[i] = char(toupper(int(s[i])));
        }
        cout << s << endl;
        return 0;
    }
    
    Введите строку:
    ddddDDDDDddddd
    DDDDdddddDDDDD
    
  • Изменение строки с помощью строки-буфера. Дан символ C и строка S. Удвоить каждое вхождение символа C в строку S
  • #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main() {
    	char c[2];
    	unsigned int i = 0, j = 0;
    	cout << "Введите символ:" << endl;
    	cin.getline(c,2);
    	int buf = 80;
    	char s[buf];
    	char s_buf[buf * 2];
    	cout << "Введите строку:" << endl;
    	cin.getline(s, buf);
    	while (i < strlen(s)) {
    		if (s[i] != c[0]) {
    			strcpy(&s_buf[j], &s[i]);
    		} else {
    			strcpy(&s_buf[j], &c[0]);
    			++j;
    			strcpy(&s_buf[j], &c[0]);
    		}
    		++i; ++j;
    	}
    	cout << s_buf << endl;
    	return 0;
    }
    
    Введите символ:
    s
    Введите строку:
    sdssds
    ssdssssdss
    
  • Практические задания
  • 1. Дан символ C. Вывести его код (то есть номер в кодовой таблице).
    2. Дана непустая строка. Вывести коды ее первого и последнего символа.
    3. Дана строка. Преобразовать в ней все латинские строчные буквы в прописные, а прописные — в строчные.


Print Friendly, PDF & Email

Добавить комментарий