Hiển thị các bài đăng có nhãn scanf. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn scanf. Hiển thị tất cả bài đăng

Thứ Sáu, 30 tháng 1, 2015

Xử lý nhập chuỗi kí tự với gets() và puts() - input string with gets()/puts() trong C#

Xử lý nhập chuỗi kí tự với gets() và puts() - input string with gets()/puts()

Nếu các bạn đã biết về các lệnh vào ra printf  và scanf thì bây giờ mình sẽ giới thiệu tới gets puts, về cơ bản thì cũng gần tương tự như printf và scanf những khi sử dụng hàm scanf để nhập dữ liệu cho biến chuỗi thì lúc này ta chỉ có thể nhập được một chuỗi không có dấu khoảng trắng. ngoài ra hàm cget() (trong conio.h) cũng được sử dụng để nhập chuỗi.

 Lý Thuyết

– Sử dụng hàm gets() là cách đơn giản nhất để nhập một chuỗi thông qua thiết bị nhập chuẩn. Các ký tự sẽ được nhập vào cho đến khi nhấn phím Enter. Hàm gets() thay thế ký tự kết thúc trở về đầu dòng ‘\n’ bằng ký tự ”. Cú pháp hàm như sau:

code:
gets(str);


– Trong đó str là một mảng ký tự đã được khai báo.
– Tương tự, hàm puts() được sử dụng để hiển thị một chuỗi ra thiết bị xuất chuẩn. Ký tự xuống dòng sẽ kết thúc việc xuất chuỗi. Cú pháp hàm như sau
code:


puts(str);


– Trong đó str là một mảng ký tự đã được khai báo và khởi tạo.

một số bài tập:

để tiện theo dõi những bài tập sau đây các bạn có thể tải tài code và bài giải mình làm sẵn TẠI ĐÂY.


1.   Write a program to accept and add three numbers.

Dịch: viết 1 chương trình chấp nhận và thêm 3 số.

Phân tích từng bước:


  • - Khai báo kiểu dữ liệu số nguyên cho i,j,k;
  • - vào lần lượt từng số với lệnh printf và scanf.
  • - in ra màn hình với lệnh printf 3 số vừa nhập vào

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
 int i,j,k;
 printf("nhap vao so thu 1:");
 scanf("%d",&i);
 printf("nhap vao so thu 2:");
 scanf("%d",&j);
 printf("nhap vao so thu 3:");
 scanf("%d",&k);
 printf("so nhap vao la : %d, : %d, : %d",i,j,k);
 
 
 printf("\n\n\n");
 system("pause");
 return 0;
 
}



in-ra-man-hinh-3-so-vua-nhap
kết quả in ra màn hình 3 số vừa nhập





Bài 2: For the following values, write a program to evaluate the expression


z = a*b+(c/d)-e*f ;



  a=10

  b=7

  c=15.75

  d=4

  e=2

  f=5.6      


dịch: đối với các giá trị sau... viết chương trình để thực hiện biểu thức:

z = a*b+(c/d)-e*f ;


trong đó
  a=10
  b=7
  c=15.75
  d=4
  e=2
  f=5.6     


phân tích từng bước:
- khai báo z,a,b,c,d,e,f là biến số thực
- in ra màn hình dòng lệnh nhập vào a,b,c,d,e,f
- đọc các số từ màn hình
- tính z theo công thức z = a*b+(c/d)-e*f ;
- in Z ra màn hình.

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
 printf("nhap vao cac so a,b,c,d,e.f: ");
 float z,a,b,c,d,e,f;
 scanf("%f%f%%f%f%f",&a,&b,&c,&d,&e,&f);  
 printf ("\nz = a*b+(c/d)-e*f =  %0.2f ",a*b+(c/d)-e*f); 
 printf("\n\n\n");
 system("pause");
 return 0;
 
}





tinh-z-a-b-c-d-e-f
tính Z = a*b + (c/d) - e*f




Bài 3. Write a program to evaluate the area and perimeter of the rectangle.

dịch: viết chương trình tính diện tích và chu vi hình chữ nhật.

Phân tích từng bước:

  • - định dang i,j là biến nguyên. 
  • - nhập và đọc i,j là các cạnh chiều dài và rộng của hình chữ nhật cần tính. 
  • - ra màn hình diện tích hình chữ nhật 
  • - ra màn hình chu vi hình chữ nhật


