北师18秋《高级程序设计(C)》离线作业

[复制链接]
发表于 2018-10-3 15:55:49 | 显示全部楼层 |阅读模式

《C语言程序设计》作业
本课程作业由两部分组成。第一部分为“客观题部分”,由15个选择题组成,每题1分,共15分。第二部分为“主观题部分”,由简答题和论述题组成,共15分。作业总分30分,将作为平时成绩记入课程总成绩。客观题部分:
一、选择题(每题1分,共15题)
1、以下程序运行后,输出结果是(    )
main()
{
char *s="abcde";
s+=2;
printf("%ld\n",s);
}
A.cde        B.字符c的ASCII码值      
C.字符c的地址         D.出错
2、下面的程序将输出:(       )
main()
{
char ch;
ch=’1’;
ch+=1;
switch(ch)
{
  case ‘1’: printf("this is one. ");
  case ‘2’: printf("this is two. ");
  default: printf("no way! ");
   }
  }
A.this is one.         B.this is two.    C.no way!        D.this is two.no way!
以下所列的C语言常量中,错误的是(  )
A. 0xFF         B. 1.2e0.5        C. 2L                 D. '\72'
设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不正确的语句是(  )
A.k=*P1+*P2;    B.P2=k;       C.P1=P2;        D.k=*P1 * (*P2);
设有如下定义
int arr[]={6,7,8,9,10};
int * ptr;
则下列程序段的输出结果为:(       )
ptr=arr;
* (ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
A.8,10         B.6,8            C.7,9             D.6,10
6、在下以下程序的输出结果是:(       )
#define f(x) x*x
main()
{
int a=6,b=7,c;
    c=f(a)/f(b);
    printf(“%d\n”,c);
}
A.9                       B.35                          C.36                        D.18
7、设有以下说明和定义
typedef union
{ long   i;  int  k[15];  char  c; }DATE;
struct date
{ int cat;  DATE cow;  double   dog; } too;
DATE   max;
则下列语句的执行结果是:(       )
printf ("%d",sizeof (struct date ) +sizeof(max));
A.30         B.35           C.70           D.75
8、若已知int a[3][4],*p;p=(int *)a;那么对数组a的第2行第2列的正确引用是:(       )
A.a[2][2]        B.p[9]         C.a[9]                     D.p[1][1]
9、下列程序段所表示的逻辑关系是:(       )
if(a<b)  { if(c==d)  x=1;}    else  x=2;
A. x =          
B. x =   
C. x =          
        D. x =   
10、若有说明int a[2][2];那么,下面正确的C赋值语句是:(       )
A.a=2;                B.a[1]=2;        C.a[1]={1,2};         D.a[0][1]=a[1][0];
11、给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为
A、数组X和数组Y等价             B、数组x和数组Y的长度相同
C、数组X的长度大于数组Y的长度   D、数组X的长度小于数组Y的长度
12、有以下程序
main()
{ char   a[]="programming", b[]="language";
char   *p1,*p2;
int    i;
p1=a;      p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))   printf("%c",*(p1+i));
}
输出结果是:
A、gm         B、rg           C、or              D、ga
13、下面函数调用语句含有实参的个数为:
func((exp1,exp2),(exp3,exp4,exp5));
A、1          B、2             C、3           D、4
14、当执行下面的程序时,如果输入ABC,则输出结果是
#include "stdio.h"
#include "string.h"
main(){
        char ss[10]="1,2,3,4,5";
        gets(ss);
        strcat(ss, "6789");
        printf("%s\n",ss);
}
A、ABC6789         B、ABC67                C、12345ABC6        D、ABC456789
15、若二维数组a 有m列,则在a[i][j]之前的元素个数为(    )
A、j*m+i        B、i*m+j         C、 i*m+j-1     D、i*m+j+1
主观题部分:
一、简答题(每题2.5分,共2题)
1、阅读程序写结果
#include <stdio.h>
int f(int n)
{ static int s=1;
while(n) s*=n--;
return s;
}
main()
{
int i,j;
        i=f(3); j=f(5)+f(2);
        printf("\nThe outputis:\n");
        printf("i=%#x,j=%d \n",i,j);
}
2、阅读程序写结果
#include     <stdio.h>
typedef struct     stu
{ char     name[10];
  int      age;
}STU;
char *fun(STU *p,int m)
{ int k,i;
  STU *q;
  k=200;
  for(i=0;i<m;i++)
    if((p+i)->age<k)
      {
        k=p->age;
        q=p+i;
        }
  return q->name;
}
main()
{ struct  stu   students[3]=
{
"Zhang",20,
"Wang",19,
"Zhao",18};
printf("%s\n",fun(students,3));
    }
二、论述题(每题5分,共2题)
1、编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值,并输出最大值与最小值的和、差、积、商。
2、下面程序的功能是将一个字符串续接到另一个字符串上,至少包含有10处错误。请纠正错误的地方,使之成为正确运行的程序。
#include "string.h"
#include “stdio.h”
void main()
{
char str1[4];
char *str2="4567";
void StringCat(char s1;char *s2)
str1="123";
StringCat(str1,str2);
printf("%s",str1);
}
void StringCat(char s1;char *s2);
{
char *p1,p2;
p1=s1;
p1+=strlen(s1);
p2=s2;
while(p2)
   *p1++=*p2++;
*p1=0;
}
无忧答案网

快速回复 返回顶部 返回列表