Nêu cách xác định xâu ? Cách khai báo? Các phép toán xử lí xâu? Cho ví dụ?
Nêu cách xác định xâu ?
Tham khảo:
- Một xâu là một dãy các kí tự (trong bảng mã ASCII), có thể coi xâu như một mảng một chiều mà mỗi phần tử là một kí tự. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu có độ dài bằng 0 là xâu rỗng.Khai báo. Biến kiểu xâu có thể khai báo như sau: ...
Các thao tác xử lí xâu. ...
Một số ví dụ
- Một xâu là một dãy các kí tự (trong bảng mã ASCII), có thể coi xâu như một mảng một chiều mà mỗi phần tử là một kí tự. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu có độ dài bằng 0 là xâu rỗng.
...Khai báo. Biến kiểu xâu có thể khai báo như sau: ..
.Các thao tác xử lí xâu. ...
Một số ví dụ
Viết chương trình nhập vào từ bàn phím một xâu có thể chưa chuẩn về dấu cách, hãy loại bỏ các dấu cách thừa có trong xâu đó. Ví dụ : ' Hoc tap suot doi ''Hoc tap suot doi'
Cách làm:
+ Xóa dấu cách thừa ở đầu và cuối xâu: Kiểm tra cứ khi nào ký tự đầu tiên hoặc kí tự cuối của xâu S: là dấu cách thì xóa bỏ.
+Xóa dấu cách thừa ở giữa các từ: Cứ khi nào s[i] và s[i+1] đều là dấu cách thì xóa đi 1 dấu cách.
#include <bits/stdc++.h>
using namespace std;
int d,i,d1;
string st;
int main()
{
getline(cin,st);
d=st.length();
while (st[0]==32)
{
st.erase(0,1);
}
while (st[d-1]==32)
{
st.erase(d-1,1);
}
d1=st.length();
for (i=0; i<d1; i++)
if ((st[i]==32) && st[i+1]==32)
{
st.erase(i,1);
i--;
}
cout<<st;
return 0;
}
Xâu kí tự được gọi là đối xứng nêu thay đổi thứ tự ngược lại các kí tự của xâu thì vẫn nhận được dãy ban đầu. Ví dụ xâu “abcdcba" là đối xứng, còn xâu “1011” không là đối xứng. Thiết kế và viết chương trình kiểm tra một xâu kí tự cho trước có là đối xứng hay không. Yêu cầu đưa ra quy trình thiết kế theo phương pháp làm mịn dần.
Tham khảo:
Quy trình thiết kế theo phương pháp làm mịn dần để kiểm tra xâu kí tự có là đối xứng hay không gồm các bước sau:
Bước 1: Nhận đầu vào là xâu kí tự cần kiểm tra.
Bước 2: Loại bỏ các kí tự không cần thiết, chẳng hạn khoảng trắng và dấu cách, để chuẩn bị cho quá trình kiểm tra.
Bước 3: Chuyển đổi xâu kí tự về dạng chữ thường hoặc dạng chữ hoa (tuỳ thuộc vào yêu cầu của đề bài) để đảm bảo tính nhất quán trong quá trình kiểm tra.
Bước 4: Sử dụng một vòng lặp để so sánh các kí tự ở đầu và cuối xâu kí tự, sau đó di chuyển lần lượt về phía nhau.
Bước 5: Trong quá trình lặp lại, so sánh các kí tự ở hai vị trí tương ứng với nhau. Nếu chúng khác nhau, xâu kí tự không là đối xứng và chương trình dừng lại, trả về kết quả là "Không đối xứng".
Bước 6: Nếu các kí tự ở hai vị trí tương ứng với nhau đều giống nhau, tiếp tục di chuyển các con trỏ về phía nhau và so sánh các kí tự tiếp theo cho đến khi hoàn thành kiểm tra toàn bộ xâu kí tự.
Bước 7: Nếu tất cả các cặp kí tự ở vị trí tương ứng với nhau đều giống nhau, tức là xâu kí tự là đối xứng, chương trình dừng lại và trả về kết quả là "Đối xứng".
Bước 8: Kết thúc chương trình và đưa ra kết quả cuối cùng.
Chương trình:
def kiem_tra_doi_xung(xau):
# Loại bỏ các kí tự không cần thiết và chuyển đổi xâu về dạng chữ thường
xau = xau.replace(" ", "").lower()
n = len(xau)
# Sử dụng vòng lặp để kiểm tra từ đầu và cuối xâu kí tự
for i in range(n // 2):
if xau[i] != xau[n - i - 1]:
return "Không đối xứng"
return "Đối xứng"
Cho biến xâu s. Viết các lệnh tương ứng
a/Khai báo s
b/ nhập xâu s
c/ xuất ra màn hình độ dài xâu s
d/ đưa ra màn hình các chữ số có trong xâu
a/ var s: string;
b/ readln(s);
c/ write(length(s));
d/ for i:=1 to length(s) do if s[i] in ['0'..'9'] then write(s[i]);
ĐỀ CƯƠNG ÔN TẬP HK I MÔN TIN 8
1. Biến là gì? Hằng là gì? Cách khai báo biến và hằng? Nêu sự khác nhau giữa biến và hằng? Cho ví dụ về khai báo biến và hằng?
2. Quá trình giải bài toán trên máy tính gồm mấy bước, nêu rõ các bước?
3. Hãy xác định Input, output và mô tả thuật toán tính tổng các số tự nhiên chia hết cho 3 không lớn hơn n.
4. Hãy xác định Input, output và mô tả thuật toán cho biết 3 số a, b, c là độ dài ba cạnh của một tam giác hay không?
5. Cho biết cú pháp của câu lệnh điều kiện dạng thiếu và dạng đủ?
6. Viết chương trình nhập hai số nguyên a và b khác nhau từ bàn phím. In hai số đó ra màn hình theo thứ tự không giảm.
7. Viết chương trình nhập ba số nguyên a, b, c từ bàn phím, in ra màn hình kết quả số lớn nhất trong 3 số vừa nhập.
8. Viết thuật toán tìm số chẵn trong dãy số a1, a2,a3…(an n>=1)
9. Viết thuật toán tính tổng 100 số tự nhiên đầu tiên.
Xâu đối xứng
Cho một xâu ký tự SS chỉ gồm các chữ cái thường a..z. Xâu đối xứng là xâu kí tự mà khi viết từ phải qua trái hay từ trái qua phải thì xâu đó không thay đổi. Ví dụ: madammadam, ioiioi là các xâu đối xứng.
Yêu cầu: Với xâu ký tự SS cho trước, hãy tính số ký tự bỏ đi ít nhất để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Ví dụ:
Cho xâu aammmda thì cần bỏ 2 ký tự a và m thì xâu còn lại là ammda và xếp lại thành madam là xâu đối xứng.
Cho xâu aaabbcc thì không cần bỏ ký tự thì xâu đó xếp lại thành bcaaacb là xâu đối xứng.
Dữ liệu vào
Đọc từ file văn bản XAUDX.INP chứa một xâu ký tự SS có nn ký tự (n≤105n≤105) chỉ gồm các ký tự chữ cái thường a..z.
Kết quả
Ghi ra file văn bản XAUDX.OUT một số nguyên là số lượng ký ít nhất cần bỏ để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Sample Input 1
aammmda
Sample Output 1
2
Sample Input 2
aaabbcc
Sample Output 2
0
Lưu ý :Dùng C++
#include<bits/stdc++.h>
using namespace std;
int main(){
long long i,dem[1000],d;
string s;
cin >>s;
for(i=0;i<s.size();i++)
dem[s[i]]++;
d=0;
for(i=97;i<=122;i++)
if(dem[i]%2==1)
d++;
if(d>0)
cout<<d-1;
else
cout<<0;
return 0;
}
Xâu đối xứng
Cho một xâu ký tự SS chỉ gồm các chữ cái thường a..z. Xâu đối xứng là xâu kí tự mà khi viết từ phải qua trái hay từ trái qua phải thì xâu đó không thay đổi. Ví dụ: madammadam, ioiioi là các xâu đối xứng.
Yêu cầu: Với xâu ký tự SS cho trước, hãy tính số ký tự bỏ đi ít nhất để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Ví dụ:
Cho xâu aammmda thì cần bỏ 2 ký tự a và m thì xâu còn lại là ammda và xếp lại thành madam là xâu đối xứng.
Cho xâu aaabbcc thì không cần bỏ ký tự thì xâu đó xếp lại thành bcaaacb là xâu đối xứng.
Dữ liệu vào
Đọc từ file văn bản XAUDX.INP chứa một xâu ký tự SS có nn ký tự (n≤105n≤105) chỉ gồm các ký tự chữ cái thường a..z.
Kết quả
Ghi ra file văn bản XAUDX.OUT một số nguyên là số lượng ký ít nhất cần bỏ để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Sample Input 1
aammmda
Sample Output 1
2
Sample Input 2
aaabbcc
Sample Output 2
0
Lưu ý :Dùng C++
Đếm số lần xuất hiện của các kí tự 'a'..'z' trong xâu S. Dễ thấy với các kí tự có số lần xuất hiện là chẵn, ta có thể xếp một nửa kí tự đó sang 2 bên thỏa mãn tính chất đối xứng. Đối với kí tự có số lần xuất hiện là lẻ, ta làm tương tự và đưa kí tự còn lại vào trung tâm. Như vậy, để xâu sau khi xóa đối xứng thì chỉ có duy nhất một kí tự có số lần xuất hiện lẻ nên ta sẽ xóa các kí tự lẻ đó, chỉ để lại 1 hoặc 0 cái cuối cùng.
code tham khảo:
int main()
{
string s;
cin >> s;
vector<int> fre(256, 0);
for (char c : s) fre[c]++;
int res = 0;
for (int x : fre) res += (x % 2 == 1);
cout << res - (res > 0);
return 0;
}
Viết chương trình nhập vào 1 xâu bất kì a) thông báo ra màn hình số lượng dấu cách có trong xâu b) thay tất cả dấu cách có trong xâu thành dấu gạch nối c) in ra xâu ngược lại
Mình cần gấp
CÁC VÍ DỤ:
AI. TRẮC NGHIỆM:
Câu 1: Khai báo bản tin độ dài tối đa 255?
Câu 2: S1:=11; và S2:=’11’; giống nhau đúng hay sai?
Trả lời:
Câu 3:
Lệnh
S[5];
để tham chiếu đến kí tự thứ 5 trong xâu S đúng không?
Trả lời:
Câu 4: Khai báo 1 xâu S có độ dài tối đa 100?
Trả lời:
Câu 5: Var stl:char; st2:string[1];
Lệnh gán stl:=st2; đúng không? Giải thích?
Trả lời:
Câu 6: Trong ngôn ngữ lập trình Pascal, xâu có độ dài bằng 0 gọi là......
A. Xâu rỗng
B. Xâu không
C. Không phải là xấu
D. Xâu trắng
Câu 7: Phát biểu nào sau đây sai:
A. Xâu có độ dài bằng 0 là xâu rỗng. C. Số lượng kí tự trong 1 xâu gọi là độ dài của xâu.
B. Xâu là 1 kí tự trong bảng mã ASCII
D. Mỗi kí tự được gọi là 1 phần tử của
Var
xâu.
b
Câu 8: Phép gán giá trị biến xâu(S) nào sau đây đúng?
A. S:='tin hoc'
B. S:="tin hoc";
C. S:=tin hoc;
D. S:= 'tin hoc'
6 Câu 9: Write (ha Noi > ‘ ha nam’) cho kết quả ?
A. True
B. False
Câu 10: ‘học + Tin
thực hiện phép ghép xâu trên cho kết quả gì?
A. 'Tinhoc'
D. 'hocTin'
B. 'Tin hoc'
C. 'hoc Tin'
*
Câu 11: Write (‘May tinh’>= ‘May tinh’) cho kết quả ?
A. True
B. False
I/.
II
Câu 12: Cho xâu st= 'chuc mung nam moi !', hãy chọn giá trị tham chiếu đúng:
A. st[6]=''
D. st[6]='c'
B. st[6]='m'
C. st[6]='u'
II