Friday 15 November 2013

IT Leader - a.Hoang Ngoc Dieu.

IT leader nghiêng hẳn về phía technical và thiếu những kỹ năng quản lý doanh nghiệp thường bị cái bệnh kinh niên là khoái "đồ chơi" mới để vọc, thậm chí để... khoe (còn dạng đốc lô, xúc để mua đồ "xịn" nhằm "cắn" vài phần trăm bỏ túi thì loại này khỏi phải nhắc đến). Dạng IT leader này quên hẳn mục tiêu của doanh nghiệp là tạo ra GIẢI PHÁP hình thành hệ thống và công cụ mạnh mẽ, hiệu suất nhưng ít tốn kém, ít hư hao nhất chớ không phải là chỗ xài tiền để "sắm đồ chơi" .

IT leader nghiêng hẳn về phía quản lý thường xem nhẹ vai trò của công nghệ đối với doanh nghiệp. Họ thường nghĩ rằng những chi phí cho IT là "gánh nặng" chớ không phải là nhu cầu cần thiết. Dạng IT leader nghiêng về quản lý thường bị sức ép tiền bạc và các xếp ở trên "đè xuống" cho nên lắm lúc họ tìm cách làm vui lòng cả làng bằng cách cắt xén làm sao để nhìn cho "đẹp mắt" và vô tình tạo ra những vấn đề khó khăn lâu dài.

Vậy, mẫu người IT leader một cách lý tưởng cần gì? Theo tôi thấy và đã rút tỉa sau nhiều năm làm việc thì mẫu người ấy nên là như sau:

1. Họ cần hiểu rất rõ nhu cầu (requirements). Hiểu càng cụ thể, càng tường tận càng tốt. Họ không nên tưởng tượng, giả định và ngộ nhận về requirements vì đó là điểm trọng yếu dẫn đến thất bại và tốn kém về sau.

2. Họ cần cân bằng và chính xác giữa tài nguyên (nhân lực, tiền bạc, thời gian) và nhu cầu. Cân bằng giữa technology và chuyện tiết kiệm hoặc lợi nhuận của doanh nghiệm không thì sẽ bị đi đến chỗ què cụt trong giải pháp hoặc quá sức lãng phí.

3. Họ cần đặt mình vào vị trí mỗi thành viên mà họ quản lý. Hiểu rõ cá tính, thói quen, điểm yếu, điểm mạnh của thành viên để có thể giao phó những công việc và trách nhiệm khác nhau cho phù hợp bởi vì không phải ai cũng như ai. Nếu IT leader thiếu hụt mảng "con người" trong công việc thì kết quả lúc nào cũng khó mà trọn vẹn và tốt đẹp.

4. Họ cần có tầm nhìn gần và xa. Nắm được chiến lược và chiến thuật làm kinh tế của doanh nghiệp để hình thành những giải pháp hỗ trợ cho doanh nghiệp một cách sâu sát thay vì chỉ nhìn vào nhu cầu trước mắt, dẫn đền tình trạng "giải pháp" bị... chết non.

5. Họ cần hình thành hoặc làm việc với mọi người để hình thành GIẢI PHÁP thay vì dựa vào các SẢN PHẨM. Lắm IT Leader nhầm lẫn "sản phẩm" là "giải pháp". Sản phẩm chỉ là cấu thành của giải pháp và không bao giờ là giải pháp.

6. Họ cần trung thực và nghiêm khắc với chính mình và với mọi người. Bất cứ khi nào họ lâm vào chỗ giả vờ hoặc che đậy những thiếu sót, những sai lầm thì ngay lúc đó họ đã thất bại. Một công trình chỉ có thể thành công nếu những sai sót được xác định đúng lúc và điều chỉnh đúng mức.

7. Họ cần hiểu "leader" không phải là tước hiệu mà là TRÁCH NHIỆM. Họ chính là người cần dẫn dắt, giúp đỡ và cần có trách nhiệm với mọi sự việc và với mọi thành viên chung quanh họ chớ không phải là ai khác.

8. Họ cần tin tưởng và tôn trọng vào khả năng của mọi người. Đừng đối xử các thành viên như những con số hoặc những cỗ máy bởi vì IT không phải là thế giới vô cảm mà nó cần sáng tạo, cần sức sống rất nhiều.


==============================

Vậy, từ 8 điểm trên, mình có thể rút tỉa ra tính chất (hoặc phẩm chất) của một IT leader lý tưởng gồm có:

- hiểu.
- cân bằng.
- chính xác.
- tự đặt mình.
- tầm nhìn.
- hình thành.
- trung thực.
- nghiêm khắc.
- tin tưởng.
- tôn trọng.

Trong đó, hầu hết những phẩm chất đều nghiên về nền tảng đạo đức, về khả năng tự chủ, công bằng và nhân hậu. Chỉ có 3 kỹ năng chuyên môn cần đào luyện:

1. Hiểu: cái này đòi hỏi khả năng đọc, tư duy, phân tích. Từ đó mới đưa ra và phát huy kỹ năng tiếp theo.

3. Chính xác: cái này đòi hỏi tinh thần khoa học, tính tỉ mỉ và kiên nhẫn. Kỹ năng này cần đào luyện rất nhiều qua công việc và những va chạm thực tế. Kỹ năng này cần phẩm chất trung thực và nghiêm khắc hỗ trợ. Không thì khó chính xác.

2. Tầm nhìn: cái này là kỹ năng mang tính "strategic", có nghĩa là đào luyện cho mình khả năng hình thành giải pháp có độ dày và độ dài. Kỹ năng này cần "hiểu" và "chính xác" hỗ trợ rất nhiều. Nếu không thì "tầm nhìn" bị rơi vào chỗ cảm tính.



=====================================

CIO chỉ ra rằng, 8 kỹ năng mà một CIO - chính là IT leader - cần đều không phải là kỹ thuật.

1. Know Your Leadership Style
2. Focus on Strategic Communication
3. Learn How to Develop Talented High-Performance Teams
4. Develop a Strong Technology Strategy
5. Understand Complex Business Problems
6. Know How to Lead in a Crisis
7. Be Able to Market IT to the Business
8. Know the Corporate Culture and Be Willing to Change It
 


=================================

"1. Sự khác nhau, ranh giới giữa skills: technical, management, business và leadership."

Một cách thuần tuý định nghĩa thì:

- technical: thuần tuý kỹ thuật.
- management: thuần tuý quản trị.
- business: thuần tuý thương nghiệp.
- leadership: thuần tuý cấp lãnh đạo.

Một IT leader có thể bao gồm cả bốn cái ở trên và tuỳ vị trí, cái này có thể nhiều hơn cái kia.

Một CIO (chief information officer) chiếm đa số business + leadership + management và một phần nhỏ technical. Ở vị trí này, technical skill của họ thường rất broad và high level ("high level" có nghĩa là tổng thể, đối nghịch với "low level" có nghĩa là đào sâu).

Dưới CIO có thể có nhiều leaders và mỗi leaders có thể có tính năng và trách nhiệm chuyên biệt. Có những leader có đa số là technical và thiểu số là business + leadership focus. Dạng này là dạng technologist. Có những leaders nghiêng hẳn về strategic và business và ít focus đến technical. Dạng này là dạng strategist.

Thông thường những doanh nghiệp nhỏ thì IT leader kiêm nhiệm cả bốn. Những doanh nghiệp lớn thì tách rời và có focus cụ thể 1 hoặc 2 cái ở trên.


2. Thước đo về "performance" và "capability" của một leader khá phức tạp và thường dựa vào kết quả của các công trình + phản hồi của những cá nhân làm việc với leader ấy. Thông thường, mỗi leader và mỗi member có một cái KPI (key performance indicator) cụ thể từng phần một. Cái này do xếp của leader hoặc một uỷ ban nhân sự của doanh nghiệp đưa ra. Ví dụ dựa trên từng criteria cụ thể:

1. Profit & Financials (bao nhiêu %)

2. Technical performance and benefits (bao nhiêu %)

