网院作业 发表于 2017-7-3 13:34:16

东农17春《计算机程序设计(C语言)》离线作业-计算机程序设计(C语言)

东北农业大学网络教育学院
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;要将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; 则对a数组元素的正确引用是()。
(A)a   (B) a(C) a    (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=10b=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()
   {inti=1;
while(i<=10)
if(++i%2!=0)continue;
else printf(“%3d”,i);
}
2.main( )
   {        inti,j,k;
        charspace=‘’;
        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()
{inti,j,sum=0,a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
   {a=i+j;
   if(i==j) sum+=a; }
printf(“%d”,sum);
}
4.intx,y
   num()
{intx,y;
   inta=10,b=5;
   x=a+b;y=a-b;
   }
   main()
{inta=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      a)
      { temp=a;         ; a=temp;}
printf("\n排好序的10个整数为:\n");
for(i=0;i<10;i++)
   printf("%5d",a);
}
五、编写程序
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;,按照内存排列顺序,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; (B) int b[ ]={0,1,2,3}; (C) int c={0}; (D) int d[ ]={{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()
         { intx=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=%dy=%d\n”, x, y);}

    4.   main()
          { int a[]={1,3,5,2,7};
            int b[]={5,3,9,4,6};
            int c,i;
            for(i=0; i<5; i++)
             {c=a*b;
            printf(“%d”, c);
             }
}
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()
{inti,j,a;char space=’ ’;
for(i=0;i<N;i++)
      {         =1;         =1;}
      for(i=2;i<N;i++)
       for(j=1;         ;j++)
      a=            +a;
      for(i=0;i<N;i++)
   { for(j=0;j<4-i;j++)
       printf(“%c ”,space);
      for(j=0;          ;j++)
       printf("%4d",a);
      printf("\n");}
      }
}
(五)编写程序题
编写一个函数,重复打印给定的字符n次





编一程序,输入10个数,并求出它们的和







编一程序,显示如下图案

**
***
****
***** 






作业题(三)
一 填空题
1C语言源程序的扩展名为()。
2设charc=’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;内存开辟有()个存储单元。

二 单项选择题
1. 不正确的标识符是(   )
(A)_a2         (B)2ai         (C)a2_i             (D)Int
2.定义一个有 4 个元素的一维整型数组,正确的是(   )
(A) float a ; (B) int a[]={1,2,3,4,5} ;(C) int a[]={1,2,3} ; (D) int a={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={0,1,2,3,4,5};(B)int x[]={0,1,2,3,4,5};
(C)int x={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%2==0) s=s+a;
                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=%dy=%d\n”, x, y);
             } while(i<=3);}
    3.main( )
      {inti=5;
do
         {switch(i%2)
             {case4: i--; break;
            case6: 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; ???? k=1; ???? for (i=N-1;i>=0;i--) ?????? for (j=0;j<N-i;j++) ?????? { ????????? a=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中最大元素值。












作业题(五)
一 填空题
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=         ;  str=m;  }  printf("%s\n",str);  } 2.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。  #include  main()  { char str,str2,c;  int i,s;  printf("\n input string 1:\n"); gest(str1);  printf("\n input string 2:\n"); gest(str2);  i=0;  while((strl==str2&&(str1!=         ))  i++;  s=         ;  printf("%d\n",s);  }

(五)编写程序题
编一过程判定s字符串是否为一个Palindrome,所谓Palindrome是指其从正反两个方向看都是一样的,如“madam”。






已知一个一维数组a中有10个数,求出其中前n个数的和并放入a中。其中n由键盘输入。









打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和就等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。























页: [1]
查看完整版本: 东农17春《计算机程序设计(C语言)》离线作业-计算机程序设计(C语言)