练习题(程序阅读和编程)

读程序

第一章  概述

 [1]

分析下列程序段的运行结果。

   main( )

   { char ch1='\101',ch2='\x 5c ';

     printf("%c,%c\n",ch1,ch2);

   }

第二章  基本数据类型和运算

 [1]

分析下列程序,写出运行结果。

    main()

    {printf("C语言各数据类型的长度为:\n");

     printf("short %d bytes\n",sizeof(short));

     printf("int %d bytes\n",sizeof(int));

     printf("long %d bytes\n",sizeof(long);

     printf("char %d bytes\n",sizeof(char));

     printf("float %d bytes\n",sizeof(float));

     printf("double %d bytes\n",sizeof(double));

    }

第三章  顺序、选择和循环结构的程序设计

 [1]

阅读程序,写出运行结果。

      main()

      { int a=10,b=4,c=3;

        if (a<b) a=b;

        if (a<c) a=c;

        printf("%d,%d,%d",a,b,c);

      }

 [2]

阅读下列程序,写出程序的输出结果。

      main()

      { int x=100,a=10,b=20,ok1=5,ok2=0;

        if (a<b)  

           if (b!=15)  

              if (!ok1)

                   x=1;

                else if(ok2)

                        x=10;

                     else  x=-1;

        printf("%d\n",x);

      }

[3]

阅读下列程序,写出程序运行的输出结果。

      main()

      { int y=9;

        for (;y>0;y--)

            if(y%3==0)

              {

               printf("%d",--y);

               continue;

              }

      }

 [4]

阅读下列程序:

    main()

    {int a;

     char b;

     float c;

     printf("input a b c:");

     scanf("%d%c%f",&a,&b,&c);

     printf("a=%d,b=%c,c=%f\n",a,b,c);

    }

    程序运行后若输入“1234r1234.567(回车)”,写出程序的输出结果。

[5]

阅读下列程序:

    main()

    {int a;

     float b,c;

     printf("input a b c:");

     scanf("%2d% 3f % 4f ",&a,&b,&c);

     printf("a=%d,b=%f,c=%f",a,b,c);

    }

    程序运行后若输入“12345678987654321(回车)”,写出程序的输出结果。

 

[6]

阅读下列程序:

    main()

    {int a;

     float b,c;

     scanf("%d%f%f",&a,&b,&c);

     printf("a=%d,b=%f,c=%f",a,b,c);

    }

    程序运行后若输入“12 345 6789 87654321(回车)”,写出程序的输出结果。

 

 [7]

阅读下列程序:

    main()

    { int a;

      float b,c;

      printf("input a b c:");

      scanf("%d,%f,%f",&a,&b,&c);,

      printf("a=%d,b=%f,c=%f\n",a,b,c);

    }

    程序运行后若输入“12345,678,976.388(回车)”,写出程序的输出结果。

[8]

阅读程序,写出运行结果。假设输入:123-45-6789(回车)

    main()

    {int a,b,c;

     printf("input a b c:");

     printf("ABC=%d\n",scanf("%3d-%2d-%4d",&a,&b,&c));

     printf("a=%d,b=%d,c=%d\n",a,b,c);

   }

第四章  数组

 [1]

阅读程序,写出运行结果:

      main()

      { static int a[][3]={9,7,5,3,1,2,4,6,8};

        int i,j,s1=0,s2=0;

        for(i=0;i<3;i++)

             for(j=0;j<3;j++)

                 { if(i==j)s1=s1+a[i][j];

                   if(i+j==2) s2=s2+a[i][j];

                 }

        printf("%d\n%d\n",s1,s2);

      }

[2]

说明下列程序的功能。

      main()

      { int i,j;

        float a[3][3],b[3][3],x;

        for(i=0;i<3;i++)

            for(j=0;j<3;j++)

                { scanf("%f",&x);a[i][j]=x;}

        for(i=0;i<3;i++)

            for(j=0;j<3;j++)b[j][i]=a[i][j];

        for (i=0;i<3;i++)

            { printf("\n");

              for(j=0;j<3;j++) printf("%f ",b[i][j]);

            }

       }

 

 [3]

写出下列程序的运行结果。

       main()

       { static char a[]={'*','*','*','*','*'};

         int i,j,k;

         for(i=0;i<5;i++)

             { printf("\n");

               for(j=0;j<i;j++)  printf("%c",' ');

               for (k=0;k<5;k++) printf("%c",a[k]);

             }

       }

[4]

说明下列程序的功能。

       main()

       { int i,j;

         float a[3][3],b[3][3],c[3][3],x;

         for(i=0;i<3;i++)

             for(j=0;j<3;j++)

                 {scanf("%f",&x);a[i][j]=x;}

         for(i=0;i<3;i++)

             for(j=0;j<3;j++)

                 {scanf("%f",&x);b[i][j]=x;}

         for(i=0;i<3;i++)

             for(j=0;j<3;j++) c[i][j]=a[i][j]+b[i][j];

         for(i=0;i<3;i++)

             { printf("\n");

               for(j=0;j<3;j++) printf("%f ",c[i][j]);

             }

         }




编程

前三章

 [1]

请编写输出以下图案的程序,图案的行数由输入的值确定。

          A

         BBB

        CCCCC

       DDDDDDD

      EEEEEEEEE

[2]

请编写程序,输入一行数组字符(用EOF结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如:若输入2   4   8   3〈CR>  (<CR>表示回车)

则输出整数:2483.

 [3]

编写程序打印出以下形式的乘法九九表。

**  乘法口诀  **

        (1)    (2)   (3)   (4)   (5)   (6)   (7)   (8)   (9) 

                                                          

(1)     1      2     3     4     5     6     7     8     9

(2)     2      4     6     8    10    12    14    16    18

(3)     3      6     9    12    15    18    21    24    27

(4)     4      8    12    16    20    24    28    32    36

(5)     5     10    15    20    25    30    35    40    45

(6)     6     12    18    24    30    36    42    48    54

(7)     7     14    21    28    35    42    49    56    63

(8)     8     16    24    32    40    48    56    64    72

(9)     9     18    27    36    45    54    63    72    81

                                                          

第四章  数组

 [1]

编程序,输入单精度型一维数组a[10],计算并输出a数组中所有元素的平均值。

[2]

编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。

[3]

编程序,输入两个字符串(<40个字符),连接后输出(不准用系统函数)。

[4]

编程序,按下列公式计算s的值(其中x1、x2、…、xn由键盘输入):

  

s=(x1-x0)2+(x2-x0)2+.....+(xn-x0)2  (其中x0是x1、x2、…、xn的平均值)       

[5]

输入一个3×5的整数矩阵(假设所有的数据互不相同),输出其中最大值、最小值和它们的下标。

[6]

输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。

[7]

设某班50名学生的三科成绩表如下:

        课程一        课程二        课程三

                                  

    试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。

[8]

编一个程序,输入一个短整型数据,输出每位数字,其间用逗号分隔。例如输入整数为2345,则输出应为:2,3,4,5。

[9]

编一个程序,输入一个字符串,将其中所有的大写英文字母+3,小写英文字母-3。然后再输出加密后的字符串。

[10]

编一个程序,将按第9题中加密的字符串(从键盘输入)解密后输出。

 

[11]

输入一行数字字符,请用数组元素坐位计数器来统计每个数字字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,....。

[12]

输入若干有序数放在数组中,然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。

1)插在最前     (2)插在最后       (3)插在中间





参考答案

第一章  概述

[1]

运行后在屏幕上显示:A,\(换行)

第二章  基本数据类型和运算

[1]

sizeof运算符测定所用的C系统中各种类型数据的长度。运行后,得到以下结果:

          C语言各数据类型的长度为:

          short 2 bytes

          int 2 bytes

          char 1 bytes

          long 4 bytes

          float 4 bytes

          double 8 bytes

第三章  顺序、选择和循环结构的程序设计

[1]

10,4,3

[2]

-1

[3]

852

[4]

a=1234,b=r,c=1234.567017

[5]

a=12,b=345.000000,c=6789.000000

[6]

a=12,b=345.000000,c=6789.000000

[7]

a=12345,b=678.000000,c=976.388000

[8]

input a b c:

       ABC=3

       a=123,b=45,c=6789

第四章  数组

[1]

  18

  10

[2]

从键盘上输入一个3×3矩阵,将其转置后形成3×3矩阵输出。

[3]

      *****

       *****

        *****

         *****

          *****

[4] 

将键盘上输入的两个3×3矩阵的对应元素相加后输出。

 

 

编程

前三章

[1]

请编写输出以下图案的程序,图案的行数由输入的值确定。

          A

         BBB

        CCCCC

       DDDDDDD

      EEEEEEEEE

 

#include<stdio.h>

main()

{char ch;

 int i,j,p,t=1;

 scanf("%d",&p);

 for(i=1;i<=p;i++)

     { for(j=(p-i);j>0;j--)putchar(' ');

       for(j=1;j<=t;j++)putchar('A'+i-1);

       printf("\n");

       t=t+2;

     }

}

[2]

请编写程序,输入一行数组字符(用EOF结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如:若输入2   4   8   3〈CR>  (<CR>表示回车)

则输出整数:2483.

 

#include<stdio.h>

main()

{ char ch;

  while((ch=getchar())!=EOF)

     if(ch!=' ')putchar(ch);

}

 

 [3]

编写程序打印出以下形式的乘法九九表。

**  乘法口诀  **

       (1)    (2)   (3)   (4)   (5)   (6)   (7)   (8)   (9) 

                                                          

(1)     1      2     3     4     5     6     7     8     9

(2)     2      4     6     8    10    12    14    16    18

(3)     3      6     9    12    15    18    21    24    27

(4)     4      8    12    16    20    24    28    32    36

(5)     5     10    15    20    25    30    35    40    45

(6)     6     12    18    24    30    36    42    48    54

(7)     7     14    21    28    35    42    49    56    63

(8)     8     16    24    32    40    48    56    64    72

(9)     9     18    27    36    45    54    63    72    81

                                                          

[3]

#include <stdio.h>

main()

{ int i,j;

  printf("              **乘法口诀**           \n");

  for(i=1;i<=9;i++)printf("      (%d) ",i);

  printf("\n");

  for(i=1;i<=9;i++)

  { printf("(%d)",i);

       for(j=1;j<=9;j++)

           printf("%5d",i*j);

       printf("\n");

  }

}

 

第四章  数组

 [1]

编程序,输入单精度型一维数组a[10],计算并输出a数组中所有元素的平均值。

 

#include <stdio.h>

main()

{int i;

 float a[10],f=0;

 for(i=0;i<=9;i++)

    {scanf("%f",&a[i]);f=f+a[i];}

 printf("f=%f",f/10);

}

[2]

编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。

#include <stdio.h>

main()

 {int i,j,a[10],k;

  for(i=0;i<=9;i++) scanf("%d",&a[i]);

  for(i=0,j=9;i<=4;i++,j--)

        {k=a[i];a[i]=a[j];a[j]=k;}

  for(i=0;i<=9;i++) printf("%d",a[i]);

 }

[3]

编程序,输入两个字符串(<40个字符),连接后输出(不准用系统函数)。

 

#include "string.h"

#include <stdio.h>

main()

 {int i,j,k;

  char str1[80],str2[40];

  scanf("%s",str1);

  scanf("%s",str2);

  k=strlen(str1);

  j=strlen(str2);

  for(i=0;i<=j;i++) str1[k+i]=str2[i];

  printf("%s",str1);

 }

[4]

编程序,按下列公式计算s的值(其中x1、x2、…、xn由键盘输入):

  

s=(x1-x0)2+(x2-x0)2+.....+(xn-x0)2  (其中x0是x1、x2、…、xn的平均值)       

#include <stdio.h>

#define  N 10

main()

 {int i;

  float s=0,x[N+1];

  x[0]=0;

  for(i=1;i<=N;i++)

    {scanf("%f",&x[i]);x[0]=x[0]+x[i];}

  x[0]=x[0]/N;

  for(i=1;i<=N;i++) s=s+(x[i]-x[0])*(x[i]-x[0]);

  printf("%f",s);

 }

[5]

输入一个3×5的整数矩阵(假设所有的数据互不相同),输出其中最大值、最小值和它们的下标。

 

#include <stdio.h>

main()

 {int i,j,a[3][5],d,d1,d2,x,x1,x2;

  for(i=0;i<3;i++)

    for(j=0;j<5;j++)scanf("%d",&a[i][j]);

  x=d=a[0][0];x1=x2=d1=d2=0;

  for(i=0;i<3;i++)

    for(j=0;j<5;j++)

      if(d<a[i][j]) {d=a[i][j];d1=i;d2=j;}

      else if(x>a[i][j]) {x=a[i][j];x1=i;x2=j;}

  printf("max=%d,h=%d,l=%d\n",d,d1,d2);

  printf("min=%d,h=%d,l=%d\n",x,x1,x2);

 }

[6]

输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。

#include <ctype.h>

#include <stdio.h>

main()

 { char i,a[80];

   scanf("%s",a);

   for(i=0;i<strlen(a);i++)

    if islower(a[i]) a[i]=a[i]-32;

    else if isupper(a[i]) a[i]=a[i]+32;

   printf("%s",a);

 }

[7]

设某班50名学生的三科成绩表如下:

        课程一        课程二        课程三

                                  

    试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。

#include <stdio.h>

#define  N 50

main()

 {int i,s[N][3];

  float s0=0,s1=0,s2=0;

  for(i=0;i<N;i++)

   {   scanf("%d,%d,%d",&s[i][0],&s[i][1],&s[i][2]);

       s0=s0+s[i][0]; s1=s1+s[i][1];s2=s2+s[i][2];

    }

  s0=s0/N;s1=s1/N;s2=s2/N;

  printf("%f,%f,%f",s0,s1,s2);

 }

[8]

编一个程序,输入一个短整型数据,输出每位数字,其间用逗号分隔。例如输入整数为2345,则输出应为:2,3,4,5。

 

#include <stdio.h>

main()

 {short i=0,j,c[6];

   scanf("%d",&j);

  do{ c[i]=j%10;

      i++;

      j=j/10; }while(j!=0);

  for(--i;i>=0;i--)

     { printf("%d",c[i]); if(i>0) printf(",");}

 }

[9]

编一个程序,输入一个字符串,将其中所有的大写英文字母+3,小写英文字母-3。然后再输出加密后的字符串。

#include <ctype.h>

#include<stdio.h>

main()

 {char i,a[80];

  scanf("%s",a);

  for(i=0;i<strlen(a);i++)

      if (islower(a[i])) a[i]=a[i]-3;

           else if (isupper(a[i])) a[i]=a[i]+3;

  printf("%s",a);

 }

[10]

编一个程序,将按第9题中加密的字符串(从键盘输入)解密后输出。

 

#include <stdio.h>

main()

 {char i,a[80];

  scanf("%s",a);

  for(i=0;i<strlen(a);i++)

      if (a[i]>=94 && a[i]<=119) a[i]=a[i]+3;

           else if (a[i]>=68 && a[i]<=93) a[i]=a[i]-3;

  printf("%s",a);

 }

[11]

输入一行数字字符,请用数组元素坐位计数器来统计每个数字字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,....。

#include<stdio.h>

main()

{ int a[10]={0},i;

  char c;

  while((c=getchar())!='\n')

  if(c<='0'&&c<='9')

    if(c=='0')a[9]++;

    else  a[c-'1']++;

  for(i=0;i<=9;i++)printf("%d,",a[i]);

}

 

[12]

输入若干有序数放在数组中,然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。

1)插在最前     (2)插在最后       (3)插在中间

[12]

#include<stdio.h>

main()

{ int a[10]={ -1,3,5,9,12,15,17,19,21 },x,p,i;

  scanf("%d",&x);

  for(i=0;i<10;i++)       

    if(a[i]>=x){p=i;break;}

    else if(a[i]==-1) {p=i;break;}

    else {p=9;break;}

  for(i=9;i>p;i--) 

     a[i]=a[i-1];

     a[p]=x;

  for(i=0;i<=9;i++)printf("%d,",a[i]);

}

 

你可能感兴趣的:(练习题(程序阅读和编程))