C 语言实训教程

----输入输出专项练习


一、 实验目的

  1. 能够熟练并正确定义、输入、输出并使用常用数据类型:整型、实型、字 符型

  2. 能够使用 scanf(),printf(),getchar(),putchar(),gets(),puts()

行各种数据正确格式的输入输 出

二、 实验内容及实验步骤


(一) 验证性试验,验证以下实验,并分析实验结果

  1. 用下面的 scanf 函数输入数据,使 a=3,b=7,x=8.5,y=71.82,c1=

    ˊAˊ,c2=ˊaˊ,问在键盘上如何输入数据? #include<stdio.h>

    int main()

    {

    int a,b; flaot x,y; char c1,c2;

    scanf(“a=%db =%d”,&,&b); scanf(“%f%e”,&x&y); scanf(“%c%c”,&c1,&c2);

    printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;

    }

    运行时分别按以下方式输入数据,观察输出结果,分析原因。

    ① a=3,b=7,x=8.5,y=71.82,A,a↙

    ② a=3 b=7 x=8.5 y=71.82 A a↙

    ③ a=3 b=7 8.5 71.82 A a↙

    ④ a=3 b=7 8.5 71.82Aa↙

    ⑤ 3 7 8.5 71.82Aa↙

    ⑥ a=3 b=7↙ 8.5 71.82↙

    A↙ a↙

    ⑦ a=3 b=7↙ 8.5 71.82↙

    Aa↙

    ⑧ a=3 b=7↙

    8.5 71.82Aa↙

  2. 字符输入 #include <stdio.h> main()

    {

    int a;

    char b;

    float c;

    printf("Please input an integer:"); scanf("%d", &a);

    printf("integer: %d\n", a); printf("Please input a character:"); scanf("%c", &b); printf("character: %c\n", b);

    printf("Please input a float number:"); scanf("%f", &c);

    printf("float: %f\n", c);

    }

    如果把 scanf("%c", &b);改为 scanf("%1s", &b);观察运行结果


  3. 验证格式输入

    #include <stdio.h> void main()

    {

    int a, b;


    printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);

    }

    1. 输入 123456,验证上述实验结果 (2)输入 12345a


  4. 格式输入与输出

    #include <stdio.h> main()

    {

    int a=-1;

    printf ("%d%o, %x"aa, a); printf"%8o, %12x"a, a;

    }

  5. 无符号数据的输出

    #include<stdio.h> void main()

    {

    unsigned int a=65535;int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a);

    printf(“b=%d,%o,%x,%u\n”,b,b,b,b);

    }

  6. 字符串的输出

    #include<stdio.h> void main()

    {

    printf(“%3s,%7.2s,%.4s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);

    }

  7. 输出实数时的有效位数

    #include <stdio.h> void main()

    float x,y

    x=111111.111; y=222222.22

    prinft(“%f”,x+y);


  8. 输出双精度数时的有效位数

    #include <stdio.h> void main()

    double x,y

    x=1111111111111.111111111; y=2222222222222.222222222;

    printf(“%f”x+y);

  9. 输出实数时指定小数位数

    #include <stdio.h> void main()

    {

    float f=123.456;

    printf(“%f%10f%10.2f%.2f%-10.2fn”fffff);

  10. 字符输出

    #include <stdio.h> int main(void) { int c;

    for ( ; ; ) {

    c = getchar(); if (c == EOF) break;

    if ((c >= ’a’) && (c <= ’z’)) c += ’A’ - ’a’;

    putchar(c);

    }

    return 0;

    }

    1. 对比下列五种代码,将 4-710 行代码替换如下,程序应该如何修改才能保持输出结果相同?

      for (c=getchar(); c!=EOF; c=getchar()) putchar(c);

    2. 4-710 行代码替换如下,程序应该如何修改才能保持输出结果

      相同?

      while ((c=getchar())!=EOF) putchar(c);

    3. 4-710 行代码替换如下,程序应该如何修改才能保持输出结果相同?

      c = getchar(); while (c!=EOF)

      { putchar(c); c = getchar(); }

      (4)如果用 ASCII 码修改 if ((c >= ’a’) && (c <= ’z’))c += ’A’ - ’a’;

      这两句代码,应该如何修改?

      (5) 利用 ctype 函数修改上面代码,验证程序结果

      #include <stdio.h> #include <ctype.h> int main(void) { int c;

      for ( ; ; ) {

      c = getchar();

      if (c == EOF) break; if (islower(c))

      c = toupper(c); putchar(c);

      }

      return 0;

      }


  11. 转义符输出,并解释为什么是这样的输出结果

    #include <stdio.h> void main ( )

    {

    printf("a\nb\tc\bd\fef");

    }

  12. 字符串输入输出,连续输入三个单词,每个单词以空格分隔

#include <stdio.h> void main ( )

{


char str1[5],str2[5],str3[5]; scanf(”%s%s%s”,str1,str2,str3); printf("%s %s %s", str1,str2,str3);


}

(二)编程题

  1. 编写 printf 函数调用下列格式来显示 float 型变量 x:

    1. 指数表示形式: 最小为 8 的字段宽度内左对齐; 小数点后保留 1 位数字.

    2. 指数表示形式: 最小为 10 的字段宽度内右对齐; 小数点后保留 6 位数字

    3. 定点十进制表示形式: 最小为8 的字段宽度内左对齐; 小数点后保留3

      位数字

    4. 定点十进制表示形式: 最小为 6 的字段宽度内右对齐; 小数点后无数字.

  2. 设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入

  3. 编写一个程序, 接收用户录入的日期信息并且将其显示出来. 其中, 输入日期的形式为月/日/年(mm/dd/yy), 输出日期的形式为年月日 (yymmdd)

  4. 有 3 个字符串,要求找出其中最大者

  5. 编写一个程序, 对用户录入的产品信息进行格式化, 程序运行后需要有以下会话:

    Enter item number: 583 Enter unit price: 13.5

    Enter purchase date(mm/dd/yy): 10/24/95 Item Unit Price Purchase Date 583 $ 13.50 10/24/95

    其中, 数字项和日期项左对齐, 单位价格右对齐, 美元数量最大取值为

    9999.99

  6. 计算若干整数的值,要求输入有若干行,每行第一个整数 n,代表后面还有 n 个数据,如果 n=0 代表输入结束。

输出:要求对于每一行都要在相应的行输出和。