#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
 int i,j;
 printf("nhap chieu dai hinh chu nhat = ");
 scanf("%d",&i);
 printf("nhap chieu rong hinh chu nhat = ");
 scanf("%d",&j);
 printf("dien tich hinh chu nhat la: %d, chu vi hinh chu nhat la: %d",i*j,i+i+j+j); 
 printf("\n\n\n");
 system("pause");
 return 0; 
}

dien-tic-va-chu-vi-hinh-chu-nhat
tính diện tích và chu vi hình chữ nhật

Bài 4.  Write a program to evaluate the volume of a cylinder.

dịch : viết chương trình tính dung tích của 1 xilanh

Phân tích từng bước:
  • - khai báo số nguyên i,j
  • - yêu cầu nhập đường kính vào chiều cao của xi lanh
  • - vào chiều cao và đường kính với i và j là số nguyên
  • - ra màn hình thể tích của xi lanh (thể tích hình trụ bằng diện tích đáy nhân chiều cao)


#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
 int i,j;
 printf("nhap duong kinh day cua xilanh: ");
 scanf("%d",&i);
 printf("nhap chieu cao cua xilanh: ");
 scanf("%d",&j);
 printf("dung tich cua xilanh hinh tru la: %0.2f",3.14*i*i/2*j);
 
 printf("\n\n\n");
 system("pause");
 return 0; 
}


tinh-the-tich-xi-lanh-hinh-tru
tính thể tích hình trụ

5.  Write a program to evaluate the net salary of an employee given the following constraints

Basic salary : $ 12000
DA : 12% of Basic salary
HRA : $150
TA : $120
Others : $450
Tax cuts – a) PF :14% of Basic salary and b) IT: 15% of Basic salary
Net Salary = Basic Salary + DA + HRA + TA + Others – (PF + IT)

dịch: viết 1 chương trình để đánh giá mực lương của nhân viên theo các số liệu sau

Basic salary : $ 12000
DA : 12% of Basic salary
HRA : $150
TA : $120
Others : $450
Tax cuts – a) PF :14% of Basic salary and b) IT: 15% of Basic salary
Net Salary = Basic Salary + DA + HRA + TA + Others – (PF + IT)

Phân tích từng bước :
  • - khai báo a,b,c,d là biến số nguyên:
  • - khai báo i,j,k,l là biến số thực
  • - vào basic salary
  • - đọc basic salary với biến a
  • - tính DA = 12% basic salary
  • - vào HRA với biến b
  • - vào TA với biến c
  • - vào other với biến d
  • - tính PF = 14% basic salary
  • - tính IT = 15% basic salary
  • - tính Net Salary = Basic Salary + DA + HRA + TA + Others – (PF + IT)
  • - đưa ra màn hình kết quả cuối cùng của net salary



#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
 int a,b,c,d;
 float i,j,k,l;
 printf("basic salary = ");
 scanf("%d",&a);
 printf("DA = %0.2f",0.12*a);
 printf("\nHRA = ");
 scanf("%d",&b);
 printf("TA = ");
 scanf("%d",&c);
 printf("other = ");
 scanf("%d",&d);
 printf("PF = %0.2f\nIT= %.2f",0.14*a,0.15*a);
 //Net Salary = Basic Salary + DA + HRA + TA + Others – (PF + IT)
 printf("\nNet Salary=BasicSalary+DA+HRA+TA+Others-(PF+IT)= %0.2f",a+0.12*a+b+c+d-0.14*a-0.15-a);
 
 printf("\n\n\n");
 system("pause");
 return 0;
 
}



net-salary
Tính net salary

Nhận xét: đây là những kiến thức căn bàn về nhập xuất dữ liệu với số, kí tự, chuỗi kí tự rất quan trọng và chúng ta cần phải nắm rõ mới có thể đi tiếp các bài sau.


Thứ Tư, 28 tháng 1, 2015

sử dụng dev-C ++ để viết một chương trình ( Using dev-C++ to write a program ) .

sử dụng dev-C để viết một chương trình ( Using dev-C to write a program ) .