3. Risks and prevention (bao nhiêu %).

4. Business compliance (bao nhiêu %)

5. Leadership performance (bao nhiêu %).

6. Communication and strategy (bao nhiêu %).

7. Projects and deliverables (bao nhiêu %).

Trong mỗi category có những phần cụ thể đánh giá performance và quality. Những cái này chỉ có cái khung chung chung và mỗi doanh nghiệp cần đặt ra tiêu chí và mục tiêu để hình thành KPI một cách cụ thể.

Process đánh giá thì có thể thực hiện theo quý, theo nửa năm và trọn năm. Đánh giá thì có thể từ nhiều tầng khác nhau (từ xếp xuống đồng sự, xuống nhân viên).
 


========================================================

"kỹ năng phân tích không phụ thuộc vào vai trò của IT thế nào nhưng IT Leader sẽ là người ảnh hưởng trực tiếp doanh nghiệp có năng lực đó hay không. Em nhấn mạnh "năng lực của doanh nghiệp", ý muốn nói kỹ năng đó hiện diện khắp nơi trong doanh nghiệp tùy mức độ khác nhau.

Đây một ý cụ thể cho phần câu hỏi của em là "8 kỹ năng đó ảnh hưởng lên các bộ phận đó thế nào?""

----------------

Có lẽ các điểm 1, 2, 4 và 6 hàm chứa những đụng chạm đến analytics.

Để một IT Leader có sự chính xác và tầm nhìn thì anh ta cần phải dựa vào những thông tin và phân tích khoa học và thông tin + phân tích khoa học thì phải đi từ analytics. Chính bản thân anh ta đã có kỹ năng nhận định tình hình một cách tổng quát và có sự nhạy bén trước tình hình rồi. Analytics xuyên qua công cụ hay bất cứ phương tiện nào giúp confirm nhận định tổng thể bằng những con số cụ thể.

Riêng với câu hỏi "8 kỹ năng đó ảnh hưởng lên các bộ phận đó thế nào?" thì phải nói là sự ảnh hưởng trực tiếp và mạnh mẽ nhất là chất lượng công việc và thời hạn hoàn tất công việc được mang lại do 8 đặc tính (không phải 8 kỹ năng, vì trong 8 đặc tính đó có nhiều kỹ năng).

Ví dụ cụ thể hơn, 1 IT manager chịu trách nhiệm một software development division và có requirement là phải release ít nhất là 3 release mỗi quý (chẳng hạn) và giữa mỗi release phải đáp ứng những bug fixes nghiêm trọng, có ưu tiên cao. 8 tính chất kia giúp cho anh ta

- hiểu rõ độ phức tạp và khó khăn của nhu cầu.

- hình thành được chiến lược dàn trải tài lực, nhân lực làm sao cho khoa học và thích hợp. Sắp xếp làm sao để đáp ứng release định kỳ và bug fixes bất định kỳ mà không bị trễ nãi, không đòi hỏi thêm nhiều nhân lực

- không đòi hỏi thêm nhiều máy móc (ngoại trừ trường hợp anh ta justify được lý do một cách cụ thể).

- bảo đảm được chất lượng release xuyên qua cơ chế kiểm soát chất lượng.

- thông cảm và chia sẻ với sức ép công việc để bảo đảm sự đóng góp thật sự của thành viên (ngoài chuyện lương phạn).

- đi sát với thực tế và tiên đoán mức phát triển gia tăng theo tính năng của software gia tăng, nhu cầu thị trường gia tăng.

..v.v...

Tất cả những thứ ấy nhằm mang lại 2 thứ:

1. Chất lượng sản phẩm.
2. Giá thành ổn định.


=================================================

 

Thursday 5 September 2013

KĨ NĂNG LẤY YÊU CẦU CỦA NGƯỜI DÙNG/KHÁCH HÀNG (copy)

KĨ NĂNG LẤY YÊU CẦU CỦA NGƯỜI DÙNG/KHÁCH HÀNG (tham khảo)
 nhân có vài bạn đặt vấn đề kĩ năng mềm của môt IT manager, CIO,... mình muốn bàn về việc lấy user requirements, mà theo mình nó vận dụng được nhiều kĩ năng mềm của một người hành nghề CNTT.

<< entry này sẽ dài, bạn nào ngán đọc dài xin bỏ qua cho. >>

dù là một kĩ sư phần mềm, một người thiết kế PM, một người cung ứng giải pháp PM, một IT manager, hay chí đến một CIO/CTO thì yêu cầu của người dùng (hay khách hàng) đều là đầu mối để chúng ta làm việc, để đáp ứng lại bằng một (hệ) giải pháp. người dùng có thể rât khác nhau đối với các chức năng tạm kể ra bên trên, nhưng làm sao để nắm bắt được các yêu cầu của những đối tương ấy vẫn là trách nhiệm quan trọng của người hành nghề CNTT.

trong nhiều hoàn cảnh, một số người làm CNTT ở VN hiện nay (có thể ở nhiều chức vụ khác nhau) nhận các đặc tả yêu cầu người dùng (user requirements spec.) hay thâm chí đặc tả các thiết kế giải pháp từ người khác. khâu thu thập và lập văn bản các yêu cầu người dùng vì thế được/bị bỏ qua. đó là một thuận lợi ngắn hạn nhưng lại là một thiệt thòi trong dài hạn đối với người hành nghề CNTT. vì lẽ, việc thu thập yêu cầu người dùng là một công đoạn khó khăn và đòi hỏi nhiều bản lĩnh trong toàn bộ chu trình phát triển giải pháp CNTT (và có thể nói, tương tự cho nhiều ngành nghề khác, nhưng ở đây xin thu hẹp trong khung CNTT).

**

một trong những phản ứng “tê tái” nhất mà người nộp kết quả giải pháp phải đón nhận là câu phán: “đây không phải là giải pháp tôi đang mong đợi, tôi đâu có cần cái này? bạn đã làm sai ý tôi rồi!”. úi. và trong kinh nghiệm của ngành nghề này, câu phán đó không phải là điều hiếm khi được nghe.

và hầu như đa phần các trường hợp dẫn đến kêt quả ấy là do khâu lấy yêu cầu người dùng đã không được làm tốt. trong kinh nghiệm bản thân hành nghê và kinh nghiệm làm huấn luyện đào tạo mình có nhận xét: người làm kĩ thuật càng có nhiều "kinh nghiệm kĩ thuật" lại càng dễ có nguy cơ gặp khó khăn khi lấy yêu cầu người dùng, nếu bản thân người ấy không nắm vững các phương pháp để lấy yêu cầu, mà trong đó việc tự "trấn áp" cách nghe, cách hiểu, cách nói, cách tiếp thu vấn đề "rất i tờ" của mình. vấn đề và các trở ngại thì nhiều, do đó, sau nhiều năm chiêm nghiệm, người ta đã đưa ra cả một chuyên ngành về “yêu cầu người dùng”. các bạn quan tâm có thể thử nhờ bạn Google truy tầm qua chủ đề “user requirements”, hoặc chính xác hơn, “requirements engineering” để có thể có được những thông tin, tài liệu liên quan đến chủ đề phức tạp này. nó cũng cho chúng ta thấy mức độ quan trọng và số vốn trí tuệ và kinh nghiệm hiện được thu thập và hệ thống hóa chung quanh chủ đề này ra sao.

ở đây, mình chỉ mong khơi gợi vấn đề, và kêu gọi được sự quan tâm của các bạn đồng nghiệp mới vào nghề, hoặc chưa có cơ hội đối mặt và quan tâm đủ với các thử thách của công việc thu thập yêu cầu người dùng. mình cũng chưa nói đến việc hiểu, phân tích và sau đó là đáp ứng lại với các yêu cầu ấy. hiện nay, ngành software engineering đã đủ trưởng thành đề hệ thống hóa các qui trình, và ngay cả các loại tài liệu, artifacts cần được tạo ra trong suốt các qui trình ấy. ngay cả với các phương pháp agile, một cách này hay cách khác người ta cũng sẽ phải đề cập đến “user requirements” và phương pháp thích hợp để ứng phó với v/đ này. << minh không nhằm đi vào chi tiết của các phương pháp ấy ở đây. các tài liệu, sách vở giáo khoa liên quan sẽ đầy đủ, khúc chiết và có hệ thông hơn những gì mình có thể ghi nhanh ở đây.>>

