| | Một ví dụ cuối cùng về C mà cô cho trên lớp | |
| | Tác giả | Thông điệp |
---|
nbp2983 Gà con
Tổng số bài gửi : 23 Join date : 18/06/2009
| Tiêu đề: Một ví dụ cuối cùng về C mà cô cho trên lớp Tue Jul 07, 2009 9:20 am | |
| - Code:
-
#include<stdio.h> #include<conio.h> #include<string.h> //khai bao ham con void nhap(int *n, char s[][50]); void sap(int n, char s[][50]); int kt(char s[]); void dem(int n, char s[][50]); void cat(int n, char s[][50]); int ktdx(char s[]); void dx(int n, char s[][50]); void noi(int n, char s[][50], char a[500]); //dinh nghia ham main void main() { int n; char s[10][50],a[500]=""; clrscr(); nhap(&n,s); sap(n,s); dem(n,s); cat(n,s); dx(n,s); noi(n,s,a); getch(); } //dinh nghia ham con void nhap(int *n, char s[][50]) { int i; printf("\nnhap n(1->10)="); scanf("%d",n); while(*n<1||*n>10) { printf("\nnhap lai n(1->10)="); scanf("%d",n); } printf("\nnhap %d chuoi:\n",*n); for(i=0;i<*n;i++) { printf("s[%d]: ",i); fflush(stdin); gets(s[i]); } } void sap(int n, char s[][50]) { int i,j; char t[50]; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(s[i],s[j])>0) { strcpy(t,s[i]); strcpy(s[i],s[j]); strcpy(s[j],t); } printf("\nmang sau khi sap xep:\n"); for(i=0;i<n;i++) puts(s[i]); } int kt(char s[]) { int i,d=0; for(i=0;i<strlen(s)-1;i++) if(s[i]==' '&&s[i+1]!=' ') d++; if(s[0]!=' ') d++; return d; } void dem(int n, char s[][50]) { int i; printf("\nso tu trong chuoi:\n"); for(i=0;i<n;i++) { printf("\n"); printf("s[%d]: %d",i,kt(s[i])); } } void cat(int n, char s[][50]) { int i,j; char t[10][50]; for(i=0;i<n;i++) strcpy(t[i],s[i]); for(i=0;i<n;i++) while(s[i][0]==' ') for(j=0;j<strlen(s[i]);j++) s[i][j]=s[i][j+1]; printf("\ndo dai chuoi truoc va sau khi cat:\n"); for(i=0;i<n;i++) if(t[i][0]==' ') { printf("\ndoi voi chuoi thu %d :\n",i); printf("\ndo dai truoc: %d",strlen(t[i])); printf("\ndo dai sau: %d",strlen(s[i])); printf("\n"); } } int ktdx(char s[]) { int i,k,d=0; k=strlen(s); for(i=0;i<k/2;i++) if(s[i]==s[k-1-i]) d++; if(d==k/2) return 1; else return 0; } void dx(int n, char s[][50]) { int i,d=0; for(i=0;i<n;i++) if(ktdx(s[i])==1) d++; printf("\nso chuoi doi xung: %d",d); printf("\ncac chuoi doi xung: \n"); for(i=0;i<n;i++) if(ktdx(s[i])==1) puts(s[i]); } void noi(int n, char s[][50], char a[500]) { int i; for(i=0;i<n;i++) strcat(a,s[i]); printf("\nchuoi sau khi noi:\n"); puts(a); }
| |
| | | haph86 Gà mới lớn
Tổng số bài gửi : 40 Join date : 04/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Tue Jul 07, 2009 1:37 pm | |
| em đã test thử, với một chuỗi rỗng ( không nhập gì ) thì kết quả không đúng, anh kiểm tra lại xem sao | |
| | | nbp2983 Gà con
Tổng số bài gửi : 23 Join date : 18/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Tue Jul 07, 2009 4:34 pm | |
| em Hà à, anh cũng test lại với chuỗi rỗng rồi, chạy vẫn đúng mà, chú ý chuỗi rỗng phải là hai dấu nháy kép đứng liền nhau, tức là s[10]="", em thử lại xem sao!
Được sửa bởi nbp2983 ngày Tue Jul 07, 2009 11:54 pm; sửa lần 1. | |
| | |
Join date : 01/01/1970
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Tue Jul 07, 2009 9:58 pm | |
| tại sao lại là 2 nháy kép đứng liền nhau em không hiểu theo em hiểu rỗng là ko có gì ko nhập vào gì mà chỉ enter thôi . | |
| | | nbp2983 Gà con
Tổng số bài gửi : 23 Join date : 18/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Tue Jul 07, 2009 11:24 pm | |
| cách giải thích sau sẽ đầy đủ và thuyết phục hơn: -chuỗi rỗng trước hết phải là một chuỗi chỉ gồm một (thậm chí nhiều) ký tự rỗng, chú ý ký tự rỗng vẫn là một ký tự và được ký hiệu bởi \0(nó ko hiện nên được màn hình, có mã C là 0), do đó hằng ký tự rỗng được viết là '\0' (gồm một cặp dấu nháy đơn, cũng viết NULL), vậy nên chuỗi rỗng được viết như sau: s[10]="\0" (gồm một cặp dấu nháy kép), hoặc đơn giản hơn nhưng trình biên dịch vẫn hiểu, đó là: s[10]="" (hai dấu nháy kép phải đứng liền nhau, nếu cách ra nó sẽ hiểu là ký tự cách) -cách hiểu chuỗi rỗng là ko có gì, ko nhập vào, mà chỉ enter thôi là sai, vì khi đó nó không phải một chuỗi, do không có một ký tự nào được nhập vào cả( việc nhấn enter ko phải là nhập ký tự). hihi thế là OK! | |
| | | haph86 Gà mới lớn
Tổng số bài gửi : 40 Join date : 04/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 9:13 am | |
| -Vâng, coi như không quan tâm đến chuỗi rỗng, khi nhập chuỗi em chỉ gõ enter, kết quả ra sai, ở phần đếm từ của chuỗi. Anh kiểm tra lại xem sao. -"cách hiểu chuỗi rỗng là ko có gì, ko nhập vào, mà chỉ enter thôi là sai," -> anh thử test đoạn code sau của em xem nhập như thế là đúng hay sai nhé : - Code:
-
#include<stdio.h> #include<conio.h> void main() { char a[10]; clrscr(); printf("Nhap chuoi: "); fflush(stdin); gets(a); if(a[0]=='\0') printf(" 1 "); else printf(" 0 "); getch(); }
| |
| | | haph86 Gà mới lớn
Tổng số bài gửi : 40 Join date : 04/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 9:46 am | |
| Em còn chút thắc mắc, theo anh:"nếu chỉ gõ enter thôi là sai, vì khi đó nó không phải một chuỗi" nhưng khi thực hiện như thế, em vẫn có thể gọi hàm strlen(); và trả về kết quả là 0. Nếu không phải một chuỗi thì tại sao hàm strlen() trong thư viện string.h vẫn thực hiện được??? Vả lại, em chưa hiểu lắm chuỗi có nhiều ký tự rỗng là chuỗi ntn, anh có thể lấy ví dụ minh họa cho dễ hiểu hơn đc ko? Thanhs anh | |
| | | nbp2983 Gà con
Tổng số bài gửi : 23 Join date : 18/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 10:31 am | |
| -à anh hiểu ý của em rồi, ý hiểu của anh lúc đầu là cần một định nghĩa rõ ràng cho chuỗi rỗng, và anh đã định nghĩa chuỗi rỗng như trên(để nhập trong code). -nhưng các em lại đang thắc mắc về nhập chuỗi rỗng từ bàn phím để chạy chương trình thì chương trình của anh chưa xử lý được trường hợp này, anh ghi nhận, và anh khắc phục như sau(ở hàm kt, thực ra trong phạm vi thi cử thì làm như trên là ăn điểm maximum rồi, không tin thì hỏi cô, hii...): - Code:
-
int kt(char s[]) { int i,d=0; if(s[0]=='\0') d=0; else { for(i=0;i<strlen(s)-1;i++) if(s[i]==' '&&s[i+1]!=' ') d++; if(s[0]!=' ') d++; } return d; }
-bàn tiếp về chuỗi rỗng trong code, chuỗi rống có thể viết s[10]="" hoặc s[10]="\0" hoặc s[10]="\0\0\0" đây là trường hợp nhiều ký tự rỗng mà trình biên dịch vấn hiểu, hay gán luôn ký tự đầu là rống cũng được, tức là: s[0]='\0' cũng viết s[0]=NULL. -còn khi nhập từ bàn phím để chạy chương trình ta chỉ ấn enter thì trình biên dịch tự hiểu đó là nhập chuỗi rỗng (lúc đầu anh chưa hiểu ý em Hà nên cứ đi vào định nghĩa chuỗi rống, dù sao thì đó cũng là đ/n đầy đủ về chuỗi rỗng, hihi..., tái bút: chúc cả lớp thi tốt!!)
Được sửa bởi nbp2983 ngày Wed Jul 08, 2009 3:39 pm; sửa lần 1. | |
| | | nbp2983 Gà con
Tổng số bài gửi : 23 Join date : 18/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 10:48 am | |
| tâm sự ngoài giờ hành chính: qua nhiều lần trao đổi mình thấy em Hà của lớp chúng ta rất thông minh, anh Nghĩa chúc riêng em Hà thi đạt kết quả cao cực đại, và thành công hơn nữa trong các môn học sau=>thành đạt trong cuộc sống(đ.p.c.m!)_hihi, mình vốn dĩ là dân toán mà. | |
| | | haph86 Gà mới lớn
Tổng số bài gửi : 40 Join date : 04/06/2009
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 11:58 am | |
| ok anh, chạy ngon rồi chúc anh 100% cả thực hành và lý thuyết nhé | |
| | |
Join date : 01/01/1970
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 4:14 pm | |
| âhahahahaahaa - Code:
-
Qua nhiều lần xem 2 anh trao đổi mình thấy anh Nghĩa và anh Hà của lớp chúng ta rất thông minh. Xuống dòng Em (Hưng) xin chúc 2 anh Nghĩa + Hà thi đạt kết quả cao cực đại, và thành công hơn nữa trong các môn học sau=>thành đạt trong cuộc sống(đ.p.c.m!)_hihi, em chưa fai? dân toán hehehehe. kệ cứ chúc nhau thế cho xôm
SPAM tý hehehehe ma` em hiểu cái rỗng ="" rồi thanks anh nhé | |
| | | spyware Đại Bàng Tinh
Tổng số bài gửi : 116 Join date : 04/06/2009 Age : 39 Đến từ : HN
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp Wed Jul 08, 2009 5:15 pm | |
| à thì ra thế. bây giờ thì cũng hiểu rồi. í quên. đang nói gì thế | |
| | | Sponsored content
| Tiêu đề: Re: Một ví dụ cuối cùng về C mà cô cho trên lớp | |
| |
| | | | Một ví dụ cuối cùng về C mà cô cho trên lớp | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |