Dotcpp  >  试卷列表  >  南京邮电大学C语言程序设计期末试卷

南京邮电大学C语言程序设计期末试卷


第1题

C语言中运算对象一定不能是double类型的运算符是_________。

共 2 分 

第2题

能正确表达数学逻辑关系“0<a<1或0<b<1”的C语言表达式是__________。

共 2 分 

第3题

设有以下变量均为int类型,则值不等于7的表达式是_______。

共 2 分 

第4题

下列while循环体中printf语句将执行_________。

1
2
3
int i=3;
while(--i)
printf("%d",i);
共 2 分 

第5题

有语句定义:int i,j;则以下程序段中printf的执行次数是__________。

1
2
3
4
5
for(i=3;i;i--)
for(j=0;j<2;j++)
{
   printf("%d",i*j);
}
共 2 分 

第6题

int a,b,c;语句if(a>b)c=0;else c=1;等价于________。

共 2 分 

第7题

有如下定义语句:int a,b=5,*p=&a;则能完成a=b赋值功能的语句是________。

共 2 分 

第8题

有函数原型为void f(int,int *);主函数中有变量定义:int a,*p=&a,b[10];则下列几种调用错误的是____________。

共 2 分 

第9题

若有宏定义如下:

1
2
3
#define M 5
#define N M+1
#define L N*M/2

则执行语句printf("%d,%d",L,M);后,输出结果是____________。

共 2 分 

第10题

若有以下结构体定义,选择___________赋值是正确的。

1
2
3
4
struct ST
{
   int x,y;
}vs;


共 2 分 

第11题

有定义:char a[80]="ABC",b[80]="PLAY";则正确的输出语句是________。

共 2 分 

第12题

设有语句int a[3][2],下面_________不能表示元素a[i][j]。

共 2 分 

第13题

下面各程序段能够正确实现两个字符串p、q交换的是____________。

共 2 分 

第14题

若要用fopen函数创建一个新的二进制文件,该文件要求既能读也能写,则文件打开方式的字符串应是_________。

共 2 分 

第15题

设int *ptr,x,array[5]={5,4,3,2,1};ptr=array;能使x的值为3的语句是_________。

共 2 分 

第16题

C语言源程序中整型常量可以用八进制数表示,此时必须以__________为前缀。

共 1 分 

第17题

有数学表达式:1727791240675274.png,其C语言表达式为_____________。

共 1 分 

第18题

有变量定义char c,*s=NULL;则sizeof(c)的值为________,sizeof(s)的值为_______。

共 2 分 

第19题

若s是int型变量,且s=7,则表达式s/2+(s+1)%2的值为________。

共 1 分 

第20题

用于循环体中退出本层循环的语句是___________语句。    

共 1 分 

第21题

C语言中根据数据的组织形式,把文件分为文本文件盒_________两种。

共 1 分 

第22题

声明一个具有全局作用域的外部函数,需要使用的关键字是___________。

共 1 分 

第23题

单链表的结点类型定义为:

1
2
3
4
5
struct NODE
{
    int data;
    struct NODE *next;
}head,p,q;

指针p指向链表中间的某一个结点处,在其后插入指针q所指向的结点,需要用两条语句实现,依次是:q->next=p->next;和___________。

共 1 分 

第24题

设有说明语句int (*ptr)[4],那么ptr是___________。

共 1 分 

第25题

以下程序执行结果是_________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
int main()
{
    int i;
    for(i=3;i<13;i++)
    {
        if(i%4==0)
        continue;
        else if(i/10)
        break;
        else
        printf("%d",i);
    }
    return 0;
}
共 1 分 

第26题

以下程序执行结果是___________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
func(int a,int b)
{
    static int m,i=2;
    i+=m+1;
    m=i+a+b;
    return m;
}
int main()
{
    int k=4,m=1,p,i;
    for(i=1;i<=2;i++)
    {
        p=func(k,m);
        printf("%d ",p);
    }
    return 0;
}
共 1 分 

第27题

以下程序的执行结果是__________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
long fun(int n)
{
    long s;
    if(n==1||n==2)
    s=2;
    else
    s=n+fun(n-1);
    return s;
}
int main()
{
    printf("%ld",fun(5));
    return 0;
}
共 1 分 

第28题

以下程序执行结果是_________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main()
{
    int i,j,row=0,col=0,m;
    int arr[3][2]={100,110,120,28,91,35};
    m=arr[0][0];
    for(i=0;i<3;i++)
    for(j=0;j<2;j++)
    if(arr[i][j]>m)
    {
        m=arr[i][j];
        row=i;
        col=j;
    }
    printf("%d %d %d\n",m,row,col);
    return 0;
}
共 1 分 

第29题

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<math.h>
int main()
{
    int x=100,a,b,c;
    while(___1___)
    {
        a=x/100;
        b=___2___;
        c=x%10;
        if(x==___3___)
        printf("%5d",x);
        ____4____;
    }
    return 0;
}
共 4 分 

第30题

