东农18秋《计算机程序设计(C语言)》离线作业答案

[复制链接]
发表于 2018-11-18 14:25:26 | 显示全部楼层 |阅读模式
东北农业大学网络教育学院
C语言专升本作业题
作业题(一)
一、填空
1. C语言中任何程序的运行总是从主函数开始,在        函数中结束。
2.x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为           。
3.系统判断字符串结束的标志是              。
4.能正确表示“当ch为小写字母为真,否则为假”的表达式是                       。
5.C语言中while和do-while循环的主要区别是          的循环体至少无条件执行一次。
6.说明char s1[]=“china”,s2[10];要将s1的值复制到s2中的正确语句是           。
7.若用数组名作为函数调用的实参,则传递给形参的是          。
8.在C语言中实型变量分为两种类型,它们是         和          。
9.十进制11转化为八进制的值为         。
二、单项选择题  
1.?_____是不正确的字符常量。
(A)'n'      (B)'1'       (C)"a"       (D)'/101'
2.?以下程序的输出结果是
     main( )
     { int i;for(i='A';i<'I';i++,i++)
       printf("%c",i+32);printf(" \n");}
(A) 编译不通过,无输出         (B) aceg
(C) acegi                        (D) abcdefghi   
3、 执行以下程序后,输出的结果是
     main ()
     { int y=10;do { y - -;} while(- - y);
       printf("%d\n",y --);}
(A) -1     (B) 1     (C) 8     (D) 0
4. ______把x、y定义成float类型变量,并赋同一初值3.14。
(A)float x, y=3.14;              (B)float x, y=2*3.14;  
(C)float x=3.14, y=x=3.14;       (D)float x=y=3.14;
5. 说明: int a[3][4]; 则对a数组元素的正确引用是(  )。
(A)a[2][4]     (B) a[1,3 ]  (C) a[1+1][0]    (D)  a(2)(1)
6.若变量已正确定义,语句“if(a>b) k=0; else k=1;”和______等价。   
(A)k=(a>b)?1:0;                (B)k=a>b;
(C)k=a<=b;                     (D)a<=b ? 0 : 1;
7.?设变量定义为“int a, b;”,执行下列语句时,输入_____,则a和b的值都是10。
  scanf("a=%d, b=%d",&a, &b);
(A)10 10         (B)10, 10        (C)a=10  b=10       (D)a=10, b=10
8?若t为int类型,表达式t=1,t+5,t++的值是_____。
(A)1            (B)6             (C)2                  (D)1
9.在C程序中,若对函数类型未加说明,则函数的隐含类型为_____。
(A)int         (B)double      (C)void      (D)char
10.???? 若有以下定义和语句: int?u=010,v=0x10,w=10; printf(″%d,%d,%d\n″,u,v,w); 则输出结果是___   __。
(A)8,16,10    (B)10,10,10      (C)8,8,10    (D) 8,10,10 三、阅读程序,写出程序运行结果
1.main()
   {int  i=1;
while(i<=10)
if(++i%2!=0)  continue;
else printf(“%3d”,i);
}
2.main( )
   {        int  i,j,k;
        char  space=‘  ’;
        for(i=1;i<=3; i++)
        { for(j=1;j<=10-i;j ++)
        printf(“%c”, space);
        for(k=1;k<=2*i; k++)
        printf(“*”);
        printf(“\n”); }
}
main()
{int  i,j,sum=0,a[3][3];
  for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   {a[i][j]=i+j;
   if(i==j) sum+=a[i][j]; }
  printf(“%d”,sum);
}
4.int  x,y
   num()
  {int  x,y;
   int  a=10,b=5;
   x=a+b;y=a-b;
   }
   main()
  {int  a=8,b=3;
   x=a-b;y=a+b;
   num();
   printf("%d,%d",x,y)
   }
