• Chapter 4 : Character Strings and Formatted Input/Output


    2.Assuming that each of the following examples is part of a complete program, what will each one print?

    a. 

    printf("He sold the painting for $%2.2f.
    ", 2.345e2);

    b.

    printf("%c%c%c
    ", 'H', 105, '41');

    c.

    #define Q "His Hamlet was funny without being vulgar." 
    printf("%s
    has %d characters.
    ", Q, strlen(Q));

    d.

    printf("Is %2.2e the same as %2.2f?
    ", 1201.0, 1201.0);

    a. He sold the painting for $234.50.
    b. Hi!
    c. "His Hamlet was funny without being vulgar."
    has 44 characters.
    d. Is 1.20e+03 the same as 1201.00?

    3. In Question 2c, what changes could you make so that string Q is printed out enclosed in double quotation marks?

    #define Q ""His Hamlet was funny without being vulgar.""

    4. It's the find error time!

    define B booboo 
    define X 10 
    main(int)
    {
    int age; 
    char name;
    printf("Please enter your first name."); 
    scanf("%s", name);
    printf("All right, %c, what's your age?
    ", name); 
    scanf("%f", age);
    xp = age + X;
    printf("That's a %s! You must be at least %d.
    ", B, xp); 
    rerun 0;
    }

    Here is a corrected version:

    #include <stdio.h> /* don't forget this */
    
    #define B "booboo" /* add #, quotes */
    #define X 10       /* add #	*/
    
    int main(void) /* instead of main(int) */
    {
        int age;
        int xp;    /* declare all variables */
        char name[40];    /* make into an array	*/
    
        printf("Please enter your first name.
    "); /* 
     for readability */
        scanf("%s", name);
        printf("All right, %s, what's your age?
    ", name); /* %s for string */
        scanf("%d", &age);    /* %d, not %f, &age, not age */
        xp = age + X;
        printf("That's a %s! You must be at least %d.
    ", B, xp);
        return 0;    /* not rerun	*/
    }
    

    5. Suppose a program starts as follows:

    #define BOOK "War and Peace" 
    int main(void)
    {
    float cost =12.99; 
    float percent = 80.0;
    

    Construct a printf() statement that uses BOOK, cost, and percent to print the following:

    This copy of "War and Peace" sells for $12.99.

    That is 80% of list.

    printf("This copy of "%s" sell for $%.2f
    That is %.0f%% of list", BOOK, cost,
               percent); //Note the conversion specifier for 80% here!!!
    

    6. What conversion specification would you use to print each of the following?

    a. A decimal integer with a field width equal to the number of digits

    b. A hexadecimal integer in the form 8A in a field width of 4

    c. A floating-point number in the form 232.346 with a field width of 10

    d. A floating-point number in the form 2.33e+002 with a field width of 12

    e. A string left-justified in a field of width 30

    a. %d

    b. %4X

    c. %10.3f

    d. %12.2e

    e. %-30s

    7. Which conversion specification would you use to print each of the following?

    a. An unsigned long integer in a field width of 15

    b. A hexadecimal integer in the form 0x8a in a field width of 4

    c. A floating-point number in the form 2.33E+02 that is left-justified in a field width of 12

    d. A floating-point number in the form +232.346 in a field width of 10

    e. The first eight characters of a string in a field eight characters wide

    a. %15lu

    b. %#4x

    c. %-12.2E

    d. %+10.3f

    e. %8.8s

    8. What conversion specification would you use to print each of the following?

    a. A decimal integer having a minimum of four digits in a field width of 6

    b. An octal integer in a field whose width will be given in the argument list

    c. A character in a field width of 2

    d. A floating-point number in the form +3.13 in a field width equal to the number of characters in the number

    e. The first five characters in a string left-justified in a field of width 7

    a. %6.4d

    b. %*o

    c. %2c

    d. %+0.2f

    e. %-7.5s

    9. For each of the following input lines, provide a scanf() statement to read it. Also declare any variables or arrays used in the statement.

    a. 101

    b. 22.32 8.34E−09

    float 

    c. linguini

    d. catch 22

    e. catch 22 (but skip over catch)

    a. 

    int a;
    scanf("%d", &a);

    b.

    float a, b;
    scanf("%f %f", &a, &b);

    c.

    char charArray[20];
    scanf("%s", charArray);

    d.

    char charArray;
    int num;
    scanf("%s %d", charArray, num);

    e. 

    char charArray[20];
    int num;
    scanf("%*s %d", &num); // Note that here we use an * to skip reading charArray

    10. What's whitespace?

    Whitespace consists of spaces, tabs, and newlines. C uses whitespace to separate tokens from one another; scanf() uses whitespace to separate consecutive input items from each other.

    11. What’s wrong with the following statement and how can you fix it?

    printf("The double type is %z bytes..
    ", sizeof (double));

    The z in %z is a modifier, not a specifier, so it requires a specifier for it to modify. You could use %zd to print the result in base 10 or use a different specifier to print using a different base, for example, %zx for hexadecimal.

    苟利国家生死以, 岂因祸福避趋之
  • 相关阅读:
    numpy操作
    python将整数均分成N等分
    Windows7下安装pyspark
    python的append insert extend pop del remove使用
    马尔科夫链
    dataframe行变换为列
    scala获取某个时间间隔的时间
    Python3+Flask+uwsgi部署
    A*寻路算法
    C++易混淆知识点整理
  • 原文地址:https://www.cnblogs.com/chintsai/p/11829261.html
Copyright © 2020-2023  润新知