ANSI C Programming solution Chapter-07
Chapter Seven (07) Contains
01.One-Dimensional Arrays
03.Initialization of One Dimensional Arrays
04.Two- Dimensional Arrays
05.Initialization of Two- Dimensional Arrays
06.Multi- Dimensional Arrays
07.Dynamic Arrays
Question No-7.2: Fill in the blanks in the following statements.
(a) The variable used as a subscript in an array is popularly known as…… variable.
Answer: index.
(b) An array can be initialized either at compile time or at ………..
Answer: run time.
(c) An array created using malloc function at run time is referred to as ......array.
Answer: pointer variable.
(d) An array that uses more than two subscripts is referred to as …….. array.
Answer: multidimensional
(e) ……… is the process of arranging the elements of an array in order.
Answer: sorting.
Question No-7.1: State whether the following statements are true or false.Question No-7.2: Fill in the blanks in the following statements.
(a) The variable used as a subscript in an array is popularly known as…… variable.
Answer: index.
(b) An array can be initialized either at compile time or at ………..
Answer: run time.
(c) An array created using malloc function at run time is referred to as ......array.
Answer: pointer variable.
(d) An array that uses more than two subscripts is referred to as …….. array.
Answer: multidimensional
(e) ……… is the process of arranging the elements of an array in order.
Answer: sorting.
(a) The type of all elements in an array must be the same.
Answer: True.
(b) When an array is declared, C automatically initializes its elements to zero.
Answer: True.
(c) An expression that evaluates to an integral value may be used as a subscript.
Answer: True.
(d) Accessing an array outside its range is a compile time error.
Answer: True.
(e) A char type variable can not be used as a subscript in an array.
Answer: True.
(f) An unsigned long int type can be used as a subscript in an array.
Answer: True.
(g) In C, by default, the first subscript is zero.
Answer: True.
(h) When initializing a multidimensional array, not specifying all its dimensions is an error.
Answer: True.
(i) When we use expression as a subscript, its result should be always greater than zero.
Answer: True.
(j) In C, we can use a maximum of 4 dimensions of an array.
Answer: False.
(k) In declaring an array, the array size can be constant or variable or an expression.
Answer: False.
(l) The declaration int x[2]={1,2,3};is illegal.
Answer: True.
Question No-7.3: Identify errors, if any, in each of the following array declaration statements, assuming that ROW and COLUMN are declared as symbolic constants.
(a) int score (100);
Answer: Incorrect.
(b) float values [10,15];
Answer: Incorrect.
(c) float average [ROW],[COLUMN];
Answer: Incorrect.
(d) char name [15];
Answer: Correct.
(e) int sum [];
Answer: Correct.
(f) double salary [i+ROW]
Answer: Incorrect.
(g) long int number [ROW]
Answer: Incorrect.
(h) int array x[COLUMN];
Answer: Incorrect.
Question No-7.4: Identify errors, if any, in each of the following initialization statements.
(a) int number []={0,0,0,0,0};
Answer: Correct.
(b) float item [3] [2] ={0,1,2,3,4,5};
Answer: Correct.
(c) float word []={‘A’,’R’,’R’,’A’,’Y’};
Answer: Incorrect.
(d) int m[2,4] ={(0,0,0,0)(1,1,1,1)};
Answer: Incorrect.
(e) float result [10] =0;
Answer: Correct.
Qusetion No-7.5:Assume that the arrays A and B are declared as follows:
int A [5] [4];
float B [4]
Find the errors (if any) in the following program segments.
(a) for (i=0;i<=5;i++)
for(j=1;j<=4;j++)
A [i] [j] =0;
Answer: No error.
(b) for (i=1;i<4;i++)
scanf(“%f”,B[i]);
Answer: Error
Correction: for (i=1; i<=4; i++)
scanf (“%f”, &B[i]);
(c) (i=0;i<=4;i++)
B[i] =B [i] + i;
Answer: Error.
Correction: for (i=1; i<=4; i++)
B[i] = B[i] + i;
(d) for (i=4;i>=4;i--)
for (j=0;j<4;j++)
A [i] [j] =B [j] +1.0;
Answer: No error.
Question No-7.6: write a for loop statement that initializes all the dioganal elements of an array to one and other to zero as shown below. assume 5 rows and 5 columns.
1 0 0 0 0 .............. 0
0 1 0 0 0 .............. 0
0 0 1 0 0 .............. 0
0 0 0 0 - .............. 1
Answer:
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(i==j)
printf(“1”);
else
printf(“0”);
}
Question No-7.7:we want to declare a two-dimentional
integer type array called matrix for 3
rows and 5 columns. which for the following
declarations are correct?
a) int matrix [3],[5];Answer: Incorrect
b) int matrix [5] [3];
Answer: Incorrect
c) int matrix [1+2] [2+3];
Answer: Correct
d) int matrix [3,5];
Answer: Incorrect
e) int matrix [3] [5];
Answer: Correct
Question No-7.8: which of the following initialization statements are correct?
a) char str1[4]=”GOOD”;
Answer: Incorrect
b) char str2[ ]=”C”;
Answer: Correct
c) char str3[5]=”MOON”;
Answer: Correct
d) char str4[ ]={‘S’,’U’,’N’};
Answer: Incorrect
e) char str5[10]=”Sun”;
` Answer: Correct
Question No-7.9: What is a data structure? Whey is an array called a data structure?
Answer:
C support a rich set of derived and user-defined data types in
C language .Array and structures are also a structure data types because
they are used to represent data values that have a structure of some sort. In programming parlance, such data types are known as data types.
Question No-7.10: What is a dynamic array? How is it created? Give a typical example of a dynamic array?
Answer: The process of dynamic memory allocation and the arrays created at run time are called dynamic array.
Example:
Malloc , calloc and realloc are dynamic array.
Question No-7.11: What is the error in the following program?
Answer:
main ()
{
int x;
float y [10];
..........
}
Question No-7.13: Discuss how initial values can be
assigned to a multidimensional array.
Answer: C support arrays of three or more dimensional. the general form of a multidimensional array is ….Type array name [a1] [a2] [a3]…….[am];
Where a1l is the size of the dimensional.
Question-7.14: What is the output of the following program?
main ()
{
int m [] = {1,2,3,4,5}
int m;
for (x=0; x<5; x++ )
y=y+m [x]
printf(“%d”, y);
}
Output: 15
Question No-7.15: What is the output of the following program?
main ()
{
char string [ ]= “HELLO WORLD”;
int m;
for (m=0; string [m] !=’\0’;m++)
if ((m%2)==0 )
printf (“%c”, string [m] );
}
Output: HLOWRD
Solution of Programming Exercise
Question No-7.1: Write a program for fitting a straight line through a set of points (xi,yi),i=1,…..,n.
The straight line equation is
Y=mx+c
And the values of m and c are given by
m =
c = (∑yi-m∑xi)
All summations are from 1 to n.Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int n,j,k,l,p,q,r,s;
float m,c;
printf("How many points in the straight line: ");
scanf("%d",&n);
int *x,*y;
x=new[n];
y=new[n];
printf("Enter %d points of x and y:\n",n);
for(int i=1;i<=n;i++)
scanf("%d %d",&x[i],&y[i]);
j=0;
k=0;
l=0;
q=0;
r=0;
for(i=1;i<=n;i++)
{
j=j+(x[i]*y[i]);
k=k+x[i];
l=l+y[i];
p=k*l;
q=q+(x[i]*x[i]);
r=r+x[i];
}
j=j*n;
q=q*n;
s=r*r;
m=(j-p)/(q-s);
c=((l-(m*k))/n);
printf("the value of the slop m= %f\nthe value of the constant c= %f",m,c);
getch();
}
Question No-7.2 The daily maximum temperature recorded in
10 cities during the month of January (for all 31 days) have been tabulated as follows:
City
1 2 3………………………………………….10
Day
………………………………………….
1
2
3
-
-
31
Write a program to read the table elements into a two dimensional array temperature and to find the city and day corresponding to
(a)The highest temperature and
(b)The lowest temperature.
Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
int cityday[5][5];
int i,j,max,min,m,n;
m=n=1;
printf("\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
scanf("%d",&cityday[i][j]);
}
max=cityday[0][0];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(max<cityday[i][j])
{
max=cityday[i][j]; m=j+1; n=i+1;
}
}
}
printf("\nmax temperature %d in city no %d on the day %d",max,m,n);
min=cityday[0][0];
m=n=1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(min>cityday[i][j])
{
min=cityday[i][j];
m=j+1; n=i+1;
}
}
}
printf("\nmin temperature %d in city no %d on the day %d",min,m,n);
getch();
}
Question No-7.3: An election is contested by
5 candidates. The candidates are numbered 1 to 5 and the voting is done by
marking the candidate number on the ballot paper. Write a program to read the
ballots and count the votes cast for each candidate using an array variable
count. In case a number read is outside the range 1 to 5 ballot should be
considered as a spoilt ballot and the program should also count the number of
spoilt ballots.
Solution:#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int i,j,k,l,m,n,votter[6]={0};
j=1;k=2;l=3;m=4;n=5;
printf("press 1 to 5 for votting:\n");
printf("press 0 for stop votting:\n");
scanf("%d",&i);
while(i!=0)
{
if(i==1)
{
votter[1]++;
j=i;
}
else if(i==2)
{
votter[2]++;
k=i;
}
else if(i==3)
{
votter[3]++;
l=i;
}
else if(i==4)
{
votter[4]++;
m=i;
}
else if(i==5)
{
votter[5]++;
n=i;
}
else
{
votter[0]++;
j=i;
}
scanf("%d",&i);
}
printf("\nCandidat %d has votes= %d",j, votter[j]);
printf("\nCandidat %d has votes= %d",k, votter[k]);
printf("\nCandidat %d has votes= %d",l, votter[l]);
printf("\nCandidat %d has votes= %d",m, votter[m]);
printf("\nCandidat %d has votes= %d",n, votter[n]);
getch();
}
Question No-7.4: The following set of numbers is popularly known as Pascles triangle.1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
- - - - - - -
- - - - - - -
If we denote rows by I and columns by j, then any element (except the boundary elements) in the triangle is given by
P[i][j] = P[i-1][j-1] + P[i-1][j]
Write a program to calculate the elements of the Pascle triangle for 10 rows and print the results.
Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
int A[5][5]={0},i,j; // Declare Array with index 5 & 5 with values 0
for(i=0;i<5;i++) //This for() loop for first column value to do 1
A[i][0]=1;
for(i=1;i<5;i++) // for row
for(j=1;j<5;j++) // for column
A[i][j]=A[i-1][j-1]+A[i-1][j]; // rules
clrscr(); // to clear previous screen
for(i=0;i<5;i++)
{ for(j=0;j<=i;j++)
printf("%d ",A[i][j]); // to print value
printf("\n\n");
}
getch();
}
Question No-7.6:Given are two one-dimensional arrays A and B which are sorted in ascending
order. Write a program to merge them into a single sorted array C that contains
every item from arrays A and B, in ascending order.
#include<stdio.h>
#include<conio.h>
#define N 5
void main()
{
int i,j=0,a[N],b[N],c[2*N];
clrscr();
printf("Enter the Matrix A:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\nEnter the Matrix B:\n");
for(i=0;i<N;i++)
scanf("%d",&b[i]);
printf("\n\nThe resultant Matrix C is:\n");
for(i=0;i<N;i++)
{
if(b[i]<a[i])
{
c[j++]=b[i];
c[j++]=a[i];}
else
{
c[j++]=a[i];
c[j++]=b[i];}
}
for(i=0;i<2*N;i++)
printf("%d ",c[i]);
getch();
}
Question No-7.7 Two matrices that have the same number of
rows and columns can be multiplied to produce a third matrix. Consider the
following two matrices.
A = a11 a12……..a1n
a12 a22……..a2n
- - -
- - -
an1……………….ann
B = b11 b12………b1n
b12 b22……..b2n
- - -
- - -
bn1……………..bnn
The product of A and B is a third matrix C of size n*n where is element of C is given by the following equation.
Cij = ikbkj
Write a program that will read tha values of elements of A and B and produce the product matrix C.
Solution:
#include<stdio.h>
#include<conio.h>
#define M 2
void main(){
int i,j,k,a[M][M],b[M][M],c[M][M];
clrscr();
printf("Enter the matrix A:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("\nEnter the matrix B:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
scanf("%d",&b[i][j]);
}
}
//calculation begins
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
c[i][j]=0;
for(k=0;k<M;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
printf("\nThe resultant matrix C is:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
getch();
}
Question No-7.8: Write a program that fills a five-by-five matrix as follows:
• Upper left triangle with +1s
• Lower right triangle with -1s
• Right to left diagonal with zeros
Display the contents of the matrix using not more than two printf statements.
Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j; // Declare Array with index 5 & 5 with values 0
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
if(i>=4-j)
{
if(i==4-j)
printf(" 0 ");
else
printf("-1 ");
}
else printf("+1 ");
printf("\n\n");
}
getch();
}
Question No-7.9 Selection sort is based on the following idea:
Selecting the largest array element and
swapping it with the last array element leaves an unsorted list whose size is 1
less than the size of the original list. If we repeat this step again on the
unsorted list we will have an ordered list of size 2 and an unordered list size n-2. When repeat this until the size of the
unsorted list becomes one , the result will be a sorted list.
Write a program to implement this algorithm.
Write a program to implement this algorithm.
Solution: Sorry!this solution will be as soon as possible…. Authority
Question No-7.10 Develop a program to implement the
binary search algorithm. This technique compares the search key value of the
element that is midway in a “sorted” lies. Then ;
(a) If they match, the search is over.
(b) If the search key value is less than the middle value, then the first half of list contains the key value.
(c) If the search key value is greater than the middle value, then the second half contains the key value.
Repeat this “devide –and-conquer “ strategy until we have match. If the list is reduced to one non-matching element, then the list does not contain the key value.
Used the sorted list created in exercise 7.9 or used any other sorted list.
Solution:(a) If they match, the search is over.
(b) If the search key value is less than the middle value, then the first half of list contains the key value.
(c) If the search key value is greater than the middle value, then the second half contains the key value.
Repeat this “devide –and-conquer “ strategy until we have match. If the list is reduced to one non-matching element, then the list does not contain the key value.
Used the sorted list created in exercise 7.9 or used any other sorted list.
#include<stdio.h>
#include<conio.h>
void main(){
int i,beg,end,mid,a[20],item;
clrscr();
printf("Enter 13 elements\n");
for(i=1;i<=13;i++)
{
scanf("%d",&a[i]);
}
printf("\nEnter what item you want to search\n");
scanf("%d",&item);
beg=1;
end=13;
mid=((beg+end)/2);
while(beg<=end && a[mid]!=item)
{
if(item<a[mid])
{
end=mid-1;
}
else
{
beg=mid+1;
}
mid=((beg+end)/2);
}
if(item==a[mid])
printf("\n\nThe item is in the list\nIt's position is=%d\n",mid);
else
printf("\n\nThe item is not in the list\n");
getch();
}
Question No-7.11: Write a program that will compute the length of a given character string.
Solution:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char s[50];
int length;clrscr();
printf("\n\nInput a string:");
printf("?");
gets(s);
length= strlen(s);
printf("\n this string contains %d character.",length);
getch();
}
Question No-7.5 The annual examination results of 100 students are tabulated as follows:
________________________________________
Roll No: Subject 1 Subject 2 Subject 3
________________________________________
________________________________________
Write a program to read the data and determine the following :
(a)Total marks obtained by each student.
(b)The highest marks in each subject and the roll no. of the student who secured it.
(c) The student who obtained the highest total marks.
Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
int a[5][4],sum[5]={0,0,0,0,0};
int i,j,t;
clrscr();
printf("enter roll,marks in three sub for five student\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
printf("roll s_1 s_2 s_3");
printf("\n\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf(" %d",a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<5;i++)
{
sum[i]=a[i][1]+a[i][2]+a[i][3];
printf("sum[%d]=%d",i,sum[i]);
printf("\n");
}
for(i=0;i<5;i++)
{
for(j=0;j<=5-i;j++)
if(sum[j]>sum[j+1])
{
t=sum[j+1];
sum[j+1]=sum[j];
sum[j]=t;
}
}
printf("largest value:=%d",sum[5]);
getch();
}
Question No-7.12 Write a program that will count the
number occurrences of a specified character in a given line of text. Test your
program.
Solution:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[100],b[100];
char n,dinar;
printf("Input two string:\n");
gets(a);
n=strlen(a);
gets(b);
sazon=strncmp(a,b,n);
if(dinar==0)
printf("equal.");
else
if(sazon>0)
printf("a>b");
else
printf("a<b");
getch();
}
Question No-7.13: Write a program to read a matrix of size m*n and print its transpose.
Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,A[3][2];
clrscr();
printf("give your values:\n");
for(i=1;i<=3;i++)
for(j=1;j<=2;j++)
scanf("%d",&A[i][j]);
printf("Your Matrics is:\n");
for(i=1;i<=3;i++)
{
for(j=1;j<=2;j++)
printf("%d ",A[i][j]);
printf("\n");
}
printf("the transverse of the above matrics:\n");
for(i=1;i<=2;i++)
{
for(j=1;j<=3;j++)
printf(" %d",A[j][i]);
printf("\n");
}
getch();
}
Question No-:7.14 Every book published by international
publishers should carry an International Standard Book Number (ISBN) .It is a
ten characters 4 part number as shown bellows,
0-07-041183-2
The first part denotes the region, the second represents publisher, the third identifies the book and the fourth is the cheek digit. The cheek digit is computed as follows:
Sum=(1*first digit)+(2*second digit)+(3*third digit)+……+(9*ninth digit).
Cheek digit is the remainder when sum is divided by 11. Write a program that reads a given (ISBN) number and cheaks wheather it represents a valid ISBN.
Solution:0-07-041183-2
The first part denotes the region, the second represents publisher, the third identifies the book and the fourth is the cheek digit. The cheek digit is computed as follows:
Sum=(1*first digit)+(2*second digit)+(3*third digit)+……+(9*ninth digit).
Cheek digit is the remainder when sum is divided by 11. Write a program that reads a given (ISBN) number and cheaks wheather it represents a valid ISBN.
#include<stdio.h>
#include<conio.h>
void main()
{
int ISBN[10];
int i,sum,n,d;
clrscr();
for(i=0;i<10;i++)
scanf("%d",ISBN[i]);
n=1; sum=0;
for(i=0;i<9;i++)
{
sum+=n*ISBN[i];
n++;
}
d=sum%11;
if(d==ISBN[9])
printf("valid.");
else
printf("invalid.");
getch();
}
Question No-7.1 write a program to read two matrices A and B and print the folloing:
(a) A+B; and
(b) A-B.
Solution:
#include<stdio.h>
#include<conio.h>
void main()
{
int a[3][3],b[3][3],s[3][3],c[3][3];
int i,j;
clrscr();
printf("enter 1st matrices:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
printf("enter 2nd matrices:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
}
printf("\nA matrices\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(" %d",a[i][j]);
printf("\n");
}
printf("\nB matrices\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(" %d",b[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
s[i][j]=a[i][j]+b[i][j];
}
printf("\n\nsum of two matrices S\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(" %d",s[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
c[i][j]=a[i][j]-b[i][j];
}
printf("\n\nminus of two matrices C\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(" %3d",c[i][j]);
printf("\n");
}
getch();
}
Chapter Seven Solutions of E.Balagurusamy ANSI C Programmingbook,Download the whole book solution.After read this chapter you get knowledge about Initialization of Two- Dimensional Arrays,Multi- Dimensional Arrays,Dynamic Arrays,Initialization of One Dimensional Arrays,Two- Dimensional Arrays, One-Dimensional Arrays and Declaration of One Dimensional Arrays,