下面程序功能是:从键盘读入一个可以带空格的字符串(假设字符串长度不超过10),将它逆序输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<string.h>
int main()
{
    char str[11],tmp;
    int i,j;
    ____1____;
    for(i=0,j=0;___2____,i<j;i++,j--)
    {
        tmp=str[i];
        ___3___;
        str[i]=tmp;
    }
    printf("%s\n",str);
    return 0;
}
共 3 分 

第31题

读文件E:\story.txt,在显示器上输出的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char ch;
    FILE *fp;
    fp=fopen("E:\\story.txt","r");
    if(!fp)
    {
        printf("Cannot open input file.\n");
        exit(0);
    }
    while(__1___!=EOF)
    {
        ___2____;  //输出该字符 
    }
    ___3____;
    return 0;
}
共 3 分 

第32题

下面程序运行结果是_______。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main()
{
    int i=0;
    char a[]="abm",b[]="aqod",c[10];
    while(a[i]!='\0'&&b[i]!='\0')
    {
        if(a[i]>b[i])
        c[i]=a[i]-32;
        else
        c[i]=b[i]-32;
        ++i; 
    }
    c[i]='\0';
    puts(c);
    return 0;
}
共 3 分 

第33题

以下程序的功能是判断输入的某个年份是否是闰年,请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main()
{
    int y,f;
    scanf("%d",&y);
    if(y%400==0)
    f=1;
    else if(__1___)
    f=1;
    else
    ___2___;
    if(f)
    printf("%d is",y);
    else printf("%d is not",y);
    printf("a leap year\n");
    return 0;
}
共 3 分 

第34题

有如下数学公式:

数学公式

已知梯形法求积分公式为:

数学公式

(其中n为积分区间的等分数)函数trap是一个利用梯形法求定积分的通用求积分函数。double pexp( )是计算公式一的函数,double poly( )是计算公式二的函数,请根据以下调用语句,完成trap函数中的填空。

调用语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
y1=trap(pexp,0.0,1.0)/sqrt(2.0*3.1416);
y2=trap(sin,0.0,3.1416/2.0)/2.0;
y3=trap(polyt,0.0,4.0);
double trap(__1___,double a,double b)
{
    double t,h;
    int i,n=1000;
    t=((*fun)(a)+(*fun)(b))/2.0;
    h=fabs(a-b)/(double)(n);
    for(i=1;i<=n-1;i++)
    t+=__2__;
    t*=h;
    return t;
}
共 3 分 

第35题

C语言源程序中整型常量可以用八进制数表示,此时必须以__________为前缀。

共 1 分 

第36题

有数学表达式:1727791240675274.png,其C语言表达式为_____________。

共 1 分 

第37题

有变量定义char c,*s=NULL;则sizeof(c)的值为________,sizeof(s)的值为_______。

共 2 分 

第38题

若s是int型变量,且s=7,则表达式s/2+(s+1)%2的值为________。

共 1 分 

第39题

用于循环体中退出本层循环的语句是___________语句。    

共 1 分 

第40题

C语言中根据数据的组织形式,把文件分为文本文件盒_________两种。

共 1 分 

第41题

声明一个具有全局作用域的外部函数,需要使用的关键字是___________。

共 1 分 

第42题

单链表的结点类型定义为:

1
2
3
4
5
struct NODE
{
    int data;
    struct NODE *next;
}head,p,q;

指针p指向链表中间的某一个结点处,在其后插入指针q所指向的结点,需要用两条语句实现,依次是:q->next=p->next;和___________。

共 1 分 

第43题

设有说明语句int (*ptr)[4],那么ptr是___________。

共 1 分 

第44题

以下程序执行结果是_________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
int main()
{
    int i;
    for(i=3;i<13;i++)
    {
        if(i%4==0)
        continue;
        else if(i/10)
        break;
        else
        printf("%d",i);
    }
    return 0;
}
共 1 分 

第45题

以下程序执行结果是___________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
func(int a,int b)
{
    static int m,i=2;
    i+=m+1;
    m=i+a+b;
    return m;
}
int main()
{
    int k=4,m=1,p,i;
    for(i=1;i<=2;i++)
    {
        p=func(k,m);
        printf("%d ",p);
    }
    return 0;
}
共 1 分 

第46题

以下程序的执行结果是__________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
long fun(int n)
{
    long s;
    if(n==1||n==2)
    s=2;
    else
    s=n+fun(n-1);
    return s;
}
int main()
{
    printf("%ld",fun(5));
    return 0;
}
共 1 分 

第47题

以下程序执行结果是_________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main()
{
    int i,j,row=0,col=0,m;
    int arr[3][2]={100,110,120,28,91,35};
    m=arr[0][0];
    for(i=0;i<3;i++)
    for(j=0;j<2;j++)
    if(arr[i][j]>m)
    {
        m=arr[i][j];
        row=i;
        col=j;
    }
    printf("%d %d %d\n",m,row,col);
    return 0;
}
共 1 分 

