NOTES FOR C LANGUAGE PART 1
What is Complier?
Compiler is a program that converts the source code (program written in a language other than machine language ) in to machine code. Computer can understand machine code and execute machine code. Therefore we can state that compiling is a process of converting source code to machine code if source code is error free.
What is the basic structure of c program?
Consider a simple program
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b;
printf(“\n enter two values”);
scanf(“%d %d”,&a,&b);
c=a+b;
printf(“\n addition=%d”,c);
getch();
}
We can note following facts:
1. Program starts with #include
#include is known as preprocessor directive. This preprocessor directive gives instruction to preprocessor program to include contents of file mentioned in angle bracket (or in double quotes) to our source file. The file name in angle bracket is known as include file (because this is used always with include preprocessor) or header file (appears in head/top position of file). This header files contents macro, constant and function declaration.
2. void main()
void specifies function does not return value.
‘main’ is a function which acts as entry point from which our program statement starts running. Declaration statement is followed by executable statements.
3. Blank spaces may be inserted to increase readability.
4. Usually all statements are entered in lowercase
5. We can start writing statement from any column position.
6. Any ‘C’ statement terminates by semicolon;
Write program to swap two values.
(a) using a third variable.
#include<stdio.h>
#include<conio.h>
void main()
{
int a=3,b=4,c;
c=a;
a=b;
b=c;
printf(“\n a=%d,b=%d”,a,b);
getch();
}
(b)without using a third variable.
#include<stdio.h>
#include<conio.h>
void main()
{
int a=3,b=4;
a=a+b;
b=a-b;
a=a-b;
printf(“\n a=%d,b=%d”,a,b);
getch();
}
What does void means in front of main()?
void means function is not going to return a value. If we remove void we have to use ‘return 0;’ statement before closing brace of main function.
Why do we use getch() before closing brace of main function?
getch() is a library function which can input a character from user. Using getch() before closing brace of main lets us read program output by halting the output window. If we do not give getch() then we must use alt+f5 key combination to read program output because we will return to source code window as soon as program completes.
Can we write inclusion of header file in any order?
Yes, we can include header file in any order.
What is the difference between #include<stdio.h> and #include ”stdio.h”?
#include <stdio.h> tells the preprocessor to search the header file in the directory mentioned in integrated development environment only and insert the contents of header file in source file.
#include “stdio.h” tells the preprocessor to search the header file in the directory in which source code lies and if header file not found in the directory where source code lies then search the header file in the directory mentioned in integrated development environment and finally insert the contents of header file in source file.
What is linking/ why do we need linking after compiling?
Linking is a process which runs after compiling process to combine several dependent machine codes (object code) into a single executable code. The program which performs the linking process is known as linker.
What is preprocessor?/Write short notes on preprocessor or list different preprocessor
Preprocessor is a program which works before compiling process. It follows the instruction given by preprocessor directives. After preprocessor has finished its work compiling process begins.
Preprocessor directive begins with # because this instructs the preprocessor what is followed is not an ordinary ‘c’ statement but a preprocessor directive.
e.g. #include <stdio.h>
This tells the preprocess program to insert contents of stdio.h file into current source file (program written in high level language).
Some preprocessor are:
#include, #define, #ifdef, #ifndef, #undef, #else, #endif, #pragma etc.
What are the popular features of ‘C’ language?
The features are:
1. Portability: This refers to the ability of a program to run in different environments. Different environments could refer to different computers, operating systems, or different compilers. Since ‘C’ language is mid level language and its compiler is available for variety of environments we can say it is portable.
2. Flexibility: ‘c’ language is flexible because:
(a) It provides facility of creating user defined data type.
(b) It is not necessary to write statement in ‘c’ in a particular format which means we can start writing statement in ‘c’ from any column.
3. Mid level language: C is a mid level language combines feature of high level language (faster code development) and low level language (efficient program).
4. Wide acceptability: Majority of people know ‘C’ language.
5. System Programming: system programming and application programming using ‘C’ language are possible.
What is an IDE?
An IDE is nothing else but it is a program which includes all facilities to develop and run program, such as editor, compiler, debugger and so on.
What is C?
C is a programming language developed at AT & B bell lab. of USA in 1972. It was developed by Dennis Ritchie. It is user friendly, general purpose and reliable language.
How C originated? Or Write short notes on history of C language.
By 1960 a hoard of computer language had come into existence almost each for a specific purpose. An International committee was setup to develop a general purpose language using which any type of application can be developed easily and the outcome of the effort was Alogol-60. Algol-60 did not become popular because of its abstract nature and many complicated features. Combined programming language was developed with reduced feature of Alogol-60 but it was still vague and did not become popular. Later on basic combined programming language was developed with reduced feature when compared to combined programming language. Basic Combined Programming Language had very limited feature and did not become popular. B language was developed by Ken Thompson as further enhancement to Basic Combined Programming Language. Dennis Ritchie developed some new feature and used features of language ‘B’ and Basic Combined Programming Language and developed ‘c’ and ‘c’ became popular.
Why c is called a middle level language?
All the programming languages can be divided into two categories:
(a) Problem oriented languages or high level languages: These language have been designed to give a better programming efficiency. i.e. faster program development E.g. Fortran, Basic.
(b) machine oriented languages or low level languages: These language have been designed to give a better machine efficiency means faster program execution.
‘c’ stands in between these two categories. That is why it is called a middle level language it has got relatively good programming efficiency (as compared to machine oriented languages) and relatively good machine efficiency (as compared to high level languages).
What do you mean by character set of C?
A character denotes any alphabet, digit or special symbol used to represent information. All those characters which can be part of a ‘c’ program and program still remains valid is knowns as ‘c’ character set. Few e.g. as alphabets a-z, digits -9, special symbols ,\,{,} etc.
What is Syntax?
Syntax is correct way of writing statement according to rules suggested by language.
What is constant?/What are the several type of constant that c language supports?. what is the difference between variable and constant? how can variable be initialized?
A constant is a quantity that doesn’t change during program run time. This quantity can be stored at a location in memory.
A variable is that whose value can change during run time of program.
initialization of variable: int a=10;
float c=30.4; etc.
Type of c constant :-
(A) primary constant which includes
Integer constant-
1. Integer constant must have at least one digit.
2. It must not have a decimal point.
3. It could be either positive or negative.
4. If no negative sign is present the constant is treated as positive
5. The allowable range is -32768 to 32767
e.g. 426
+782
-343
0x179 /* ok hexadecimal integer constant */
0179 /* ok octal integer constant */
invalid is 172 9 /* constant must be continuous without space */
invalid is 173 bcdl /* there is not such bcdl constant */
Real constant-
1 .A real constant must have at least one digit.
2. It must have a decimal point.
3. It could be positive or negative.
4. Default sign is positive.
5. No commas or blanks are allowed within a real constant
e.g. +325.34
463.0
10.32e+10
invalid is 10.32 e+.08 /* exponent must be integer */
Character constant-
1. A character constant is a single alphabet, a single digit or a single special symbol enclosed within single inverted commas. Both the inverted commas should point to the left.
2 The maximum length of a character constant can be 1 character.
e.g. ‘a’
’5’
‘y’
invalid is ‘ab’ /* only single character can be used */
invalid is “a” /* single quote must be used */
(B) Secondary constants
Array, pointers, structure, union, enum etc. are known as secondary constant.
What are the different data types available in c?
ans:
char,unsingned char, int,unsigned int,long ,unsigned long,float,double, long double .
What is variable?
Variable is name given to a location of computer memory where we can store value and retrieve the stored value by variable name. Value of variable can change during program run time and it is fundament requirement of any programming language.
Rules for constructing identifier (variable/pointer/function name):
1. A variable name is any combination of alphabets, digits and underscore. Some compiler supports 40 character lengthy variable names.
2. The first character in variable name must be alphabet.
3. No commas or blanks or special character can appear in variable name.
4. Variable name is case sensitive therefore variable Area and variable area are different.
5. Variable name must not match with keywords.
e.g. few valid variable names are:
si_int
pop_pe_8
few invalid variable names are
a b /* we can not use space */
1b /* must start with alphabet */
char /* char is keyword */
What is keyword?
Keyword or reserved word is word whose meaning is well defined for compiler we can use it in our program but we can not alter its meaning.
e.g. int, float, do, while etc.
There are such 32 keywords.
What is statement or instruction?
An instruction requests computer to perform some work. These are following types:
1. Type declaration statement (non executable statement)
This is useful to declare variables and functions used in c program.
2. Input/output statement (executable statement)
This is useful to supply data into program(input statement) or to take output from program(output statement).
3. Arithmetic assignment statement
This is useful to perform arithmetic operations between constant and variables.
Arithmetic statement may be of three types:
a. Integer mode statement in which integer variables and constant appear in statement.
b. Real mode statement in which real variables and constant appear in statement.
c. Mixed mode statement in which integer and real variables and constant appear in statement.
4. Control statement
This is useful to control the sequence of execution of various statements. Control statements include looping and branching. Branching includes if..else, switch where as looping include while, do..while, for loop.
5.Conditional statement
conditional statement is made of variable, constant, relational operators and logical operators. Conditional statement returns either true or false. In c’s point of view, 0 is false and non zero is true.
conditional statement is made of variable, constant, relational operators and logical operators. Conditional statement returns either true or false. In c’s point of view, 0 is false and non zero is true.
e.g. int c,a=3,b=4;
c= a = = 3|| b>4; /* this is conditional statement */
c= a = = 3|| b>4; /* this is conditional statement */
What is Expression?
An expression is formed using operator and operand. Operand can be variables or constants on which operator works.
For example c=a+b;
In this statement ‘+’ is an operator .
a and b are operand.
What is type conversion? Why type casting is necessary?
It may happen that the type of the expression and the type of the variable on the left hand side of the assignment operator may not be same. In such a case the value of the expression is promoted or demoted depending on the type of the variable on left hand side of =.
For example: If we consider following statement
int I;
float b;
I=3.5;
B=30;
Here, in first assignment statement though the expression’s value is float it can not be stored in I since I it is int therefore float is demoted to int.
Here in second assignment statement though the expression’s value is int it will be stored in b as 30.000000
In some situation type casting becomes necessary. Suppose we want to store result of integer division to a float variable such as
float a;
a=10/3;
In that case a will store 3.000000 rather than 3.333333
If we change the expression as
A=(float)10/3; then value of a will be 3.333333 in this case explicit data type conversion is necessary.
Write abbreviation of sum=sum+x.
ans.
sum+=x;
How one can read or write values of variable or constant?/ explain component of printf , scanf.
(a)Values of variable or constant can be read by:
scanf function whose syntax is
scanf(“format strings”,&var1,&var2…);
format string can be constructed using format specifier character e.g.
%c, %d, %u, %f.
Which format specifier to use? depends on data type of variable to read value in.
Suppose variables are declared as
int a,b;
float e;
char c;
then we need statement
scanf(“%d %d %f %c”,&a,&b,&e,&c);
Since a and b are int types we used corresponding format specifier %d two times because there are two int type variables to read values in.
Since f and c are float and char types respectively we used corresponding format specifier %f and %c.
It means that no. of variables required read values in, must match with no. of format specifier. Each data type uses a predefined format specifier and we have to use the predefined one.
(b) writing of values of variable or constant: it can be done using printf statement whose syntax is as follows
printf(“message to print”);
e.g. printf(“enter an integer”);
or
printf(“format string”,var1,var2);
if we have declared variables as:
int a=10;
float b=20;
we can give statement
printf(“%d %f”,a,b);
Since a is int we used %d format specifier.
Since b is float we used %f format specifier
The values of variable or constant to print replace format specifier at print time.
Therefore output will be
10 20.000000
if we give statement
printf(“a=%d,b=%f”,a,b);
output will be
a=10 b=20.000000
How can we read character constant in character variable?
(Single character input-output)
Character variable is treated internally as integer therefore we have two ways to read a character constant in character variable.
(1)Character constant can be read using %c format specifier when to read a single character.
Consider following program:
#include<stdio.h>
#include<conio.h>
void main()
{
char p;
printf(“\n enter a character”);
scanf(“%c”,&p); /* or we can use
c=getchar();
c=getche();
c=getch();
*/
printf(“\n the character read is %c and ascii value is %d”,p,p);
getch();
}
If we enter a character ‘a’ during run time of program then output will be:
The character read is a and ascii value is 97
(2)Character constant can be read using %d format specifier when to read an integer value corresponding to ascii value of character to read
#include<stdio.h>
#include<conioh>
void main()
{
char p;
printf(“\n enter ascii value corresponding to character to read”);
scanf(“%d”,&p);
printf(“\n the character read is %c and ascii value is %d”,p,p);
getch();
}
If we enter 97 during run time of program then output will be:
The character read is a and ascii value is 97
Compare getch(), getchar(), getche() library function.
getch()
|
Getchar()
|
getche()
|
this function needs conio.h
|
This function needs stdio.h
|
This function needs conio.h
|
(1)Inputs a character and assigns the character in a character variable.
(2) We need not to press enter key after pressing a key.
(3)Does not echoes(displays) the character pressed.
|
(1)Inputs a character and assigns the character in a character variable.
(2)We need to press enter key after pressing a character.
(2)Echoes the character which was pressed.
|
(1)Inputs a character and assigns the character in a character variable.
(2)We need not to press enter key after pressing a key.
(3)Echoes(displays) the character pressed.
|
What is qualifier?
Qualifier modifies the behavior of the variable type to which they are applied. We have seen declarations such as
int I;
This declaration specifies that is ‘I’ is an integer which can take both positive and negative values, that is, I is a signed integer by default. The above declaration could also be written as:-
signed int i;
qualifier can be two types:
a)Size qualifier
size qualifier modifies the range of value, a variable can store.
short: applies to int
long: applies to int and double
b)Sign qualifier
signed: applies to int, char
unsigned: applies to int, char
What do you mean by typedef statement?/define type declaration in c.
The typedef (keyword) statement allows creating new name for existing data type.
For example if we write a statement
typedef unsigned long ulong;
Then we can use statement :-
ulong a;
This means that:
unsigned long u;
What is the difference between ‘a’ and “a”?
‘a’
|
“a”
|
‘a’ is a character constant.
|
“a” is a string constant
|
Character constant can have a single character enclosed inside single quote.
|
String constant can have one or more character enclosed inside double quotes.
|
a character constant takes just one byte of memory.
|
a string constant takes no. memory that is sum of no. of characters inside double quotes plus 1 byte taken by null character.
|
%c is format specifier for formatted input/output.
|
%s is format specifier for formatted input/output.
|
getch(),getchar(),getche() are unformatted input library functions.
|
gets() is a unformatted input library function.
|
What are the different types of operators available in c?
Different types of operator are available in ‘C’ are:
Arithmetic operators
|
+,-,*,/,%
|
Relational operators
|
>,<,>=,<=,= = ,!=
|
Logical operators
|
&&,||,!
|
Assignment operators
|
=
compound assignment operators are:
+=,-=,%=,/= etc.
|
Increment/decrement operators
|
++,--
|
Conditional operators
|
( condition ) ?true statement :false statement
|
Bitwise operators
|
&,|,^,<<,>>,~
|
Comma operators
|
,
|
Other operators
|
Sizeof
|
Write short notes on shorthand operators.
short hand operator are ++,- -,+=,-=,*= etc.
suppose int a=1;
a++; value of a is now 2
suppose int a=1;
a--; value of a is now 0
suppose int a=5;
a+=10; means a=a+10 therefore a will be 15
etc.
What special keyword is used in defining symbolc constant?
ans: const
What are trigraph characters?
the sevent-bit ascii code is the character set of a c source code. the reduced set, iso (invariant code set)) 646-1983 do not have many of the symbols used in the c language. hence, to enable user to write c source in this reduced set, trigraph sequences may be used.
trigraph sequence replaced with the preprocessor
??= #
??/ \ etc.
What is escape sequence?
Escape sequence is some character which are preceded by \ character and printf statement interprets the character in different way. for e.g.
\n to print newline character
\t to print tab character
\” to print double quote character
\\ to print a single \
etc.
Write short notes on bitwise operators.
a bitwise operator operates on each bit of data and these operators are used for testing , complementing or shifting bits to the right or left. Usually bitwise operators are not useful in case of float and double variables. a list of bitwise operators are given below:
& bitwise and
| bitwise or
^ bitwise xor
<< left shift operator
>> right shift operator
~ complement operator
suppose int a=13 ,b=7,c;
c=a&b; first row is a’s bit pattern ,second row is b’s bit pattern ,third row is c’s bit pattern
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
c=a|b; first row is a’s bit pattern ,second row is b’s bit pattern ,third row is c’s bit pattern
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
c=a^b; first row is a’s bit pattern ,second row is b’s bit pattern ,third row is c’s bit pattern
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
c=a<<3; first row is a’s bit pattern ,second row is c’s bit pattern
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
clearly c= a*(23)
c=a>>3; first row is a’s bit pattern ,second row is c’s bit pattern
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
clearly c= a/(23)
c=~a; first row is a’s bit pattern ,second row is c’s bit pattern
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
Explain the behavior of right shift operator for positive and negative integer.
Zeros are always inserted in the left if integer is positive otherwise 1 is inserted in the left, if integer is negative when using right shift operator.
if we assign -3 to a variable ‘a’
int a=-3;
then binary representation of ‘a’ in two’s complementary system is computed as follows:
binary representation of positive 3 is
0000 0000 0000 0011
taking complementary
1111 1111 1111 1100
by adding 1 to get two’s complementary
1111 1111 1111 1101 which is binary pattern of -3
now c=a>>2;
will shift the value of a by 2 bit positions to the right and will insert two 1’s in the left. so value of c will be
1111 1111 1111 1111
once again taking complementary
0000 0000 0000 0000
adding 1 to get two’s complementary
0000 0000 0000 0001
2’s complement of a 2’s complement is the original number itself result
indicates it is -1 in decimal.
What do you mean by mixed mode arithmetic?
When a statement uses expression and expression in turn uses variables and constant belonging to different data type we call it mixed mode arithmetic.
For example
int a=10;
float b=35;
float c;
c=a+b;
It is a mixed mode arithmetic because one operand is type int which is a and another is type float which is b.
What is the difference between a++ and ++a/(post increment and pre increment operator)?
(a)If we use following statements
int a=5,b;
b=++a;
printf(“\n a=%d b=%d”,a,b); output will be a=6 and b=6.
(b)If we use following statements
int a=5,b;
b=a++;
printf(“\n a=%d b=%d”,a,b); output will a=6 and b=5.
What do you mean by operator precedence and associativity?
If we write a statement and statement contains operator and operands then operator precedence controls the order of evaluation of operands.
e.g.
int a=10,b=15,c=3,d;
d=a+b*c;
in the above expression, b is multiplied by c first, the result is added to a and the sum is assigned to d. since * has higher operator precedence therefore * operator evaluates first.
We can change the operator precedence with parentheses
d=(a+b)*c;
in above statement a and b is evaluated first then sum of a and b is multiplied by c then assigned to d.
Associativity of operator can be left to right or right to left. For unary, compound assignment and ternary operator associativity is right to left for others it is left to right.
Consider c=a+b+d;
If two operators having same operator precedence occurs in a mathematical assignment statement then associativity starts playing its role. Since + operator has associativity from left to right therefore a+b will be evaluated first then result of a+b will be added to d and finally result of evaluation will be assigned to c.
What is Control Structure?
Control structure specifies the order in which the various instructions in a program are to be executed by the computer.
There are four type of control structure or control statement:
* Sequence control instruction –ensures statement are executed in same order in which they appear in program.
* Selection or decision control instruction-if given condition becomes true executes one set of statement if given condition becomes false executes different set of statement.
* Repetition or loop control instruction- given set of statements are executed repeatedly till given condition is true.
* Case control instruction – checks value of a single variable/constant and performs different action depending on case defined for value of single variable/constant.
Why do we need control structure?
We all need to alter our action depending on changing circumstances. For example If weather is fine I will go Dongargarh on bike otherwise I will go by train. In the same way ‘C’ language too must be able to perform different action under one condition and different action under another condition and this is made possible by control structure. Sometimes a given set of statements are needed to run repeatedly this is done using loop control structure.
Write notes on if control structure.
The general form of if statement is:
(a)if
the general format of if statement is
if (condition is true)
execute this statement;
The keyword if tells the compiler that what follows, is a decision control instruction. The condition following the keyword if is always enclosed within a pair of parentheses. If the condition, whatever it is, is true, then the statement is executed. If the condition is not true then the statement is not executed; instead the program skips past it.
(b) if -else
if statement by itself can execute only one statement if condition is true. If it required running a group of statements when condition is true we have to enclose those statements inside curly brace known as compound statement. The above form of if statement mentioned in (a) will not do anything when condition is false. If we want to run statement when condition is false we need if-else construct.
General format of if-else construct is
If (condition is true)
Execute this statement;
Else
Execute this statement if condition is false;
Condition is specified using relational operator
x= =y means x is equal to y.
x!= y means x is not equal to y.
x< y means x is less than y.
x>y means x is greater than y.
x<=y means x is less than or equal to y.
x>=y means x is greater than or equal to y
What is the difference between = and = = ?
= operator is useful to assign value to some variable. = = operator is useful to compare value of variables or constant and can be used to build conditional expression.
What are the different forms of if –else statements?
Different forms of if-else statement are as follows:
1. if (condition)
do this;
2. if (condition)
{
do this;
and this;
}
3. if (condition)
do this;
else
do this;
4. if (condition)
{
do this;
and this;
}
else
{
do this;
and this;
}
5. if (condition)
do this;
else
{
do this ;
and this;
}
6. if (condition)
{
do this;
and this;
}
else
do this;
Write program to find root of quadratic equation.
#include<stdio.h>
#include<conio.h>
void main()
{
float a,b,c,d,r1,r2;
printf(“\n enter coefficient of quadratic equation”);
scanf(“%f %f %f”,&a,&b,&c);
d=b*b-4*a*c;
if(d==0)
{
printf(“\n roots are equal\n”);
r1=-b/(2*a);
r2=-b/(2*a);
printf(“\n root1=%f,root2=%f”,r1,r2);
}
else if(d>0)
{
printf(“\n roots are real and different\n”);
r1=(-b+sqrt(d))/(2*a);
r2=(-b-sqrt(d))/(2*a);
printf(“\n root1=%f,root2=%f”,r1,r2);
}
else
{
printf(“\n roots are imaginary\n”);
r1=-b/(2*a); /* real coefficient */
r1=sqrt(-d)/(2*a); /* imaginary coefficients */
printf(“\n root1=%f + %f i=%f”,r1,r2);
printf(“\n root1=%f - %f i=%f”,r1,r2);
}
getch();
}
What is the use of logical operator?
Logical operator && or || are useful to join more than one condition whereas ‘!’ operator negates meaning of condition.
Thus we can conclude that the ‘!’, ‘&&’ and ‘||’ are useful in the following programming situations:
* When it is be tested whether a value falls within a particular range or not.
* When after testing several conditions the outcome is either true or false.
* Reverse the logic of condition using ‘!’ logical operator.
State difference between if and conditional operator/(ternary operator).
Conditional operator which is known as ternary operator can use only one ‘C’ statement if condition is true and one statement if condition is false whereas if statement can use multiples statement if used compound statement.
Write short notes on conditional operator/ternary operator?
The syntax of conditional operator is as follows:
(condition) condition true do this ? condition false do this;
it is sometimes called ternary operator since this take three arguments. In fact , it form a kind of shortcut notation of if-else.
Limitation of ternary operator is ; we can use one ‘C’ statement in each true and false part.
e.g.
/* find a no. is even or odd */
#include <stdio.h>
#include<conio.h>
void main()
{
int n;
int n;
printf(“\n enter a no. to test even odd”);
scanf(“%d”,&n);
(n%2= =0)?printf(“\n even”):printf(“\n odd”);
getch();
}
Explanation: if n is even no. then modulo division by 2 will be 0 and condition will be true therefore statement followed by ‘?’ will run. If no. is odd then modulo division of n by 2 will be 1 and condition will be false therefore statement followed by ‘:’ will run.
Why loop control structure is needed?
Without loops we execute the same series of actions, in the same way, exactly once. Loops allows to execute same portion of program code repeatedly a specified no. of times or until a particular condition is being satisfied. This repetitive operation is done through a loop control structure.
There are four methods using which we can repeat a part of a program which are:
* for statement
* while statement
* do-while statement
* goto statement (not recommended)
Write short notes on goto statement and its limitations.
‘goto’ is a statement which is quite common in monolithic programming paradigm. some languages like basic, fortran etc. use it deliberately. using goto we can do :
1. skipping of some statement without executing them.
2. transferring of control to a labeled statement.
3. coming out of loop whatever level of nesting of loop may be.
note that break statement can take out of loop inside which it lies but goto statement can take out of loops irrespective of level of nesting of loops.
different type of goto can be:
a. conditional-goto : if it is used with ‘if’ statement.
b. unconditional-goto : if it is not used with ‘if’ statement.
limitations of goto: unwise use of goto make it difficult to trace logic flow of program and makes it difficult to remove logical error of program therefore, as far as possible, we must avoid use of goto.
a simple program to print 1 to 10 natural nos. using goto.
#include<stdio.h>
#include<conio.h>
void main()
{
int ii;
jump: printf(“\n %d”,ii);
ii=ii+1;
if (ii<=10)
goto jump;
getch();
}
Write short notes on ‘while’ (entry level control structure/test and do) loop.
In programming we require to execute same set of instructions a fixed number of times. E.g. we want to calculate gross salary of ten different persons, we want to convert temperatures from centigrade to Fahrenheit for 15 different cities. The ‘while’ loop is suited for this.
/* calculation of simple interest for 3 sets of p,n and r */
#include<stdio.h>
#include<conio.h>
void main()
{
float p,r,t,i;
int count;
count=1;
while(count<=3)
{
printf(“\n enter principal,rate and time”);
scanf(“%f %f %f”,&p,&r,&t);
i=p*r*t/100;
printf(“\n simple interest =%f”,i);
count=count+1;
}
getch();
}
Explanation: the program executes all statements inside braces after the while 3 times. The logic for calculating the simples interest is written within a pair of braces immediately after the while keyword. The statements form what is called the body of the while loop. The parentheses after the while contain a condition. So long as this condition remains true all statements within the body of the while loop keep getting executed repeatedly. To begin with the variable count is initialized to 1 and every time the simple interest logic is executed the value of count is incremented by one. The variable count is known as loop counter or index variable.
General format is
1.
initialize loop counter
while(condition is true)
{
do this;
increment loop counter;
}
Note: do not use ‘;’ after closing parenthesis.
As a rule the ‘while’ loop must test a condition that will eventually become false, otherwise the loop would be executed forever, indefinitely.
write program to read a seven digit no. and find its sum of digit.
#include<stdio.h>
#include<conio.h>
void main()
{
long n;
int s;
printf(“\n enter a number”);
scanf(“%ld”,&n);
for(s=0;n>0;n=n/10)
{
s=s+n%10;
}
printf(“\n sum of digit=%d”,s);
getch();
}
Write short notes on do-while( exit level control structure/do and test) loop.
In programming you require to execute a set of statement a fixed number of times. Perhaps you want to calculate gross salary of ten different persons, or you want to convert temperatures from centigrade to Fahrenheit for 15 different cities. The do while loop is suited for this.
/* calculation of simple interest for 3 sets of p,n and r */
#include<stdio.h>
#include<conio.h>
void main()
{
float p,r,t,i;
int count;
count=1;
do
{
printf(“\n enter principal,rate and time”);
scanf(“%f %f %f”,&p,&r,&t);
i=p*r*t/100;
printf(“\n simple interest =%f”,i);
count=count+1;
} while(count<=3);
getch();
}
Explanation: the program executes all statements inside braces inside do-while loop body 3 times. After do keyword the logic for calculating the simples interest is written within a pair of braces then while is followed by condition. The statements form what is called the body of the do- while loop. The parentheses after the while contain a condition. So long as this condition remains true all statements within the body of the do-while loop keep getting executed repeatedly. To begin with the variable count is initialized to 1 and every time the simple interest logic is executed the value of count is incremented by one. The variable count is known as loop counter or index variable.
Differentiate between while and do-while loop.
Body of loop in case of ‘while’ loop will not execute even once if condition of while loop is false but in case of ‘do-while’ loop body of loop will run at least once because condition is tested at the end of loop body.
General format is
1.
initialize loop counter
do {
do this;
increment loop counter;
} while(condition is true);
2.
initialize loop counter
while {
do this;
increment loop counter;
}
Note : use ; after closing parenthesis in do-while loop.
Do while loop must test a condition that will eventually become false, otherwise the loop would be executed forever, indefinitely known as infinite or indefinite loop.
Write short notes on for loop.
‘for’ loop is most popular loop. ‘for’ loop allows us to specify three things about a loop in a single line which are:
1. Setting a loop counter to initial value.
2. Testing the loop counter to determine whether its value has reached the number of repetitions desired.
3. Increasing the value of loop counter each time the program segment within the loop have been executed.
#include<stdio.h>
#include<conio.h>
void main()
{
float p,r,t,i;
int count;
for(count=1;count<=3;count=count+1)
{
printf(“\n enter principal,rate and time”);
scanf(“%f %f %f”,&p,&r,&t);
i=p*r*t/100;
printf(“\n simple interest =%f”,i);
}
getch();
}
The general format of for statement is as us under:
for (initialize counter;test counter;increment counter)
{
do this;
and this;
and this;
}
let us examine how for statement gets executed:
1. When the for statement is executed for the first time, the value of count is set to an initial value 1.
2. Now the condition count<=3 is tested. Since count is 1 the condition is satisfied and the body of for loop is executed for the first time.
3. Upon reaching the closing brace of for, control is transferred back to the for statement, where the value of count gets incremented by 1.
4. Again the test is performed to check whether the new value of count exceeds 3.
5. If the value of count is still within the range 1 to 3 the statements within the braces of for are executed again.
6. The body of the for loop continues get executed till count doesn’t execute the final value 3.
7. When count reaches the value 4 the control exists from the loop and is transferred to the statement immediately after the body of for.
‘while’ and ‘for’ loops test condition first, if condition is true then they execute statements in loop body but ‘do-while’ executes the statements in loop body then tests condition therefore do-while assures execution of loop body at least once whereas for and while do not assure execution of loop body at least once.
Explain variations in for loops.
1. int i=1;
for (;i<=10;)
{
printf(“\n %d”,i);
i=i+1;
}
output will be 1,2,3 up to 10
2. int i=1;
for (;i<=10;)
printf(“\n %d”,i);
i=i+1;
Output will be 1,1 infinite no. of times because only printf statement will run and statement to increment value of ‘i’ does not execute so braces are necessary to execute printf and i=i+1 statements.
3
int i;
i=1;
for (;i<=10;i=i+1);
{
printf(“\n %d”,i);
}
Output will be 11 because closing parentheses is followed by ‘;’ which instructs execution of loop without loop body.
4
int j,i;
for (i=1,j=1;i<=10;i++,j++)
{
printf(“\n %d %d”,i,j);
}
the output will be 1 1 2 2 3 3 up to 10 10.
Write short notes on odd loop.
The loops in which no. of times statements inside loop body will execute are known as finite or determinate loop. The loops which will never terminate execution of statements inside loop body are known as infinite loop. The loop about which we are not certain how many times statements inside loop body will execute but we are sure that it will terminate after some time is known as odd loop.
/* execution of a loop -unknown number of times */
void main()
{
int f=1;
float p,r,t,i;
while(f= =1)
{
printf(“\n enter no. of principal,rate and time”);
scanf(“%f %f %f”,&,p,&r,&t);
i=p*r*t/100;
printf(“\n simple interest=%f”,i);
printf(“\n calculate interest on different set of p,r and t -enter 1 for y,0 for no”);
scanf(“%d”,&f);
}
getch();
}
In this example calculation of interest for given principle, rate and time continues until user enter 0 for no.
Write short Notes on ‘break’ in Loop/write program to check primality.
We often come across situations when we want to jump out of a loop instantly, without waiting to get back to the conditional test. The keyword break allows us to do this. When the keyword ‘break’ is encountered inside any C loop or switch statement , control automatically passed to the first statement after the loop or switch statement. A break is usually associated with an ‘if’ statement applicable to loop.
e.g. Testing whether a given no. is prime or not.
The logic behind checking primality of a given value is a follows:
All we have to do to test whether a number is ‘prime’ or not, is to divide it successively by all number from 2 to one less than itself. If remainder of any of these divisions is zero, the number is not a prime otherwise it will be prime.
#include <stdio.h>
#include <conio.h>
void main()
{
int num,i;
printf(“enter a no.”);
scanf(“%d”,&num);
i=2;
while(i<=num-1)
{
if (num % i = =0)
break;
i=i+1;
}
if (i= = num)
printf(“\n prime”);
else
printf(“\n not prime”);
}
in this program when num % i becomes zero. The condition of ‘if’ statement becomes true and break statement runs which causes control to come out of loop.
There are two ways the control could have reached outside the while loop:
1. It jumped out because the num % i became zero and break statement ran.
2. It jumped out because value of ‘i’ reached to ‘n’ resulting loop condition to false.
The keyword break takes the control out of the loop inside which it is placed. Consider the following program which illustrates this fact.
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0,j=0;
while(i<=10)
{
i++;
j=0;
while(j<=10)
{
j++;
if (j= =5)
break;
printf(“\ni= %d,j= %d”,I,j);
}
}
getch();
}
output will be
i=1 j=1
i=1 j=2
i=1 j=3
i=1 j=4
i=2 j=1
i=2 j=2
i=2 j=3
i=2 j=4 and so on for value of ‘i’ from 1 to 10
Write short notes on continue statement.
On some programming situations we want to take the control to the beginning of the loop, bypassing the statements inside the loop which have not yet been executed. The keyword ‘continue’ allows us to do this. When the keyword continue is encountered inside any loop, control automatically transfers to:
1. Test condition if using ‘while’ or ‘do-while’ loop.
2. Increment/decrement/update section if using ‘for’ loop.
Now consider program to find division of exactly three sets of two nos. if user enters denominator as ‘0’ program will ask to reenter the two nos.
#include <stdio.h>
#include <conio.h>
void main()
{
float a,b;
float a,b;
int i=1;
while(i<= 3)
{
printf(“\n enter %d set of numerator and denominator”);
scanf(“%f %f”,&a,&b);
if(b= =0)
continue;
printf(“\n division =%f ”,a/b);
i=i+1;
}
getch();
}
in above program user has to enter exactly three sets of two nos where denominator is not zero. If user enters zero as denominator; user has to re-enter the two nos. because of continue statement’s execution, control is transferred to conditional test after bypassing statements: printf and i=i+1.
Continue
|
Break
|
1.’continue’ statement transfers control to condition test portion for ‘while’ and ‘do-while’ loop and increment/decrement/update section portion for ‘for’ loop.
2. control does not go out of loop.
|
‘break’ statement transfers control to the statement which just follows body of loop.
‘break’ statement causes termination of loop inside which break statement falls.
|
State the difference between continue and break?
No comments:
Post a Comment