mình có bài tập C này chưa biết giải ntn cả ạn nà giúp mình với (mình dùng dev c 4.9)
4. Viết chương trình nhập vào một chuỗi ký tự. Đếm số từ có trong chuỗi đó (mỗi từ cách nhau bởi dấu cách)
nếu là dấu cách thì bạn chuẩn hóa xâu chỉ có dấu cách giữa các từ, không có cách đầu đuôi khi đó số từ bằng số dấu cách +1
Giao lưu và học hỏi
https://www.facebook.com/kimcy1992
Mình code được như thế này nhưng không biết sai ở đâu bạn nào bảo mình vs @@
Code:#include <conio.h> #include<stdio.h> #include<string.h> main() { char n[1000]; int dem=0, a; printf("Nhap chuoi:\n\t"); gets(n, 100, stdin); a = strlen(str); for (int i=0; i<a; i++ ) { if (str[i] != ' ' && str[i] != '\t') if (str[i++] == ' ' || str[i++] == '\t' || str[i++] == NULL) dem++; } printf("So tu cua chuoi la %d tu.\n\n", dem); getch(); }
bạn sai str chưa khai báo, hàm gets sai cú phápp của nó phải là char * gets ( char * str ); ,str[i++] == NULL không là con trỏ nên không đặt NULL được nếu bạn muốn là kí tự kết thúc thì str[i++] == '\0';. Thuật toán thì mình không hiểu ý đồ của bạn nhập cả dấu tap vào là gì.
Giao lưu và học hỏi
https://www.facebook.com/kimcy1992
Mình sửa lại ntn rồi mà vẫn chưa được bạn ạ
số từ đếm của mình vẫn toàn 0 thôi, bạn sửa chi tiết giúp mình vớiCode:#include <conio.h> #include<stdio.h> #include<string.h> main() { char n[1000]; int dem=0, a; printf("Nhap chuoi: "); gets(n); a = strlen(n); for (int i=0; i<a; i++ ) { if (n[i] != ' ' && n[i] != '\t') if (n[i++] == ' ' || n[i++] == '\t' || n[i++] == '\0') dem++; } printf("So tu cua chuoi la %d tu.\n\n", dem); getch(); }
haizz!!! trên kia mọi người đã nói rồi mà!!!
C Code:
int demtu(char str[]) { int i,dem=0; if(str[i]==' '&&str[i+1]!=' '&&str[i+1]!='\0') dem++; if(str[0]!=' ') dem++; return dem; }
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char s[50];
int dem=0 , flag=0;
printf(" \n\n Nhap vao chuoi s: ") ;
gets(s);
for(int i= 0 ; i<=strlen(s); i++)
{
if(s[i]==' '||s[i]=='\0')
{
if(flag==1)
{
dem +=1;
flag=0;
}
}
else
{
flag=1;
}
}
printf(" \n\n So tu co trong chuoi la: %d ",dem);
return 0;
}
Thực ra không nên viết những câu ntn:
vì strlen() sẽ bị tính lại, mà ta biết rõ nó là hằng.C Code:
Code:#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int demTu(char str[]) { int dem = 0; int DoDai = strlen(str); for (int i = 0; i < DoDai; i++) { if (str[i++] == ' ') dem++; } return dem; } int main() { char n[1000]; printf("Nhap chuoi: "); gets(n); int dem = demTu(n); printf("So tu cua chuoi la %d tu.\n\n", dem + 1); return 0; }