第48题

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<math.h>
int main()
{
    int x=100,a,b,c;
    while(___1___)
    {
        a=x/100;
        b=___2___;
        c=x%10;
        if(x==___3___)
        printf("%5d",x);
        ____4____;
    }
    return 0;
}
共 4 分 

第49题

下面程序功能是:从键盘读入一个可以带空格的字符串(假设字符串长度不超过10),将它逆序输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<string.h>
int main()
{
    char str[11],tmp;
    int i,j;
    ____1____;
    for(i=0,j=0;___2____,i<j;i++,j--)
    {
        tmp=str[i];
        ___3___;
        str[i]=tmp;
    }
    printf("%s\n",str);
    return 0;
}
共 3 分 

第50题

读文件E:\story.txt,在显示器上输出的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char ch;
    FILE *fp;
    fp=fopen("E:\\story.txt","r");
    if(!fp)
    {
        printf("Cannot open input file.\n");
        exit(0);
    }
    while(__1___!=EOF)
    {
        ___2____;  //输出该字符 
    }
    ___3____;
    return 0;
}
共 3 分 

第51题

编写一个程序,包含main、readin、sort、与print四个函数。该程序的功能是:调用readin函数从键盘读入n个整数(n<=10),调用print函数输出排序前的数列,在调用sort函数对元素值用选择法由大到小的排序,最后调用print函数输出排序后的数列,各个函数的原型如下:

1
2
3
void readin(int *a,int n);
void sort(int *a,int n);
void print(int *a,int n);

请写出完整的程序代码。


参考答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<stdio.h>
void readin(int *,int);
void sort(int *,int);
void print(int *,int);
int main()
{
    int arr[10],n;
    do
    {
        printf("please input n:\n");
        scanf("%d",&n);
    }
    while(n<1||n>10);
    printf("please input %d elements:\n",n);
    readin(arr,n);
    printf("before sorted,the swquence is:\n");
    print(arr,n);
    sort(arr,n);
    printf("after sorted,the sequence is:\n");
    print(arr,n);
    return 0;
}
void readin(int *a,int n)
{
    int i;
    for(i=0;i<n;n++)
    scanf("%d",&a[i]);
}
void sort(int *a,int n)
{
    int i,j,k,t;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        if(a[j]<a[k])
        k=j;
        if(k!=i)
        {
            t=a[i];
            a[i]=a[k];
            a[k]=t;
        }
         
    }
}
void print(int *a,int n)
{
    int i;
    for(i=0;i<n;i++)
    printf("%d",a[i]);
    printf("\n");
}
共 0 分 

第52题

定义一个带参得宏,用以判断整数n是否能被x整除,编写程序,从终端输入一个整数,调用宏验证其是否能同时被3和7整除。


参考答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
/*判断整数n是否能被x整除*/
#include<stdio.h>
#define DIV(n,x)((n%x)==0?1:0)
int main()
{
    int y;
    scanf("%d",&y);
    if(DIV(y,3)&&DIV(y,7))
    printf("yes!\n");
    else
    printf("No!\n");
    return 0;
}
共 0 分 

第53题

设文件number.dat中存放了一组整数。请编写程序统计并输出文件中正整数、零和负整数的个数。


参考答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
FILE*fp;
int main()
{
    int p=0,n=0,temp;
    fp=fopen("number.dat","r");
    if(fp==NULL)
    printf("File cannot be found!\n");
    else
    {
        while(!feof(fp))
        {
            fscanf(fp,"%d",&temp);
            if(temp>0)
            p++;
            else if(temp<0)
            n++;
            else
            z++;
        }
    }
}
共 0 分 

第54题

编写一个程序,包含main、readin、sort、与print四个函数。该程序的功能是:调用readin函数从键盘读入n个整数(n<=10),调用print函数输出排序前的数列,在调用sort函数对元素值用选择法由大到小的排序,最后调用print函数输出排序后的数列,各个函数的原型如下:

1
2
3
void readin(int *a,int n);
void sort(int *a,int n);
void print(int *a,int n);

请写出完整的程序代码。


参考答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<stdio.h>
void readin(int *,int);
void sort(int *,int);
void print(int *,int);
int main()
{
    int arr[10],n;
    do
    {
        printf("please input n:\n");
        scanf("%d",&n);
    }
    while(n<1||n>10);
    printf("please input %d elements:\n",n);
    readin(arr,n);
    printf("before sorted,the swquence is:\n");
    print(arr,n);
    sort(arr,n);
    printf("after sorted,the sequence is:\n");
    print(arr,n);
    return 0;
}
void readin(int *a,int n)
{
    int i;
    for(i=0;i<n;n++)
    scanf("%d",&a[i]);
}
void sort(int *a,int n)
{
    int i,j,k,t;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        if(a[j]<a[k])
        k=j;
        if(k!=i)
        {
            t=a[i];
            a[i]=a[k];
            a[k]=t;
        }
         
    }
}
void print(int *a,int n)
{
    int i;
    for(i=0;i<n;i++)
    printf("%d",a[i]);
    printf("\n");
}
共 0 分