đây là những chương trình nâng cao của phần nhập xuất dữ liệu căn bản và bổ xung thêm các thao tác cơ bản với biến bao gồm có biết số, biến kí tự, và biến chuỗi kí tự để làm được phần này các bạn cần phải có kiến thức cơ bản về nhập xuất căn bản các bạn có thể đọc TẠI ĐÂY.

và để tiện theo dõi bài viết thì các bạn nên tải toàn bộ code và chương trình mình đã làm sẵn TẠI ĐÂY chúc các bạn có 1 buổi học tập vui vẻ :)


Bài 1. Use the printf( )  statement and do the following

a)    Print out the value of the integer variable sum

b)  Print out the text string "Welcome", followed by a new line.

c)  Print out the character variable letter

d)  Print out the float variable discount

e) Print out the float variable dump using two decimal places

dịch : sử dụng lênh printf để làm những việc sau:

a) in ra giá trị số nguyên của biến sum.

b) in ra chuỗi "welcome", sau đó giãn 1 dòng mới.

c) in ra biến kí tự letter.

d) in ra biến số thực discount.

e) in ra biến số thực dump với 2 số sau dấu phẩy



phân tích từng bước:

  • - định dang biến số nguyên sum.
  • - gán giá trị cho biến sum
  • - in định dạng số nguyên %d với biến sum
  • - in chữ "welcome" và xuống dòng với lệnh \n
  • - định dạng biến chuỗi kí tự letter
  • - gán giá trị cho biến letter.
  • - in định dang chuỗi %s với biến kí tự letter.
  • - định dạng biến số thực float
  • - gán cho biến discount
  • - in định dang số thực %f với biến discount
  • - gán cho biến dump
  • - in định dang số thực với 2 số sau dấu phẩy %0,2f với biến dump





#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int sum;
sum = 12;
printf("%d",sum);
printf("\nWelcome \n\n");
char *letter;
letter = "chu~ gi cung duoc";
printf ("%s",letter);
float discount = 12.1212;
printf("\n%f",discount);
float dump = 12.1212;
printf("\n%0.2f\n\n",dump); system("pause");
return 0;
}


viet-chuong-trinh-voi-dev-C
sử dụng dev-C ++ để viết một chương trình




Nhận xét: các lệnh càng ngày càng phức tạp với khai báo biến kí tự bắt buộc thêm dấu * phía trước biến khai báo và khi xuất dữ liệu thì thêm 0,2 phía sau %d để định dang kiểu in là những điều cần lưu ý hơn cả.



Bài 2. B. Use the scanf( )  statement and do the following:
 a) To read a decimal value from the keyboard, into the integer variable sum
 b) To read a float variable into the variable discount_rate
dịch: sử dụng scanf() để thực hiện việc sau:a) Đọc giá trị từ bàn phím và in ra biến sum.b) đọc biến số thực và in ra biến discount_rate


phân tích từng bước:
  • - khai báo số nguyên sum
  • - in ra màn hình yêu cầu vào sum
  • - vào giá trị số nguyên %d với biến sum
  • - in biến sum với định dang kiểu số nguyên %d
  • - khai báo số thực discount_rate
  • - in ra màn hình yêu cầu nhập vào discoun_rate
  • - vào giá trị số thực %f với biến discoun_rate
  • - in biến discoun_rate với dang số thực %f



#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int sum;
printf("SUM = ");
scanf("%d",&sum);
printf("\nBien SUM ban vua nhap la: %d \n",sum);
float discount_rate;
printf("\nNhap 1 so thuc (co dang XX.XXX): ");
scanf("%f",&discount_rate);
printf("\nso thuc ban vua nhap la: %f",discount_rate);
printf("\n\n");
system("pause");
return 0;
}



use-the-scanf
Use the scanf( )  statement and do the following



nhận xét: bài này không có gì mới so với bài trước nên không có nhận xét :v :v :v



bài 3. Write a program which takes name, basic , daper ( ie, percentage of D.A), bonper (ie, percentage bonus) and loandet ( loan amount to be debited) for an employee. Calculate the salary using the following relation:



salary = basic + basic * daper /100 +bonper                 

        *  basic/100 - loandet

Data is :

 
 
name
basic
daper
bonper
loandet
MARK
2500
55
33.33
250.00


Calculate salary and then print the result under the following headings.
(Salary to be printed to the nearest dollar.)
        Name                                    Basic                        Salary

