Find Output Of Program

Question 1 :

What will be the output of the program?

#include < stdio . h >

int main()
{
    int i;
    i = printf("How r u\n");
    i = printf("%d\n", i);
    printf("%d\n", i);
    return 0;
}


A).
How r u
7
2
B).
How r u
8
2
C).
How r u
1
1
D). Error: cannot assign printf to variable
Answer : Option B

Explanation :

In the program, printf() returns the number of charecters printed on the console
i = printf("How r u\n"); This line prints "How r u" with a new line character and returns the length of string printed then assign it to variable i.
So i = 8 (length of '\n' is 1).

i = printf("%d\n", i); In the previous step the value of i is 8. So it prints "8" with a new line character and returns the length of string printed then assign it to variable i. So i = 2 (length of '\n' is 1).

printf("%d\n", i); In the previous step the value of i is 2. So it prints "2".


Question 2 :

What will be the output of the program?

#include < stdio . h >
#include
int main()
{
    float i = 2.5;
    printf("%f, %d", floor(i), ceil(i));
    return 0;
}


A). 2, 3
B). 2.000000, 3
C). 2.000000, 0
D). 2, 0
Answer : Option C

Explanation :

Both ceil() and floor() return the integer found as a double.
floor(2.5) returns the largest integral value(round down) that is not greater than 2.5. So output is 2.000000.
ceil(2.5) returns 3, while converting the double to int it returns '0'.
So, the output is '2.000000, 0'.


Question 3 :

What will be the output of the program?

#include < stdio . h >
int main()
{
    int i;
    i = scanf("%d %d", &i, &i);
    printf("%d\n", i);
    return 0;
}


A). 1
B). 2
C). Garbage value
D). Error: cannot assign scanf to variable
Answer : Option B

Explanation :

scanf() returns the number of variables to which you are provding the input.
i = scanf("%d %d", &i, &i); Here Scanf() returns 2. So i = 2.
printf("%d\n", i); Here it prints 2.


Question 4 :

What will be the output of the program?

#include < stdio . h >
int main()
{
    int i;
    char c;
    for(i=1; i <= 5; i++)
    {
        scanf("%c", &c); /* given input is 'b' */
        ungetc(c, stdout);
        printf("%c", c);
        ungetc(c, stdin);
    }
    return 0;
}


A). bbbb
B). bbbbb
C). b
D). Error in ungetc statement.
Answer : Option C

Explanation :

The ungetc() function pushes the character c back onto the named input stream, which must be open for reading.
This character will be returned on the next call to getc or fread for that stream.
One character can be pushed back in all situations.
A second call to ungetc without a call to getc will force the previous character to be forgotten.


Question 5 :

What will be the output of the program?

#include < stdio . h >
#include

int main()
{
    char *i = "55.555";
    int result1 = 10;
    float result2 = 11.111;
    result1 = result1+atoi(i);
    result2 = result2+atof(i);
    printf("%d, %f", result1, result2);
    return 0;
}


A). 55, 55.555
B). 66, 66.666600
C). 65, 66.666000
D). 55, 55
Answer : Option C

Explanation :

Function atoi() converts the string to integer.
Function atof() converts the string to float.

result1 = result1+atoi(i);
Here result1 = 10 + atoi(55.555);
result1 = 10 + 55;
result1 = 65;

result2 = result2+atof(i);
Here result2 = 11.111 + atof(55.555);
result2 = 11.111 + 55.555000;
result2 = 66.666000;
So the output is "65, 66.666000" .


Question 6 :

What will be the output of the program?

#include < stdio . h >
#include

int main()
{
    char dest[] = {97, 97, 0};
    char src[] = "aaa";
    int i;
    if((i = memcmp(dest, src, 2))==0)
        printf("Got it");
    else
        printf("Missed");
    return 0;
}


A). Missed
B). Got it
C). Error in memcmp statement
D). None of above
Answer : Option B

Explanation :

memcmp compares the first 2 bytes of the blocks dest and src as unsigned chars. So, the ASCII value of 97 is 'a'.
if((i = memcmp(dest, src, 2))==0) When comparing the array dest and src as unsigned chars, the first 2 bytes are same in both variables.so memcmp returns '0'.
Then, the if(0=0) condition is satisfied. Hence the output is "Got it".


Question 7 :

What will function gcvt() do?


A). Convert vector to integer value
B). Convert floating-point number to a string
C). Convert 2D array in to 1D array.
D). Covert multi Dimensional array to 1D array
Answer : Option B

Explanation :

The gcvt() function converts a floating-point number to a string. It converts given value to a null-terminated string.

#include < stdlib . h >
#include  < stdio . h >
int main(void)
{
    char str[25];
    double num;
    int sig = 5; /* significant digits */

    /* a regular number */
    num = 9.876;
    gcvt(num, sig, str);
    printf("string = %s\n", str);

    /* a negative number */
    num = -123.4567;
    gcvt(num, sig, str);
    printf("string = %s\n", str);

    /* scientific notation */
    num = 0.678e5;
    gcvt(num, sig, str);
    printf("string = %s\n", str);

    return(0);
}
Output:
string = 9.876
string = -123.46
string = 67800


Question 8 :

What will be the output of the program?

#include < stdio . h >
int main()
{
    int i;
    char c;
    for(i=1; i<=5; i++)
    {
        scanf("%c", &c); /* given input is 'a' */
        printf("%c", c);
        ungetc(c, stdin);
    }
    return 0;
}


A). aaaa
B). aaaaa
C). Garbage value.
D). Error in ungetc statement.
Answer : Option B

Explanation :

for(i=1; i<=5; i++) Here the for loop runs 5 times.

Loop 1:
scanf("%c", &c); Here we give 'a' as input.
printf("%c", c); prints the character 'a' which is given in the previous "scanf()" statement.
ungetc(c, stdin); "ungetc()" function pushes character 'a' back into input stream.

Loop 2:
Here the scanf("%c", &c); get the input from "stdin" because of "ungetc" function.
printf("%c", c); Now variable c = 'a'. So it prints the character 'a'.
ungetc(c, stdin); "ungetc()" function pushes character 'a' back into input stream.

This above process will be repeated in Loop 3, Loop 4, Loop 5.