5. main(  )                           
{ int i, j=4 ;                  
for(i=j; i<=2*j; i++)
switch (i/j)
{  case 0 :
case 1: printf(“*”); break ;
    case 2: printf(“#”,a);
}
} 四、程序填空
阅读程序说明及程序,把它补充成一个完整的程序
1.下面程序是用冒泡法对10个数进行从小到大排序的程序。
  main( )
{ int      ,i,j,temp;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
  scanf("%d",           );
for(i=1;i<10;i++)        
  for(j=0;           ;j++)   
    if(a[j]      a[j+1])  
      { temp=a[j];           ; a[j+1]=temp;}
  printf("\n排好序的10个整数为:\n");
  for(i=0;i<10;i++)
   printf("%5d",a[i]);
}
五、编写程序
1. 从键盘输入20个整型数,统计其中负数个数并求所有正数的平均值。
2. 编写程序,输入一个字符串,计算出这个字符串的长度(要求不能使用strlen函数)3. 编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。
作业题(二)
填空题
一个C语言程序总是从(  )函数开始执行。
十进制数159转换为八进制数是(  )。               
已知int x=6; 表达式x%2+(x+1)%2的值是(  )。
C语言中char型变量在内存中占(  ) 个字节的内存单元
C语言的变量名:TEA与tea是(  )同的。
在屏幕上输出整型变量a,b值,每个数占5位,输出数据前有说明字符的 printf()函数为(   )。
设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为(  )。
表达式( 5<3) && (2 || 8<4 ) 的值是(    )。
a数组定义如下  char a[3];,按照内存排列顺序,a数组中的所有元素是(      )。
已知 int a[]={0,1,2,3,4,5}; 它的最大下标是(    )。
(二)单项选择题
1.在C程序中所用的变量使用前(    )
     (A)可以不定义 (B)先定义后使用  (C)随时定义随时用  (D) 其他
2.以下正确的字符常量是(    )
       (A)“x”  (B) ‘W’  (C)‘’  (D)‘XYZ’
3.在C语言的算术运算符中只能用于整型数的运算符是(    )
       (A)++     (B)/        (C) %      (D)*
4.设有程序段int k=10;  while (k=0)  k=k-1;则下面描述中正确的是(                        )
(A)循环执行十次                (B)循环是无限循环      
      (C)循环体语句一次也不执行      (D)循环体语句执行一次
5.已知 int a; 那么 &a表示(    )
        (A)变量名  (B)变量a的地址      (C)变量a的值 (D)其他
6.设x、y均为整型变量,且x=10 ,y=3,则以下语句的输出结果是(     ) printf("%d,%d\n",x--,--y); (A) 10,3       (B) 9,3        (C) 9,2         (D)10,2
  7.阅读以下程序,当输入数据的形式为:25,13,10<回车>,正确的输出结果是(                        )
main()
{int x,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
(A)x+y+z=48       (B)x+y+z=35          (C)x+z=35           (D)不确定值
8.已知:int i; for(i=0; i<=10;i++);如果表达式1即i=0缺省那么完成表达式1功能的语句可以( )
(A)放在for语句的前面   (B)放在循环体中
(C)放在for语句的后面   (D)放在程序的任何地方
9.以下可以正确计算s=1*2*3*4*5的程序段是(    )
         (A)for(i=1;i<=5;i++)      (B) for(i=1;i<=5;i++)
{ s=1;                       { s=0;
s=s*i;}                     s=s*i;}
         (C)s=1;                    (D) s=0;
    for(i=1;i<=5;i++)           for(i=1;i<=5;i++)  
     s=s*i;                         s=s*i;
10.以下数组定义中不正确的是(      ) (A) int a[2][3]; (B) int b[ ][3]={0,1,2,3}; (C) int c[100][100]={0}; (D) int d[3][ ]={{1,2},{1,2,3},{1,2,3,4}};
(三)写出程序运行结果  
   1.main()
{ int a=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d \n",a,b);
}    2.  main()
           { int  x=10, y=6, i=0;
              for(i=y; i<= x ; i++) printf(“i=%d\n”,i);}     3.     main()
               { int x=0,y=0;
                 do
                  { y++;
                    x=x*x;
                   }while((x>0)&&(y>5));
                 printf(“x=%d  y=%d\n”, x, y);}
  
    4.   main()
          { int a[]={1,3,5,2,7};
            int b[]={5,3,9,4,6};
            int c[5],  i;
            for(i=0; i<5; i++)
             {c[i]=a[i]*b[i];
              printf(“%d  ”, c[i]);
             }
}
  5.  若x=2,y=3,z=2,求下列表达式的值
x﹤y?y:z
x﹥y? (++x) ++z)
(四)程序填空
下面程序将按如下形式输出杨辉三角形。






1















1



1











1



2



1







1



3



3



1



1



4



6



4



1

#define N 5
main()
{int  i,j,a[N][N];char space=’ ’;
for(i=0;i<N;i++)
      {         =1;         =1;}
      for(i=2;i<N;i++)
       for(j=1;         ;j++)
        a[i][j]=            +a[i-1][j];
      for(i=0;i<N;i++)
     { for(j=0;j<4-i;j++)
       printf(“%c ”,space);
      for(j=0;          ;j++)
       printf("%4d",a[i][j]);
      printf("\n");}
      }
}
  (五)编写程序题