dịch: viết 1 chương trình nhập vào name, basic, daper, bonper và loandet cho 1 nhân viên. tính lương sử dụng quan hệ sau:
salary = basic + basic * daper /100 +bonper                 
        *  basic/100 - loandet
Data is :


name
basic
daper
bonper
loandet
MARK
2500
55
33.33
250.00

 

Tính lương và sau đó in kết quả theo các tiêu đề sau đây.
(Mức lương sẽ được in với đồng đô la gần nhất.)
        Name                                    Basic                        Salary

Phân tích từng bước:
  • - khai báo name kích thước 20 ô nhớ với kiểu kí tự char.
  • - khai báo basic và daper là biến số nguyên
  • - khai báo biến số thực bonper, loandet, salary.
  • - in ra yêu cầu và quét name
  • - in ra yêu cầu và quét basic, daper, bonper, loandet, salary.
  • - tinh salary theo công thức salary = basic + basic * daper/100 + bonper *  basic/100 - loandet.
  • - in chữ name , basic, salary giãn cách bằng lệnh \t
  • - in biến nam , basic, salary giãn cách bằng lệnh \t



#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
char name[20];
int basic, daper;
float bonper, loandet, salary;
printf("Name: ");
scanf("%s",name);
printf("\nbasic = ");
scanf("%d",&basic);
printf("\ndaper = ");
scanf("%d",&daper);
printf("\nbonper = ");
scanf("%f",&bonper);
printf("\nloandet = ");
scanf("%f",&loandet);
salary = basic + basic * daper/100 + bonper *  basic/100 - loandet; printf("\nName \tBasic \tSalary");
printf("\n%s\t%d\t%0.2f",name,basic,salary); printf("\n\n");
system("pause");
return 0;
}

man-hinh-dev-C
màn hình chạy bài 3

Nhận xét: ngoài những lệnh đã quen thuộc thì bài này có dùng lên lệnh \t để giãn tab thành từng cột khiến cho các số vào đúng với các vị trí mà ta mong muốn.



Bài 4. Write a program that asks for your first name and last name, and then prints the names in the format last name, first name.
dịch: 4. Viết chương trình hỏi tên đầu tiên và cuối cùng tên, và sau đó in ra các tên trong định dạng tên cuối cùng, tên đầu tiên.



phân tích từng bước:
  • - khai báo biến xâu kí char tự a,b 
  • - in ra màn hình yêu cầu vào tên chính
  • - đọc tên họ từ màn hình với biến a
  • - in ra màn hình yêu cầu vào tên họ
  • - đọc tên họ từ màn hình với biến b
  • - in ra  định dang tên họ tên ---- b trước a sau


#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
char a[15],b[15],c[15];
printf("first name ? : ");
scanf("%s",a);
printf("last name ? : ");
scanf("%s",b); printf("mid name ? : ");
scanf("%s",c);
printf("\n\nten day du cua ban la: %s %s %s \nten day du dao nguoc cua ban la: %s %s %s (=]]) \nten rut gon cua ban la: %s %s \nnhung minh thich goi ban la: %s %s ~(^.^)~ \n\nTen ban rat hay chuc ban co mot ngay vui ve!",b,c,a,a,c,b,b,a,c,a); printf("\n\n");
system("pause");
return 0;
}

in-ten-day-du
chương trình in tên đầy đủ

nhận xét: bài 4 lại là 1 bài mình cảm thấy dễ thứ 2 sau bài 1 và các bạn nên nghịc thêm và in nhiều dòng khác ra như mình để tạo hứng thú trong học tập vì học C khô khan lắm... không biết pha trò thì cũng sớm thành cù lần mà thôi :v :v :v


chúc các bạn có một ngày vui vẻ... các bạn nên download tài liệu mình đề trên đầu trang để tiện theo dõi bài viết :)

Sử dụng dev-C ++ làm một số bài tập (Using dev-C++ do some exercises)

Sử dụng dev-C ++ làm một số bài tập (Using dev-C++ do some exercises)

Sau đây mình xin hướng dẫn các bạn sử dụng C để viết một số trương trình đơn giản nhất có thể :)
trước hết các bạn cần phải nắm được mã giả và sơ đồ khối... nêu chưa rõ các bạn có thể theo dõi bài viết cũ của mình TẠI ĐÂY để hiểu về 2 vấn đề trên thì sẽ dễ dàng hơn trong mục tiếp theo này.