**

một điều mình cũng thường được nghe (và phần nào trải nghiêm): “lắm khi người khách hàng cũng không biết họ cần/muốn gì.” ở các xã hội mà việc sử dụng CNTT càng giới hạn thì câu này càng được nghe nhều hơn. chắc phải có phần nào sự thật trong ấy.

tuy nhiên, cho phép mình nhận xét vấn đề này ở một góc khác. thường, câu nhận xét trên "đúng" là do chúng ta muốn nghe người khách hàng cho ta biết về cái “giải pháp” mà họ nghĩ là họ cần; và như thế thì họ sẽ bí. đàng khác, người dùng thường phải có một thứ nhu cầu. một thứ vấn đề, nên họ mới cần nói chuyện với chúng ta. cho nên, nếu ta cố tìm cách để nghe cái nhu cầu, những trở ngại, khó khăn ấy (qua tầm nhìn và ngôn ngữ nghiệp vụ của họ) thì cơ hội được nghe họ nói sẽ nhiều hơn. còn “giải pháp” là thứ rồi đây, qua làm việc (có khi gian khổ, nhọc nhằn) với họ, và dựa trên tri thức chuyên môn của người làm CNTT chúng ta hi vọng hình dung ra, thiết kế ra và thực hiện được giúp họ. bỡi thế, hỏi họ “cần gì” trong ý nghĩa “giải pháp” có thể họ sẽ không nói (rõ ràng) được, nhờ họ mô tả tình huống khiến họ ới đên CNTT thì có cơ khá hơn.

<< về phương pháp và công cụ, sách vở sẽ cho chúng ta nhiều cách hiệu quả để đáp ứng với cái nạn "người dùng ko biết họ muốn gì". >>

cũng cần nói thêm, sẽ có những người khách hàng (hoặc người thay mặt cho khách hàng -- thí dụ: bà con marketing, sales, hay product planning :)) sẵn sàng, hồ hỡi đưa ra yêu cầu của họ ở dạng giải pháp. đây thường là một điều đau đầu khác. vì một người dùng / khách hàng có thể sẽ đưa ra một thứ giải pháp sai, hoặc phiến diện, hoặc không thích hợp với những nhu cầu thật sự mà họ đang gặp phải (chưa nói các yếu tố công nghệ, hệ thống, v,v,). nếu người nhận yêu cầu không khéo léo và tinh tế kéo người khách hàng quay về được chính các "yêu cầu thật" của họ thì mối nguy đôi bên sẽ dắt tay nhay đi xuống một lộ trình không mấy sáng sủa. giải pháp ở đầu ra có nguy cơ giải quyết một loại yêu cầu... khác.

các giáo trình, tài liệu về requirements engineering sẽ chi li hơn, đầy đủ hơn về các tình huống và các phương áng (cũng như công cụ, phương tiện) để ứng xử các tình huống ấy, mình xin không bàn thêm. chỉ xin tạm kết: kĩ năng thu thập yêu cầu của người dùng là một kĩ năng rất quan trọng, nó vận dụng nhiều loại kĩ năng mềm của người làm CNTT. tìm hiểu, học tập và rèn luyện các kĩ năng ấy để hoàn thành tốt công đoạn lấy yếu cầu này là một trong những bước cần quan tâm của một người hành nghề CNTT muốn đi xa.

mình sẵn sàng trao đổi thêm với các bạn quan tâm hay có kinh nghiệm khác hơn.
 

Monday 26 August 2013

Top 30 "C" programs asked in interview,,.!!!

Top 30 "C" programs asked in interview,,.!!!
 Programs :

1. Write a program to find factorial of the given number...
2. Write a program to check whether the given number is even or odd.
3. Write a program to swap two numbers using a temporary variable.
4. Write a program to swap two numbers without using a temporary variable.
5. Write a program to swap two numbers using bitwise operators.
6. Write a program to find the greatest of three numbers.
7. Write a program to find the greatest among ten numbers.
8. Write a program to check whether the given number is a prime.
9. Write a program to check whether the given number is a palindrome c number.
10.Write a program to check whether the given string is a palindrome .
11.Write a program to generate the Fibonacci series.
12.Write a program to print"Hello World"without using semicolon anywhere in the code.
13.Write a program to print a semicolon without using a semicolon anywhere in the code.
14.Write a program to compare two strings without using strcmp() function.
15.Write a program to concatenat e two strings without using strcat() function.
16.Write a program to delete a specified line from a text file.
17.Write a program to replace a specified line in a text file.
18.Write a program to find the number of lines in a text file..
19.Write a C program which asks the user for a number between 1 to 9 and shows the number. If the user
inputs a number out of the specified range, the program should show an error and prompt the user for a
valid input.
20.Write a program to display the multiplica tion table of a given number..
21.WAP to check a string is Caliondrom e or not. // Maventic question.
22.WAP to print DONE,witho ut using any loop. // asked to my frnd in any company.
23.WAP to print DONE,witho ut using any loop and any conditonal clause or operators. // asked to me as a cross question of 22th question by the person i asked 22th ques.
24. WAP to find out the longest word in a string.
25.Prog of WORLD MAP. // this code was written by someone,i forgot his name,he won award for this code as short and best c code. JUST FOR FUN //
26.WAP to print the triangle of letters in increasing order of lines..
27.WAP to print'xay'in place of every'a'in a string.// DOC Update on 24-jan-12.
28.Count the Total Number of 7 comming between 1 to 100.
/* I made this code in a way that u can give Upper limit i.e. 100,Lower limit i.e. 1 and the specific number u wants to count in between i.e. 7 */ // asked by: Vishwa Pratap Rana..
29. Code for duplicate' s removal,by Amit Aru.. // Similar question was asked in Maventic 2nd round to me,,
30. WAP to find out if a given number is a power series of 2 or not,withou t any loop and without using % modulo operator.. // asked by someone on BJS..

TO BE CONTINUED. ..!!!

ANSWERS