编写一个函数,重复打印给定的字符n次编一程序,输入10个数,并求出它们的和编一程序,显示如下图案

**
***
****
***** 
作业题(三)
一 填空题  
1C语言源程序的扩展名为(  )。
2设char  c=’A’,则语句printf(″%c″,c+32)结果为(  ) 。
3十六进制数2a转换为十进制数是(  )。
4计算 x 、 y 之和的平方,表达式应写作 (  ) 。
5执行语句“ a=5+(c=6); ”后,变量 a 、 c 的值依次为(  ) 。
6设y是int型变量,请写出判断y为5的倍数的关系表达式(  ) 。
7通过键盘输入整型变量a的scanf()函数为(          )。
8设x是个实型变量。满足数学式|x|>4的c语言表达式是(  )。
9若s 是整型变量,则计算表达式 s=22/3%2 后s的值为(  ) 。
10已知 int a[5];内存开辟有(  )个存储单元。 二 单项选择题  
1. 不正确的标识符是(   )
(A)_a2         (B)2ai           (C)a2_i             (D)Int
2.定义一个有 4 个元素的一维整型数组,正确的是(   )
(A) float a[4] ; (B) int a[]={1,2,3,4,5} ;  (C) int a[]={1,2,3} ; (D) int a[4]={1}
3.以下叙述正确的是(? )。 ? (A)do-while语句构成的循环不能用其他语句构成的循环来代替 ? (B)do-while语句构成的循环只能用break语句退出 ? (C)do-while语句构成的循环,在while后的表达式为非零时结束循环 ? (D)do-while语句构成的循环,在while后的表达式为零时结束循环
4.已知 int a=5,y; y=a++;  问a,y=? (    )
(A)a=6 , y=5    (B)a=6 , y=6
(C)a=6 , y=7    (D)a=5 , y=6
5.已知 int a =5; 赋值表达式a+=a*a的值为(    )
(A)5;  (B)10;  (C)30;  (D)50;
6.已知 int a=2,b=5; 则表达式a+5>b+3的值是(    )
(A)0   (B)1    (C)不确定  ( D)表达式错误  
7.已知整型变量k的值为3,下面程序段执行的结果是(    )
             switch(k)
             { case 1:putchar(‘A’);break;
               case 2:putchar(‘B’);break;
               case 3:putchar(‘C’);
               case 4:putchar(‘D’);
               default:putchar(‘E’);
             }
(A) CDE   (B) C   (C) ABC   (D) ABCD
8.以下程序段输出的结果是(    )
          a=-1;
          do
           { a=a*a;}while(a<0);
   (A) 循环一次           (B) 循环两次          (C) 死循环      (D) 有语法错误  