Để tiện theo dõi bài viết các bạn tải full code và chương trình mình làm sẵn TẠI ĐÂY. 


phân tích từng bước

  • - vì đây là chương trình chỉ hiện tên tuổi và địa chỉ nên ta sẽ dùng 1 lệnh printf với cả 3 dòng và xuống dòng bằng \n 
cú pháp : printf(" "); trong đó khu vực trong ngoặc sẽ hiển thị ra màn hình.



#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
printf(" Day la chuong trinh in ten, tuoi, dia chi: \n\n - Pham Tuan Ngoc\n\n - 19 tuoi \n\n - Nha o duong Truong Dinh \n\n ------- chuc cac ban mot ngay vui ve ------- \n\n\n");
system("pause");
return 0;
}


ten-tuoi-dia-chi
khung chạy của chương trình C hiển thị tên tuổi và địa chỉ





Nhận xét: đây là lệnh cơ bản cần nắm kĩ... end.





Bài 2. Write a program that accepts a number and square the number To do this.  

dịch :viết chương trình nhập vào 1 số và hiển thị ra màn hình bình phương số đó


  • phân tích từng bước: 
  • - đinh dạng a, b là số nguyên
  • - in ra màn hình dòng chữ yêu cầu nhập số bất kì với lênh printf.
  • - đọc vào biến a với lệnh scanf
  • - gán b = a*a
  • - in ra màn hình b là bình phương a vừa nhập
cú phápprintf("%d",a);   scanf("%d",&a); trong đó %d là định dạng kiểu nhập xuất dữ liệu ở đây là kiểu số nguyên đã khai là là int  còn &a có & là kí tự bắt buộc trong thủ tục để xác định vì trí nhập %d vào...


#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a,b;
printf (" \n chuong trinh in ra so binh phuong cua so nhap vao: \n\n Nhap so bat ki: ");
scanf("%d",&a);b=a*a;
printf("\n\n\n binh phuong cua: %d la: %d \n\n\n\n\n",a,b);
system("pause");
return 0;
}


binh-phuong
chương trình bình phương số nhập vào







Nhận xét: đây là lệnh vào ra cơ bản của C cần nắm kĩ và đối với người mời học C như mình rất dễ nhầm vì khả năng tiếng anh kém kèm gõ phím chậm nên rất khó chịu các bạn cần lưu ý và cần phải nắm rõ về định dạng nhập xuất dữ liệu sau dấu % và sau dấu &... đây là lỗi cơ bản mà người mới học C đều mắc phải...





Bài 3. Write a C program that accepts the salary and age from the user and displays the same on the screen as output.
dịch: Viết một chương trình C chấp nhận mức lương và tuổi từ người dùng và hiển thị trên cùng một màn hình như đầu ra.

Phân tích từng bước:
  • - khai báo a,b là số nguyên.
  • - ra màn hình chữ xin mời nhập tiền:
  • - đọc định dạng số nguyên %d với biến a
  • - ra màn hình chữ xin mời nhập tuổi.
  • - đọc định dạng số nguyên %d với biến b
  • - in ra màn hình định dang số nguyên %d của cả a và b



#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a,b;
printf("Day la chuong trinh hien tuoi va tien luong duoc nhap vao ban phim:\n\n\n\n Xin moi ban nhap so tien luong (dv: 1000d):  ");
scanf("%d",&a);
printf("\n\n\n\ Xin moi ban nhap so tuoi: ");
scanf("%d",&b);
printf("\n\n\n Vay so tien luong la: %d 000d va so tuoi la: %d \n\n\n\n",a,b);
system("pause");
return 0;
}



tien-luon-va-tuoi
chương trình hiện tiền lương và tuổi




nhận xét: đây là sự kết hợp giữa lệnh ra màn hình và lệnh đọc... cũng chính là input và output ở mức đơn giản nhất... và cần phải nắm kĩ những kiến thức này mới có thể tiếp tục học môn C một cách thuần thục được :)



kết luận: trên đây là 3 bài cơ bản nhất về lệnh vào ra của C+ để hiểu bài viết tốt hơn các bạn nên tải phần làm sẵn của mình có link sẵn ở đầu bài viết... chúc các bạn vui vẻ :)