1. Write a program to find factorial of the given number.
Recursion: A function is called'recursive 'if a statement within the body of a function calls the same function. It
is also called'circular definition '. Recursion is thus a process of defining something in terms of itself.
Program: To calculate the factorial value using recursion.
#include
int fact(int n);
int main(){
int x, i;
printf("En ter a value for x: \n");
scanf("%d" ,&x);
i = fact(x);
printf("\n Factorial of %d is %d", x, i);
return 0;
}int fact(int n){
/* n=0 indicates a terminatin g condition */
if (n
return (1);
}else{
/* function calling itself */
return (n * fact(n - 1));
/*n*fact(n -1) is a recursive expression */
}
}
Output:
Enter a value for x:
4
Factorial of 4 is 24
Explanatio n:
fact(n) = n * fact(n-1)
If n=4
fact(4) = 4 * fact(3) there is a call to fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1 * fact(0)
fact(0) = 1
fact(1) = 1 * 1 = 1
fact(2) = 2 * 1 = 2
fact(3) = 3 * 2 = 6
Thus fact(4) = 4 * 6 = 24
Terminatin g condition( n
infinite loop.

2. Write a program to check whether the given number is even or odd.
Program:
#include
int main(){
int a;
printf("En ter a: \n");
scanf("%d" ,&a);
/* logic */
if (a % 2 == 0){
printf("Th e given number is EVEN\n");
}
else{
printf("Th e given number is ODD\n");
}
return 0;
}
Output:
Enter a: 2
The given number is EVEN
Explanatio n with examples:
Example 1: If entered number is an even number
Let value of'a'entered is 4
if(a%2==0) then a is an even number, else odd.
i.e. if(4%2==0) then 4 is an even number, else odd.
To check whether 4 is even or odd, we need to calculate (4%2).
/* % (modulus) implies remainder value. */
/* Therefore if the remainder obtained when 4 is divided by 2 is 0, then 4 is even. */
4%2==0 is true
Thus 4 is an even number.
Example 2: If entered number is an odd number.
Let value of'a'entered is 7
if(a%2==0) then a is an even number, else odd.
i.e. if(7%2==0) then 4 is an even number, else odd.
To check whether 7 is even or odd, we need to calculate (7%2).
7%2==0 is false /* 7%2==1 condition fails and else part is executed */
Thus 7 is an odd number.

3. Write a program to swap two numbers using a temporary variable.
Swapping interchang es the values of two given variables.
Logic:
step1: temp=x;
step2: x=y;
step3: y=temp;
Example:
if x=5 and y=8, consider a temporary variable temp.
step1: temp=x=5;
step2: x=y=8;
step3: y=temp=5;
Thus the values of the variables x and y are interchang ed.
Program:
#include
int main(){
int a, b, temp;
printf("En ter the value of a and b: \n");
scanf("%d %d",&a,&b);
printf("Be fore swapping a=%d, b=%d \n", a, b);
/*Swapping logic */
temp = a;
a = b;
b = temp;
printf("Af ter swapping a=%d, b=%d", a, b);
return 0;
}
Output:
Enter the values of a and b: 2 3
Before swapping a=2, b=3
After swapping a=3, b=2
4. Write a program to swap two numbers without using a temporary variable.
Swapping interchang es the values of two given variables.
Logic:
step1: x=x+y;
step2: y=x-y;
step3: x=x-y;
Example:
if x=7 and y=4
step1: x=7+4=11;
step2: y=11-4=7;
step3: x=11-7=4;
Thus the values of the variables x and y are interchang ed.
Program:
#include
int main(){
int a, b;
printf("En ter values of a and b: \n");
scanf("%d %d",&a,&b);
printf("Be fore swapping a=%d, b=%d\n", a,b);
/*Swapping logic */
a = a + b;
b = a - b;
a = a - b;
printf("Af ter swapping a=%d b=%d\n", a, b);
return 0;
}
Output:
Enter values of a and b: 2 3
Before swapping a=2, b=3
The values after swapping are a=3 b=2

5. Write a program to swap two numbers using bitwise operators.
Program:
#include
int main(){
int i = 65;
int k = 120;
printf("\n value of i=%d k=%d before swapping", i, k);
i = i ^ k;
k = i ^ k;
i = i ^ k;
printf("\n value of i=%d k=%d after swapping", i, k);
return 0;
}
Explanatio n:
i = 65; binary equivalent of 65 is 0100 0001
k = 120; binary equivalent of 120 is 0111 1000
i = i^k;
i...0100 0001
k...0111 1000
---------
val of i = 0011 1001
---------
k = i^k
i...0011 1001
k...0111 1000
---------
val of k = 0100 0001 binary equivalent of this is 65
---------( that is the initial value of i)
i = i^k
i...0011 1001
k...0100 0001
---------
val of i = 0111 1000 binary equivalent of this is 120
--------- (that is the initial value of k)

6. Write a program to find the greatest of three numbers.
Program:
#include
int main(){
int a, b, c;
printf("En ter a,b,c: \n");
scanf("%d %d %d",&a,&b,&c);
if (a>b&&a>c){
printf("a is Greater than b and c");
}
else if (b>a&&b>c){
printf("b is Greater than a and c");
}
else if (c>a&&c>b){
printf("c is Greater than a and b");
}
else{
printf("al l are equal or any two values are equal");
}
return 0;
}
Output:
Enter a,b,c: 3 5 8
c is Greater than a and b
Explanatio n with examples:
Consider three numbers a=5,b=4,c= 8
if(a>b&&a>c) then a is greater than b and c
now check this condition for the three numbers 5,4,8 i.e.
if(5>4&&5>8) /* 5>4 is true but 5>8 fails */
so the control shifts to else if condition
else if(b>a&&b>c) then b is greater than a and c
now checking this condition for 5,4,8 i.e.
else if(4>5&&4>8) / * both the conditions fail */
now the control shifts to the next else if condition
else if(c>a&&c>b) then c is greater than a and b
now checking this condition for 5,4,8 i.e.
else if(8>5&&8>4) / * both conditions are satisfied */
Thus c is greater than a and b.

7. Write a program to find the greatest among ten numbers.
Program:
#include
int main(){
int a[10];
int i;
int greatest;
printf("En ter ten values:");
//Store 10 numbers in an array
for (i = 0; i<10; i++){
scanf("%d" ,&a[i]);
}
//Assume that a[0] is greatest
greatest = a[0];
for (i = 0; i<10; i++){
if (a[i]>greatest){
greatest = a[i];
}
}
printf("\n Greatest of ten numbers is %d", greatest);
return 0;
}
Output:
Enter ten values: 2 53 65 3 88 8 14 5 77 64 Greatest of ten numbers is 88
Explanatio n with example:
Entered values are 2, 53, 65, 3, 88, 8, 14, 5, 77, 64
They are stored in an array of size 10. let a[] be an array holding these values.
/* how the greatest among ten numbers is found */
Let us consider a variable'greatest' . At the beginning of the loop, variable'greatest' is assinged with the value of
first element in the array greatest=a [0]. Here variable'greatest' is assigned 2 as a[0]=2.
Below loop is executed until end of the array'a[]';.
for(i=0; i
{
if(a[i]>gr eatest)
{
greatest= a[i];
}
}
For each value of'i', value of a[i] is compared with value of variable'greatest' . If any value greater than the value
of'greatest' is encountere d, it would be replaced by a[i]. After completion of'for'loop, the value of variable
'greatest' holds the greatest number in the array. In this case 88 is the greatest of all the numbers.
8. Write a program to check whether the given number is a prime.
A prime number is a natural number that has only one and itself as factors. Examples: 2, 3, 13 are prime
numbers.
Program:
#include
main(){
int n, i, c = 0;
printf("En ter any number n: \n");
scanf("%d" ,&n);
/*logic*/
for (i = 1; i
if (n % i == 0){
c++;
}
}
if (c == 2){
printf("n is a Prime number");
}
else{
printf("n is not a Prime number");
}
return 0;
}
Output:
Enter any number n: 7
n is Prime
Explanatio n with examples:
consider a number n=5
for(i=0;i
i.e. for(i=0;i
1st iteration: i=1;i
here i is incremente d i.e. i value for next iteration is 2
now if(n%i==0) then c is incremente d
i.e.if(5%1 ==0)then c is incremente d, here 5%1=0 thus c is incremente d.
now c=1;
2nd iteration: i=2;i
here i is incremente d i.e. i value for next iteration is 3
now if(n%i==0) then c is incremente d
i.e.if(5%2 ==0) then c is incremente d, but 5%2!=0 and so c is not incremente d, c remains 1
c=1;
3rd iteration: i=3;i
here i is incremente d i.e. i value for next iteration is 4
now if(n%i==0) then c is incremente d
i.e.if(5%3 ==0) then c ic incremente d, but 5%3!=0 and so c is not incremente d, c remains 1
c=1;
4th iteration: i=4;i
here i is incremente d i.e. i value for next iteration is 5
now if(n%i==0) then c is incremente d
i.e. if(5%4==0) then c is incremente d, but 5%4!=0 and so c is not incremente d, c remains 1
c=1;
5th iteration: i=5;i
here i is incremente d i.e. i value for next iteration is 6
now if(n%i==0) then c is incremente d
i.e. if(5%5==0) then c is incremente d, 5%5=0 and so c is incremente d.
i.e. c=2
6th iteration: i=6;i
here i value is 6 and 6
now if(c==2) then n is a prime number
we have c=2 from the 5th iteration and thus n=5 is a Prime number.

9. Write a program to check whether the given number is a palindromi c number.
If a number, which when read in both forward and backward way is same, then such a number is called a
palindrome number.
Program:
#include
int main(){
int n, n1, rev = 0, rem;
printf("En ter any number: \n");
scanf("%d" ,&n);
n1 = n;
/* logic */
while (n>0){
rem = n % 10;
rev = rev * 10 + rem;
n = n / 10;
}
if (n1 == rev){
printf("Gi ven number is a palindromi c number");
}
else{
printf("Gi ven number is not a palindromi c number");
}
return 0;
}
Output:
Enter any number: 121
Given number is a palindrome
Explanatio n with an example:
Consider a number n=121, reverse=0, remainder;
number=121
now the while loop is executed /* the condition (n>0) is satisfied */
/* calculate remainder */
remainder of 121 divided by 10=(121%10 )=1;
now reverse=(r everse*10) +remainder
=(0*10)+1 / * we have initialized reverse=0 */
=1
number=num ber/10
=121/10
=12
now the number is 12, greater than 0. The above process is repeated for number=12.
remainder= 12%10=2;
reverse=(1 *10)+2=12;
number=12/ 10=1;
now the number is 1, greater than 0. The above process is repeated for number=1.
remainder= 1%10=1;
reverse=(1 2*10)+1=12 1;
number=1/ 10 / * the condition n>0 is not satisfied,co ntrol leaves the while loop */
Program stops here. The given number=121 equals the reverse of the number. Thus the given number is a
palindrome number.

10.Write a program to check whether the given string is a palindrome .
Palindrome is a string, which when read in both forward and backward way is same.
Example: radar, madam, pop, lol, rubber, etc.,
Program:
#include
#include
int main(){
char string1[20 ];
int i, length;
int flag = 0;
printf("En ter a string: \n");
scanf("%s" , string1);
length = strlen(str ing1);
for(i=0;i<length ;i++){
if(string1 [i] != string1[le ngth-i-1]) {
flag = 1;
break;
}
}
if (flag){
printf("%s is not a palindrome \n", string1);
}
else{
printf("%s is a palindrome \n", string1);
}
return 0;
}
Output:
Enter a string: radar
"radar"is a palindrome
Explanatio n with example:
To check if a string is a palindrome or not, a string needs to be compared with the reverse of itself.
Consider a palindrome string:"radar",
---------- ---------- -------
index: 0 1 2 3 4
value: r a d a r
---------- ---------- -------
To compare it with the reverse of itself, the following logic is used:
0th character in the char array, string1 is same as 4th character in the same string.
1st character is same as 3rd character.
2nd character is same as 2nd character.
. . . .
ith character is same as'length-i- 1'th character.
If any one of the above condition fails, flag is set to true(1), which implies that the string is not a palindrome .
By default, the value of flag is false(0). Hence, if all the conditions are satisfied, the string is a palindrome .

11.Write a program to generate the Fibonacci series.
Fibonacci series: Any number in the series is obtained by adding the previous two numbers of the series.
Let f(n) be n'th term.
f(0)=0;
f(1)=1;
f(n)=f(n-1 )+f(n-2); (for n>=2)
Series is as follows
011
(1+0)
2 (1+1)
3 (1+2)
5 (2+3)
8 (3+5)
13 (5+8)
21 (8+13)
34 (13+21)
...and so on
Program: to generate Fibonacci Series(10 terms)
#include
int main(){
//array fib stores numbers of fibonacci series
int i, fib[25];
// initialized first element to 0
fib[0] = 0;
// initialized second element to 1
fib[1] = 1;
//loop to generate ten elements
for (i = 2; i<10; i++){
//i'th element of series is equal to the sum of i-1'th element and i-2'th element.
fib[i] = fib[i - 1] + fib[i - 2];
}
printf("Th e fibonacci series is as follows \n");
//print all numbers in the series
for (i = 0; i<10; i++){
printf("%d \n", fib[i]);
}
return 0;
}
Output:
The fibonacci series is as follows
01123581
3
21
34
Explanatio n:
The first two elements are initialize d to 0, 1 respective ly. Other elements in the series are generated by looping
and adding previous two numbes. These numbers are stored in an array and ten elements of the series are
printed as output.

12.Write a program to print"Hello World"without using semicolon anywhere in the code.
Generally when we use printf("") statement, we have to use a semicolon at the end. If printf is used inside an if
Condition, semicolon can be avoided.
Program: Program to print something without using semicolon (;)
#include
int main(){
//printf returns the length of string being printed
if (printf("H ello World\n")) //prints Hello World and returns 11
{
//do nothing
}
return 0;
}
Output:
Hello World
Explanatio n:
The if statement checks for condition whether the return value of printf("He llo World") is greater than 0. printf
function returns the length of the string printed. Hence the statement if (printf("H ello World")) prints the string
"Hello World".

13.Write a program to print a semicolon without using a semicolon anywhere in the code.
Generally when use printf("") statement we have to use semicolon at the end.
If we want to print a semicolon, we use the statement: printf(";" );
In above statement, we are using two semicolons . The task of printing a semicolon without using semicolon anywhere in the code can be accomplish ed by using the ascii value of';'which is equal to 59.
Program: Program to print a semicolon without using semicolon in the code.
#include
int main(void) {
//prints the character with ascii value 59, i.e., semicolon
if (printf("% c\n", 59)){
//prints semicolon
}
return 0;
}
Output:
;
Explanatio n:
If statement checks whether return value of printf function is greater than zero or not. The return value of function
call printf("%c ",59) is 1. As printf returns the length of the string printed. printf("%c ",59) prints ascii value that
correspond s to 59, that is semicolon( .

14.Write a program to compare two strings without using strcmp() function.
strcmp() function compares two strings lexicograp hically. strcmp is declared in stdio.h
Case 1: when the strings are equal, it returns zero.
Case 2: when the strings are unequal, it returns the difference between ascii values of the characters that differ.
a) When string1 is greater than string2, it returns positive value.
b) When string1 is lesser than string2, it returns negative value.
Syntax:
int strcmp (const char *s1, const char *s2);
Program: to compare two strings.
#include
#include
int cmpstr(cha r s1[10], char s2[10]);
int main(){
char arr1[10] ="Nodalo";
char arr2[10] ="nodalo";
printf("%d", cmpstr(arr 1, arr2));
// cmpstr() is equivalent of strcmp()
return 0;
}/
/s1, s2 are strings to be compared
int cmpstr(cha r s1[10], char s2[10]){
//strlen function returns the length of argument string passed
int i = strlen(s1) ;
int k = strlen(s2) ;
int bigger;
if (i<k){
bigger = k;
}
else if (i>k){
bigger = i;
}
else{
bigger = i;
}
//loops'bigger'times
for (i = 0; i<bigger; i++){
// if ascii values of characters s1[i], s2[i] are equal do nothing
if (s1[i] == s2[i]){
}
//else return the ascii difference
else{
return (s1[i] - s2[i]);
}
}
//return 0 when both strings are same
//This statement is executed only when both strings are equal
return (0);
}
Output:
-32
Explanatio n:
cmpstr() is a function that illustrate s C standard function strcmp(). Strings to be compared are sent as arguments
to cmpstr().
Each character in string1 is compared to its correspond ing character in string2. Once the loop encounters a
differing character in the strings, it would return the ascii difference of the differing characters and exit.

15.Write a program to concatenat e two strings without using strcat() function.
strcat(str ing1,strin g2) is a C standard function declared in the header file string.h
The strcat() function concatenat es string2, string1 and returns string1.
Program: Program to concatenat e two strings
#include
#include
char *strct(cha r *c1, char *c2);
char *strct(cha r *c1, char *c2){
//strlen function returns length of argument string
int i = strlen(c1) ;
int k = 0;
// loops until null is encountered and appends string c2 to c1
while (c2[k] !='\0'){
c1[i + k] = c2[k];
k++;
}
return c1;
}
int main(){
char string1[15 ] ="first";
char string2[15 ] ="second";
char *finalstr;
printf("Be fore concatenat ion:"
"\n string1 = %s \n string2 = %s", string1, string2);
// addresses of string1, string2 are passed to strct()
finalstr = strcat(str ing1, string2);
printf("\n After concatenat ion:");
//prints the contents of string whose address is in finalstr
printf("\n finalstr = %s", finalstr);
//prints the contents of string1
printf("\n string1 = %s", string1);
//prints the contents of string2
printf("\n string2 = %s", string2);
return 0;
}
Output:
Before concatenat ion:
string1 = first
string2 = second
After concatenat ion:
finalstr = firstsecon d
string1 = firstsecon d
string2 = second
Explanatio n:
string2 is appended at the end of string1 and contents of string2 are unchanged.
In strct() function, using a for loop, all the characters of string'c2'are copied at the end of c1. return (c1) is
equivalent to return&c1[0] and it returns the base address of'c1'.'finalstr' stores that address returned by the
function strct().

16.Write a program to delete a specified line from a text file.
In this program, user is asked for a filename he needs to change. User is also asked for the line number that is
to be deleted. The filename is stored in'filename' . The file is opened and all the data is transferre d to another file
except that one line the user specifies to delete.
Program: Program to delete a specific line.
#include
int main(){
FILE *fp1, *fp2;
// consider 40 character string to store filename
char filename[4 0];
char c;
int del_line, temp = 1;
//asks user for file name
printf("En ter file name:");
// receives file name from user and stores in'filename'
scanf("%s" , filename);
//open file in read mode
fp1 = fopen(file name,"r");
c = getc(fp1);
//until the last character of file is obtained
while (c != EOF)
{
printf("%c ", c);
//print current character and read next character
c = getc(fp1);
}
//rewind
rewind(fp1 );
printf("\n Enter line number of the line to be deleted:") ;
//accept number from user.
scanf("%d" ,&del_line) ;
//open new file in write mode
fp2 = fopen("cop y.c","w");
c = getc(fp1);
while (c != EOF){
c = getc(fp1);
if (c =='\n')
temp++;
//except the line to be deleted
if (temp != del_line)
{
//copy all lines in file copy.c
putc(c, fp2);
}
}
//close both the files.
fclose(fp1 );
fclose(fp2 );
//remove original file
remove(fil ename);
//rename the file copy.c to original name
rename("co py.c", filename);
printf("\n The contents of file after being modified are as follows:\n ");
fp1 = fopen(file name,"r");
c = getc(fp1);
while (c != EOF){
printf("%c ", c);
c = getc(fp1);
}
fclose(fp1 );
return 0;
}
Output:
Enter file name:abc.t xt
hi.
Hello
how are you?
I am fine
hope the same
Enter line number of the line to be deleted:4
The contents of file after being modified are as follows:
hi.
hello
how are you?
hope the same
Explanatio n:
In this program, user is asked for a filename that needs to be modified. Entered file name is stored in a char
array'filename' . This file is opened in read mode using file pointer'fp1'. Character'c'is used to read characters
from the file and print them to the output. User is asked for the line number in the file to be deleted. The file
pointer is rewinded back and all the lines of the file except for the line to be deleted are copied into another file
"copy.c". Now"copy.c"is renamed to the original filename. The original file is opened in read mode and the
modified contents of the file are displayed on the screen.

17.Write a program to replace a specified line in a text file.
Program: Program to replace a specified line in a text file.
#include
int main(void) {
FILE *fp1, *fp2;
// 'filename'i s a 40 character string to store filename
char filename[4 0];
char c;
int del_line, temp = 1;
//asks user for file name
printf("En ter file name:");
// receives file name from user and stores in'filename'
scanf("%s" , filename);
fp1 = fopen(file name,"r");
//open file in read mode
c = getc(fp1);
//print the contents of file .
while (c != EOF){
printf("%c ", c);
c = getc(fp1);
}
//ask user for line number to be deleted.
printf("\n Enter line number to be deleted and replaced") ;
scanf("%d" ,&del_line) ;
//take fp1 to start point.
rewind(fp1 );
//open copy.c in write mode
fp2 = fopen("cop y.c","w");
c = getc(fp1);
while (c != EOF){
if (c =='\n'){
temp++;
}
// till the line to be deleted comes,copy the content from one file to other
if (temp != del_line){
putc(c, fp2);
}
else //when the line to be deleted comes
{
while ((c = getc(fp1)) !='\n'){
}
//read and skip the line ask for new text
printf("En ter new text");
//flush the input stream
fflush(std in);
putc('\n', fp2);
//put'\n'in new file
while ((c = getchar()) !='\n')
putc(c, fp2);
//take the data from user and place it in new file
fputs("\n" , fp2);
temp++;
}
// continue this till EOF is encountere d
c = getc(fp1);
}
//close both files
fclose(fp1 );
fclose(fp2 );
//remove original file
remove(fil ename);
//rename new file with old name opens the file in read mode
rename("co py.c", filename);
fp1 = fopen(file name,"r");
//reads the character from file
c = getc(fp1);
// until last character of file is encountered
while (c != EOF){
printf("%c ", c);
// all characters are printed
c = getc(fp1);
}
//close the file pointer
fclose(fp1 );
return 0;
}
Output:
Enter file name:abc.t xt
hi.
hello
how are you?
hope the same
Enter line number of the line to be deleted and replaced:4
Enter new text: sayonara see you soon
hi.
hello
how are you?
sayonara see you soon
Explanatio n:
In this program, the user is asked to type the name of the file. The File by name entered by user is opened in
read mode. The line number of the line to be replaced is asked as input. Next the data to be replaced is asked. A
new file is opened in write mode named"copy.c". Now the contents of original file are transferre d into new file
and the line to be modified is deleted. New data is stored in its place and remaining lines of the original file are
also transferre d. The copied file with modified contents is replaced with the original file's name. Both the file
pointers are closed and the original file is again opened in read mode and the contents of the original file is
printed as output.

18.Write a program to find the number of lines in a text file.
Number of lines in a file can be determined by counting the number of new line characters present.
Program: Program to count number of lines in a file.
#include
int main()
/* Ask for a filename and count number of lines in the file*/
{
//a pointer to a FILE structure
FILE *fp;
int no_lines = 0;
// consider 40 character string to store filename
char filename[4 0], sample_chr ;
//asks user for file name
printf("En ter file name:");
// receives file name from user and stores in a string named'filename'
scanf("%s" , filename);
//open file in read mode
fp = fopen(file name,"r");
//get character from file and store in sample_chr
sample_chr = getc(fp);
while (sample_ch r != EOF){
// Count whenever sample_chr is'\n'(new line) is encountere d
if (sample_ch r =='\n')
{
// increment variable'no_lines' by 1
no_lines=n o_lines+1;
}
//take next character from file.
sample_chr = getc(fp);
}
fclose(fp) ; //close file.
printf("Th ere are %d lines in %s \n", no_lines, filename);
return 0;
}
Output:
Enter file name:abc.t xt
There are 4 lines in abc.txt
Explanatio n:
In this program, name of the file to be read is taken as input. A file by the given name is opened in read-mode
using a File pointer'fp'. Characters from the file are read into a char variable'sample_ch r'with the help of getc
function. If a new line character( '\n') is encountere d, the integer variable'no_lines' is incremente d. If the
character read into'sample_ch ar'is not a new line character, next character is read from the file. This process is
continued until the last character of the file(EOF) is encountere d. The file pointer is then closed and the total
number of lines is shown as output.

19.Write a C program which asks the user for a number between 1 to 9 and shows the number. If the
user inputs a number out of the specified range, the program should show an error and prompt
the user for a valid input.
Program: Program for accepting a number in a given range.
#include
int getnumber( );
int main(){
int input = 0;
//call a function to input number from key board
input = getnumber( );
//when input is not in the range of 1 to 9,print error message
while (!((input = 1))){
printf("[E RROR] The number you entered is out of range");
//input another number
input = getnumber( );
}
//this function is repeated until a valid input is given by user.
printf("\n The number you entered is %d", input);
return 0;
}/
/this function returns the number given by user
int getnumber( ){
int number;
//asks user for a input in given range
printf("\n Enter a number between 1 to 9 \n");
scanf("%d" ,&number);
return (number);
}
Output:
Enter a number between 1 to 9
45
[ERROR] The number you entered is out of range
Enter a number between 1 to 9
4
The number you entered is 4
Explanatio n:
getfunctio n() function accepts input from user.'while'loop checks whether the number falls within range or not
and accordingl y either prints the number(If the number falls in desired range) or shows error message(nu mber is
out of range).
20.Write a program to display the multiplica tion table of a given number.
Program: Multiplica tion table of a given number
#include
int main(){
int num, i = 1;
printf("\n Enter any Number:");
scanf("%d" ,&num);
printf("Mu ltiplicati on table of %d: \n", num);
while (i
printf("\n %d x %d = %d", num, i, num * i);
i++;
}
return 0;
}
Output:
Enter any Number:5
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
Explanatio n:
We need to multiply the given number (i.e. the number for which we want the multiplica tion table)
with value of'i'which increments from 1 to 10.

21. .WAP to check a string is Caliondrom e or not. // Maventic question.
#include
#include
void main()
{
int i,j=0; char a[100];
clrscr();
printf("\n Enter the string to check for caliondrom e:\n");
gets(a);

if(strlen( a)%6)
{
printf("\n %s: is Not a caliondrom e..",a);
getch();
exit(0);
}
for (i=0;a[i]! ='\0'
{
if((a[i]== a[i+5])&&( a[i+1]==a[ i+4])&&(a[ i+2]==a[i+ 3]))
i=i+6;

else
{
j=1;
break;
}
}
if(j)
printf("\n %s: is Not a caliondrom e..",a);
else
printf("\n %s: is a caliondrom e..",a);
getch();
}

22.WAP to print DONE,witho ut using any loop. // asked to my frnd in any company.
#include
void main()
{
static int i=0;
printf("\n %d. DONE",i);
if(i++
main();
getch();
exit(0); / * I used exit(0) to terminate the program after 100 DONE,,i dunno why it was not terminating without using it,may be just at my system,try without it at ur sustem,it sud work */
}

23.WAP to print DONE,witho ut using any loop and any conditonal clause or operators.

/* This code is just in purpose to solve the above question,, but its not a good code in programmin g,as its terminatin g at divide error,,if anyone have a better code,let me know */

main()
{
static int i=100;
printf("%d . DONE\n",10 1-i);
main(1/ --i);
}

/* use"ctrl+f9",then"alt+f5"to see the result */

24. WAP to find out the longest word in a string.
#include
#include
#include
void main()
{
int i,max=0,co unt=0,j;
char str[100]; / * ={"INDIA IS DEMOCRATIC COUNTRY"}; u can use a string inside,in place of user input */

printf("\n Enter the string\n:" );
gets(str);

for(i=0;i
{
if(!(str[i ]==32))
{
count++;
}
else
{

if(max
{
j=i-count;
max=count;
}
count=0;
}
}
for(i=j;i
printf("%c ",str[i]);
getch();
}

25.Prog of WORLD MAP.
#include main(l ,a,n,d)cha r**a;{for(d=atoi (a[1])/ 10*80- atoi(a[2]) / 5-596;n="@N KA\CLCCGZA AQBEAADAFa ISADJABBA^ \SNLGAQABD AXIMBAACTB ATAHDBAN\Z cEMMCCCCAA hEIJFAEAAA BAfHJE\TBd FLDAANEfDN BPHdBcBBBE A_AL\ H E L L O, W O R L D!"[l++-3];)f or(;n-->64 putchar(!d +++33^ l&1);print f("\n\n\n\ n\t\tFound By:\n\t\t\ t Amit Aru");getc h();}

26.WAP to print the triangle of letters in increasing order of lines.

#include
#include
void main()
{
int i,j,k;
char ch;
printf("\n Enter the number of lines wants to make the triangle \n:");
scanf("%d" ,&i);
for(j=1;j
{
ch=65;
for(k=1;k
{
printf("%c ",ch++);
}
printf("\n ");
}
getch();
}

27.WAP to print'xay'in place of every'a'in a string.

#include
#include
void main()
{
int i=0;
char str[100],x ='x',y='y' ;
printf("En ter the string\n:");
gets(str);
while(str[ i]!='\0')
{
if(str[i]= ='a')
{
printf("%c ",x);
printf("%c ",str[i++] );
printf("%c ",y);
}
else
{
printf("%c ",str[i++] );
}
}
getch();
}

28.Count the Total Number of 7 comming between 1 to 100.

/* I made this code in a way that u can give Upper limit i.e. 100,Lower limit i.e. 1 and the specific number u wants to count in between i.e. 7 */

#include
#include
void main()
{
int i,j,U=100, L=1,count= 0,r=1,n;
clrscr();
printf("\n Enter the number u wants to count\n:");
scanf("%d" ,&n);
printf("\n Enter the lower limit\n:");
scanf("%d" ,&L);
printf("\n Enter the upper limit\n:");
scanf("%d" ,&U);

for (i=L;i
{
j=i;
while(j)
{
r=j%10;
if (r==n)
{
count++;
}
j=j/10;
}
}
if(n==0&&L ==0)
count++;
printf("\n Total Number of %d between %d and %d = %d",n,L,U, count);
getch();
}

29. Code for duplicate' s removal,by Amit Aru.
#include
#include
void main()
{
int i,j,k=0,co unt[300]={ 0};
char ch,str[100 0],str1[10 00];
clrscr();
printf("\n Enter the string to remove duplicasy\ n:");
gets(str);
for (i=0;str[i ]!='\0';i+ +)
{
ch=str[i];
count['']=0; / * U can use other delimiter inplace of space''here,just put that char inside'',for ex: count['A']=0 ; if u dnt want any delimiter, just remove this line.*/

if(count[c h])
continue;
else
{
str1[k++]= ch;
count[ch]= 1;
}
}
puts(str1) ;
getch();
}

30. WAP to find out if a given number is a power series of 2 or not,withou t any loop and without using % modulo operator.

#include
#include
int pow2(float );
void main()
{
int i,flag;
clrscr();
printf("En ter the number\n") ;
scanf("%d" ,&i);
flag=pow2( i);
if(flag)
printf("\n %d is power series of 2",i);
else
printf("\n %d is not a power series of 2",i);
getch();
}

int pow2(float j)
{
static float x;
x=j/2;
if(x==2)
return 1;
if(x
return 0;
x=pow2(x);
}

Thursday 18 April 2013

Dân IT nên viết CV như thế nào?

Dân IT nên viết CV như thế nào?


"Theo chia sẻ của anh Đại Trần, VP of Delivery - KMS Technology"

Một CV rõ ràng, khúc chiết, chuyên nghiệp nhưng thể hiện được cá tính, nêu bật được những thế mạnh của bạn trong lúc vẫn cung cấp đầy đủ thông tin về những kinh nghiệm trong quá khứ sẽ khiến bạn nổi bật trong số những ứng viên và giúp nhà tuyển dụng hiểu rõ về bạn để có thể quyết định nên hay không nên sắp xếp phỏng vấn. Nếu bạn không thể viết một cái CV ra hồn để mô tả bản thân, thì rõ ràng bạn có một khiếm khuyết rất lớn, có thể đó là khả năng diễn đạt, hay hiểu biết về chính mình và ngành mình đang làm việc, hoặc không nghiêm túc trong việc xin việc hoặc đơn giản là bạn không thể làm gì ra hồn cả. Dù khiếm khuyết của bạn là gì, nhà tuyển dụng có thể sẽ gạt bạn ra một bên, hoặc may mắn lắm là họ sẽ hướng dẫn bạn làm lại CV, và lần này sẽ là cơ hội cuối cùng cho bạn.

Theo kinh nghiệm của tôi, một CV cho ngành IT nên có 6 mục sau:
1. Thông tin cá nhân:
Chỉ cần liệt kê đơn giản Tên, Năm sinh, Địa chỉ nơi ở, số điện thoại, email, có thể thêm hình thẻ. Các thông tin về giới tính, tình trạng hôn nhân, quê quán ... thực sự không cần thiết và mang tính phân biệt nên không nên đưa vào.
2. Mục tiêu nghề nghiệp (Objectives):
Nêu rõ định hướng của bạn trong con đường nghề nghiệp của mình. Định hướng này có thể được thay đổi theo thời gian, nhưng là định hướng duy nhất khi bạn tìm việc trong giai đoạn hiện tại mà không phụ thuộc vào bạn đang nộp đơn vào công ty nào. Một ví dụ cho Objectives: "Tìm được một công việc trong môi trường chuyên nghiệp, tôn trọng lẫn nhau và tận dụng được kinh nghiệm lập trình J2EE tôi đã tích lũy được trong 5 năm qua. Cơ hội làm việc trực tiếp với khách hàng bằng tiếng Anh. Ưu tiên cho những công việc có tính chất quản lý, tuy nhiên vẫn chấp nhận những công việc làm việc độc lập với tính chuyên môn kỹ thuật cao"
Chỉ nên liệt kê những mục tiêu thực sự quan trọng với bạn (ví dụ một thứ mà bạn không thể có và phải nghỉ việc hiện tại để tìm việc khác). Không nên dùng mục này để đánh bóng cá nhân, để chứng tỏ bạn có hoài bão, vì nó có thể khiến bạn bị loại nếu vị trí nhà tuyển dụng đang tìm không thể giúp bạn đạt được những mục tiêu của mình. Ví dụ một sinh viên mới ra trường, không có gì đặc biệt mà có Objective trở thành nhà quản lý dự án sau 2 năm làm việc sẽ có khả năng bị loại nhanh chóng trong giai đoạn lọc CV, vì xác suất bạn không đạt được objective này là rất cao và bạn sẽ không hài lòng với công việc.
3. Kỹ năng (Skilll sets):
Chỉ nên liệt kê những gì bạn biết và/hoặc có kinh nghiệm và nêu chính xác mức độ hiểu biết của bạn trong từng mục. Một sinh viên mới ra trường có kỹ năng C++ cấp Expert (4/5) sẽ gây sự chú ý tới nhà tuyển dụng, nhưng nếu tất cả những mục khác đều 2, 3, 4 (ví dụ Java cấp 3/5, Oracle 3/5 ...) thì nhà tuyển dụng sẽ gạt qua nguyên mục này, bởi lẽ đơn giản là mất ít nhất 5 năm kinh nghiệm làm việc trên 1 kỹ thuật nào đó để có thể đạt cấp 4/5, nên việc bạn có nhiều kỹ năng đạt cấp 3 hoặc 4 chỉ có nghĩa là bạn có hiểu biết rất hẹp về những kỹ năng này và không thể tự đánh giá. Nếu bạn chưa có nhiều kinh nghiệm, chỉ nên phân loại theo thời gian làm việc với từng kỹ năng, ví dụ:
  • Level 1: Biết qua (học hoặc tự nghiên cứu)
  • Level 2: Có kinh nghiệm sử dụng thực tế dưới 6 tháng.
  • Level 3: Có kinh nghiệm sử dụng thực tế dưới 2 năm.
  • Level 4: Có kinh nghiệm sử dụng thực tế dưới 5 năm.
  • Level 5: Có kinh nghiệm sử dụng thực tế trên 5 năm.
Nên giải thích chi tiết cách phân level của bạn để nhà tuyển dụng hiểu cách bạn đánh giá và hãy trung thực với đánh giá của mình. Nếu bạn viết 1 ứng dụng Struts web application trong 1 năm, hãy liệt kê 1 năm cho JSP/Servlet/Java, 2 tháng cho Struts và 1 tháng cho MSSQL, đơn giản là vì bạn chỉ thực sự dính dáng tới Struts framework và database rất ít trong quá trình làm việc, trong khi phần lớn thời gian dành cho lập trình các trang web JSP và servlet.
Không nên liệt kê những kỹ năng không quan trọng (ví dụ MSWord, Excel đối với lập trình viên), trừ khi bạn thực sự là chuyên gia trong những kỹ năng này.
Theo kinh nghiệm của tôi, tôi đã bỏ qua không đọc tiếp phần skillsets của hơn 90% CV tôi từng đọc qua. Con số này phản ánh tình trạng chung là các ứng viên không tự đánh giá hoặc không diễn đạt được khả năng của mình.
4. Kinh nghiệm làm việc:
Nếu bạn làm việc qua nhiều công ty, nên có phần tóm tắt: liệt kê giai đoạn nào làm việc trong công ty nào, chức vụ.
Sau đó liệt kê danh sách các dự án hoặc nhóm dự án có liên quan tới nhau, theo thứ tự từ mới nhất (hiện nay) đến cũ nhất. Mỗi dự án nên có các thông tin sau:
- Mô tả dự án: Ngoài thông tin về sản phẩm phần mềm, hãy nói rõ công việc của dự án. Ví dụ: Ứng dụng quản lý bệnh viện XYZ cung cấp đầy đủ các nghiệp vụ cần thiết trong một phòng khám tư nhân ở Việt Nam. Dự án X kéo dài 5 tháng nâng cấp ứng dụng XYZ để hỗ trợ mô hình chuỗi phòng khám và chuyển từ hosting nội bộ lên Amazon EC2.
- Quy mô dự án: Để nhà tuyển dụng có thể hình dung dự án này lớn hay nhỏ, nên có thông tin này. Có thể dùng man-month hay số người+thời gian.
- Số người làm việc trên dự án.
- Nhiệm vụ cụ thể của bạn trên dự án này. Điều này rất quan trọng, vì có thể dự án rất hoành tráng nhưng công việc của bạn chỉ làm việc trên một phần nhỏ thì cũng nên nói rõ từ đầu.
- Kỹ năng bạn học được trong dự án này. Chỉ liệt kê những kỹ năng bạn thực sự sử dụng và thời gian bạn sử dụng chúng. Tránh liệt kê tất cả những kỹ thuật dụng trong sản phẩm, mặc dù bạn không hề làm việc với những phần đó (hoặc rất ít).
5. Thành tựu:
Liệt kê thành tựu cá nhân của bạn trong dự án này, ví dụ khi tham gia bạn chỉ mất 15 ngày là có thể làm việc hiệu quả trong khi thời gian trung bình cho người mới là 1 tháng, bạn đã tìm ra giải pháp tăng hiệu suất lên gấp đôi ... nói chung là những gì bạn tự hào mình đã làm được cho dự án này.
- Số người bạn quản lý khi làm việc trong dự án này.
Việc mô tả đầy đủ thông tin về dự án rất quan trọng vì nó giúp cho nhà tuyển dụng có thể hình dung ra được những gì bạn đã làm trong quá khứ, từ đó hình dung ra bạn sẽ có thể đóng góp như thế nào khi tham gia công ty của họ.
Nếu bạn làm rất nhiều dự án nhỏ, có thể nhóm lại thành một và liệt kê theo dạng bảng (với mỗi hàng là 1 dự án, mỗi cột là một mục thông tin liệt kê ở trên).
6. Các thông tin khác:
- Bằng cấp, đào tạo.
- Giải thưởng, các dự án riêng.
- Không cần thiết liệt kê các môn thể thao yêu thích hay các hoạt động xã hội bạn tham gia. Cũng như giới tính, tình trạng hôn nhân ..., hãy cho nhà tuyển dụng biết là bạn đang cung cấp cho họ chỉ những thông tin cần thiết cho công việc và việc tuyển dụng chứ không phải tất cả những gì về bạn.
Tìm việc cũng cần nhiều may mắn, nhưng cần nhiều hơn sự chuẩn bị và quan trọng hơn là một cơ hội để bạn đánh giá chi tiết lại bản thân và hoạch định cho tương lai. Chúc bạn chuẩn bị được một CV tốt và tìm được công việc thích hợp cho bạn đóng góp và phát triển nghề nghiệp.