9.以下对数组的初始化正确的是(    )
(A)int x[5]={0,1,2,3,4,5};  (B)int x[]={0,1,2,3,4,5};
(C)int x[5]={5*0};          (D)int x[]=(0,1,2,3,4,5);   
10.当调用函数时,实参是一个数组名,则向函数传送的是(      ).
(A) 数组的长度             (B) 数组的首地址  
(C)数组每一个元素的地址    (D)数组每个元素中的值
三 写出程序运行结果
  1.main()
       { int x=7,a=2,b=2,c;
           c=x/a%b;
           printf(c=%d\n”,c);}
  2.main()
       { int x=2,y=3,z;
          z=x;
          if(x>y) z=1;
          else if(x==y) z=0;
               else z=-1;
          printf(“z=%d\n”,z);}
  3. main()
{ int a[]={1,2,3,4,5,6,7,8,9,10}, s=0, i;
                for(i=0; i<10; i++)
                if(a[i]%2==0) s=s+a[i];
                printf(“s=%d”, s);}
4.   main()
       { int a=10,b=5,x;
            x=a<b?b:a;
            printf(“x=%d\n”,x);}
5.main()
{ int n=2345,k=0;
while(n>1)
{
k++;
n= n/10 ;
}
printf(“%d\n”,k);
}
四 程序填空  
所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如编写程序,求得并输出全部水仙花数的个数。请填空完善程序。 ? #include <stdio.h> ? main() ? { ???? int hun,ten,one;?? /*百位数、十位数、个位数*/ ???? int num,count=0; ???? for (num=100;_____(1)_____;num++) ???? { ?????? hum=________(2)_________; ?????? ten=________(3)_________; ?????? one=________(4)_________; ?????? if (________(5)___________) ?????? { ???????? printf("%5d",num); ???????? count++; ??????? } ????? } ????? printf("\n"); ????? printf("No.=%d\n",count); ???? }  五 编写程序题  
1.求出所有正整数相乘乘积为64的数对2. 写一个程序,读入一个 3 × 3 的矩阵,求出它的转置存入该矩阵并输出。(注:转置是将原矩阵的行列互换)
3 .输出 100 之内所有个位数字为 6 且能被 3 整除的自然数。(如: 36 , 66 , 96 ……)
作业题(四)
一 填空题 1 C语言用(   )号括起来的单个或多个字符表示字符串常量。
float x, y, z;是将x, y, z; 定义为 (      )。
3 可执行的c语言程序系由一个或多个(  )组成。
4目前常用C语言的一个整型变量的存储容量为(   )个字节。
5已知int a=1,b=2;表达式 (a<b ? a:b)的值是(    )。
6在一维数组中,不同数组元素的数据类型是否可以不同( )?
7已知 int a,b,c; a或者b两个中间有一个小于c的表达式是(    )。
8要使for(i=0;i<=  ;printf(“%d\n”,i+=2));程序段输出10个整数,i应<=(   )。
9在switch语句中出现的break语句的功能是(    )。
10若While((ch=getchar())==’e’) printf(“*”);输入字符串:abcde<回车>,则循环体将执行 (  ) 次。
(二)单项选择题
1. 若变量已正确定义并赋值,下面符合C语言语法的表达式是
(A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b
2. 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是
(A) 1   (B) 2   (C) 2.0     (D) 2.5
3. 若变量a、i已正确定义,且i已正确赋值,合法的语句是
(A) a==1   (B) ++i;   (C) a=a++=5;   (D) a=int(i);
4. 若有以下程序段,
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是
(A) 0   (B) 0.5   (C) 1    (D) 2
5.C语言规定,程序中各函数之间 (A) 既允许直接递归调用也允许间接递归调用 (B) 不允许直接递归调用也不允许间接递归调用 (C) 允许直接递归调用不允许间接递归调用 (D) 不允许直接递归调用允许间接递归调用
6.以下程序段正确的是(     )
    (A)if(a>b) c=1              (B) if(a>b) c=1;
            else c=2;                      else c=2
    (C) if(a>b) c=1;            (D) if(a>b); c=1;
             else c=2;                     else c=2;
7.以下程序运行的结果是(    )
           main()
            {int x=12,y;
             y=x>12 ? x+10 : x-12;
             printf(“y=%d\n”,y);}
(A)y=0   (B) y=22   (C)y=12  (D)y=10
8.以下不是c语言规定保留字的是( )。
(A)float???? (B)integer???? (C)signed???? (D) unsigned
9.以下叙述中不正确的是(? )。
?? (A)在不同的函数中可以使用相同名字的变量
?? (B)函数中的形式参数是局部变量
?? (C)在一个函数内定义的变量只在本函数范围内有效
?? (D)在一个函数内的复合语句中定义的变量在本函数范围内有效
10.在宏定义 #define PI 3.14159中,用宏名PI代替一个(? )。  (A) 单精度数   (B) 双精度数   (C) 常量   (D) 字符串
(三)写出程序运行结果
   
1. main()
         { int a=1, b=2, c=3;
           if(a>c)
             b=a; a=c; c=b;
           printf(“a=%d   b=%d   c=%d\n”  ,a,b,c);}
   
    2.main()
         { int x=1, y=1, i=0;
            do
             { x=x+y ; y=x+y ;i++;
               printf (“x=%d  y=%d\n”, x, y);
             } while(i<=3);}
    3.  main( )
        {int  i=5;
do
           {switch(i%2)
             {case  4: i--; break;
              case  6: i--; continue;
              }
          i-=2;
          printf("%5d",i);
}while(i>0);
}
    4. long fib(int n)
     { if(n>2) return(fib(n-1)+fib(n-2));
       else return(2);
     }
    main0
     { printf(“%d\n”,fib(3));
         }
    5.  若x=3,y=z=4,求下列表达式的值
(z>=y>=x)?1:0
z>=y&&y>=x
(四)程序填空
编写程序,实现:将自然数1、2、3、···、25以方向依此填入二维数组a(5行5列)并按照矩阵形式输出结果。 ??? ?? ?? ?? ??  ? 11??? 7??? 4??? 2??? 1 ? 16?? 12??? 8??? 5??? 3 ? 20?? 17?? 13??? 9??? 6 ? 23?? 21?? 18?? 14?? 10 ?? 25?? 24?? 22?? 19?? 15 ?请填空完善程序。 ?#include <stdio.h> ? #define N 5 ? main() ? { ???? int i,j,k; ???? int a[N][N]; ???? k=1; ???? for (i=N-1;i>=0;i--) ?????? for (j=0;j<N-i;j++) ?????? { ????????? a[j][i+j]=k; ????????? k++; ??????? } ????? for (i=1;i<=N-1;i++) ????????? for (j=0;j<______(1)______;j++) ????????? { ????????????? __________(2)_________=k; ???????????? ___________(3)__________; ?????????? } ?????? for (i=0;i<N;i++) ???????? { ???????????? for (j=0;j<N;j++) ??????????????? printf("%4d",______(4)________); ??????????? ____________(5)___________; ????????? } ??????? }   (五)编写程序题
1.设计一个判断输入年份是否是闰年的程序。
2.检测某一给定字符串的长度(字符数),不包括结束符’\0’。
3.求二维数组A[3][4]中最大元素值。
作业题(五)
一 填空题
1C语言源程序的扩展名为*.C、目标文件的扩展名为(  )、可运行文件的扩展名为(  )。  
2能正确表示“当A=5时布尔量BL为真,否则为假”的表达式是(  )。
3 3行4列的二维数组,共有(  )个元素。  
4已知 int x; 如果用scanf(“%f”,&x);给x赋值,错误的原因是(  )。
5将 str定义为字符数组并初始化为“Lei”的语句是(    )。
6已知 int a,b; a、b中有一个小于0的表达式是(    )。
7在while(表达式) 循环语句中,表达式的值是(   )时可以循环,至少循环(   )次。
8在C语言中,表示逻辑量“真”用1,表示逻辑量“假”用( )。
(二)单项选择题
1. 下列不正确的转义字符是 (A) '\\'         (B)'\"        (C) '074'        (D) '\0
2.若有以下定义:  char a; int b;  float c; double d;  则表达式a*b+d-c值的类型为  (A) float    (B)int      (C) char       (D) double
3. 表示关系x<=y<=z的c语言表达式为  (A) (X<=Y)&&(Y<=Z)       (B)(X<=Y)AND(Y<=Z)  (C) (X<=Y<=Z)                  (D) (X<=Y)&(Y<=Z)
4.常数的书写格式决定了常数的类型和值, 0x1011 是 ( )
(A) 8 进制整型常量       (B)字符常量
(C) 16 进制整型常数      (D)2 进制整型常数
5. 设x和y均为int型变量,则执行下的循环后,y值为  for(y=1,x=1;y<=50;y++)  { if(x>=10))break;  if (x%2==1)  { x+=5; continue;}  x-=3;  } (A) 2          (B)4           (C) 6              (D) 8
6.给出以下定义: char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 (A) 数组X和数组Y等价                               (B)数组x和数组Y的长度相同 (C) 数组X的长度大于数组Y的长度          (D) 数组X的长度小于数组Y的长度
7.假定所有变量均已正确说明,下列程序段运行后x的值是    a=b=c=0;x=35;    if(!a)x--;    else if(b);    if(c)x=3;    else x=4;         (A)34      (B)4      (C) 35      (D) 3
8. 假定a和b为int型变量,则执行以下语句后b的值为 a=1; b=10; do { b-=a; a++; } while (b--<0) ; (A) 9         (B)-2           (C) -1           (D) 8
9. 设j为int型变量,则下面for循环语句的执行结果是  for( j=10;j>3;j--)  { if(j%3)j--;  --j; --j;  printf("%d ",j);  } (A) 6 3        (B)7 4         (C) 6 2           (D) 7 3
10.设有以下宏定义: #define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+Y(5+1));后,z的值为 (A) 出错          (B)42              (C) 48           (D) 54 (三)写出程序运行结果  
  1.main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf("%d\n",a);
} 2.int a, b;
void fun()
{ a=100; b=200; }
main()
{ int a=5, b=7;
fun();
printf("%d%d \n", a,b);
}  3.#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf("%d\n", M(a+b,b+c, c+a));
}
4. #include <stdio.h>
main( )
{
   int s=0,k;
   for (k=0; k<=7;k++)
{
   switch(k)
   {
     case 1:
     case 4:
     case 7:  s++;
             break;
     case 2:
     case 3:
     case 6:  break;
     case 0:
     case 5:  s+=2;
            break;
     }
    }
     printf(“s=%d\n”,s);
}5. #include<stdio.h>
main ( )
{
     int j=1,k,sum,m,n=5;
     sum=0;
     while  (j<=n)
     {
        m=1;
        for(k=1; k<=j;k++)
             m=m*k;
        sum=sum+m;
        j++;
}
printf(“sum=%d\n”,sum);  
          }
(四)程序填空  
1.函数fun的功能是使一个字符串按逆序存放,请填空  void fun (char str[])  { char m; int i,j;  for(i=0,j=strlen(str);i<         ;i++,j--)  { m=       ;  str[i]=         ;  str[j-1]=m;  }  printf("%s\n",str);  } 2.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。  #include  main()  { char str[100],str2[100],c;  int i,s;  printf("\n input string 1:\n"); gest(str1);  printf("\n input string 2:\n"); gest(str2);  i=0;  while((strl[i]==str2[i]&&(str1[i]!=         ))  i++;  s=         ;  printf("%d\n",s);  }(五)编写程序题  
编一过程判定s字符串是否为一个Palindrome,所谓Palindrome是指其从正反两个方向看都是一样的,如“madam”。
已知一个一维数组a[11]中有10个数,求出其中前n个数的和并放入a[10]中。其中n由键盘输入。打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和就等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。www.ap5u.com提醒,答案可以联系 qq 761296021
快速回复 返回顶部 返回列表