Program 109:
#include<stdio.h>
#include<string.h>
main()
{
int i,j,n;
char str[100][100],s[100];
printf("Enter number of names \n");
scanf("%d",&n);
printf("Enter names in any order\n");
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(str[i],str[j])>0)
{
strcpy(s,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],s);
}
}
}
printf("\nThe sorted order of alphabets are:\n");
for(i=0;i<n;i++)
{
printf("%s\n",str[i]);
}
}
Explanation:- This program starts with initializing :
- i,j,s→ Used as temporary variables
- n → To store how many names you are going to enter
- s → To store input names
- str→ To store output names
printf("Enter number of names \n"); scanf("%d",&n); printf("Enter names in any order\n"); for(i=0;i<n;i++) { scanf("%s",str[i]); }Taking input from userfor(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(strcmp(str[i],str[j])>0) { strcpy(s,str[i]); strcpy(str[i],str[j]); strcpy(str[j],s); } } }Main logic of the program- The above logic is same as sorting an array but any how lets see what happens when compiling this logic and how names are sorted
- Lets take an 3 example names java,cprogram,android
- Iteration 1:i=0 and n is 3 0<3 →true so the loop executes
- Iteration 1 of 2nd for loop:j=i+1→j=1,1<3 so true then 2nd loop is executed
- str[0],str[1] is compared using strcmmp where str[0]→java and str[1]→cprogram and as java>cprogram then strcmp returns 1 which is >0 so the if part is executed.
- then both are swapped their positions using the 3 statements which is similar to swapping 2 values.
- Now the 3 names are in position cprogram,java,android
- Iteration 2 of 2nd for loop:j=2,2<3 so true then 2nd loop is executed
- str[0],str[2] is compared using strcmmp where str[0]→cprogram now and str[2]→android and as cprogram>android then strcmp returns 1 which is >0 so the if part is executed.
- then both words are swapped
- Now the 3 names are in position android,cprogram,java
- Iteration 3 of 2nd for loop:j=3,3<3 so false then 2nd loop is terminated
- Finallu the position of 3 names are android,cprogram,java after 1st iteration of loop.
- Iteration 1 of 2nd for loop:j=i+1→j=1,1<3 so true then 2nd loop is executed
- Iteration 2:i=1 ; 1<3 →true so the loop executes
- Iteration 1 of 2nd for loop:j=1+1→j=2,2<3 so true then 2nd loop is executed
- str[1],str[1] is compared using strcmmp where str[1]→cprogram and str[2]→java and as cprogram<java then strcmp returns -1 which is <0 so the if part is not executed.
- So the names remains same in their position.
- Iteration 2 of 2nd for loop:j=3,3<3 so false then 2nd loop is terminated
- After 2nd Iterations the names remain same
- Iteration 1 of 2nd for loop:j=1+1→j=2,2<3 so true then 2nd loop is executed
- Iteration 3:i=2 ;2<3 →true so the loop executes
- Iteration 1 of 2nd for loop:j=2+1→j=3,3<3 so false loop is terminated
- Iteration 4:i=3 ;3<3 →false so the loop terminates
- Finally the output is android,cprogram,java which are in sorted order
Output:


