Dotcpp  >  试卷列表  >  河南理工大学C语言程序设计期末试卷

河南理工大学C语言程序设计期末试卷


第1题

已知各变量类型说明如下

1
2
3
int k,a,b;
unsigned long w=5;
double x=1.42;

则以下不正确的表达式(    )。

共 1 分 

第2题

下面不正确的字符串常量是(   )。

共 1 分 

第3题

若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(   )。

共 1 分 

第4题

已有如下定义和输入语句,若要求a1,a2,a3,c1,c2的值分别为10、20、30、A和B,当从第一列开始输入数据时,正确的数据输入方式是(   )。

1
2
3
int a1,a2;
char c1,c2;
scanf("%d%c%d",&a1,&c1,&a2,&c2);
共 1 分 

第5题

执行语句for(i=1;i++<4; )后变量i的值是(   )。

共 1 分 

第6题

一个C程序执行是从(   )。

共 1 分 

第7题

若有说明int a[3][4];,则对a数组元素的正确引用是(   )。

共 1 分 

第8题

若用数组名作为函数调用的实参,则传递给形参的是(   )。

共 1 分 

第9题

下面程序段的运行结果是(   )。

1
2
3
char p1[]="abcdefg",*p=p1;
p+=3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
共 1 分 

第10题

以下库函数strcmp(char *s,char *t)的功能相等的程序段是(   )。

共 1 分 

第11题

下面程序的运行结果是(   )。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
int main()
{
    char a[]="morming",t;
    int i,j=0;
    for(i=1;i<7;i++)
    if(a[j]<a[])
    j=i;
    t=a[j];
    a[j]=a[7];
    a[7]=a[j];
    puts(a);
    return 0;
}
共 1 分 

第12题

以下程序的输出是(   )。

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
int main()
{
    int x=1;
    if(x=2)
    printf("OK");
    else if(x<2)
    printf("%d\n",x);
    else
    printf("Quit");
}
共 1 分 

第13题

当a=1,b=3,c=5,d=4时,执行以下程序段后x的值是(   )。

1
2
3
4
5
6
7
8
9
10
if(a<b)
 if(c<d)
 x=1;
 else
  if(a<c)
   if(b<d)
    x=2;
    else x=3;
    else x=6;
    else x=7;
共 1 分 

第14题

以下程序运行结果是(   )。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
int fun(int n)
{
    int m=0,f=-1,i;
    for(i=1;i<=n;i++)
    {
        m=m+i*f;
        f=-f;
    }
    return m;
}
int main()
{
    printf("m=%d\n",fun(10));
    return 0;
}
共 1 分 

第15题

下面程序段的功能是计算1000!的末尾含有多少个零,请选择填空(   )。(提示:只要算出1000!中含有因数5的个数即可)

1
2
3
4
5
6
7
8
9
for(k=0,i=5;i<=1000;i+=5)
{
    m=i;
    while(_____)
    {
        k++;
        m=m/5;
    }
}
共 1 分 

第16题

假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换

1
2
3
a+=_______;
b=a-______;
a-=_______;
共 3 分 

第17题

请读程序段

1
2
3
int a=-1;
a=a|0377;
printf("%d,%0\n",a,a);

以上程序段的输出结果为________。

共 1 分 

第18题

若x=0123,则表达式(5+(int)(x)&(-2))的值是__________。

共 1 分 

第19题

若a是int型变量,则执行表达式a=25/3%3后a的值是___________。

共 1 分 

第20题

在C语言中,用关键字____________定义单精度实型变量,用关键字____________定义双精度实型变量,用关键字____________定义字符型变量。

共 3 分 

第21题

字符串"ab\n\\012\\\""的长度是____________。

共 1 分 

第22题

函数swap(int x,int y)可完成对x和y值的交换。在运行调用函数中如下语句后,a[0]和a[1]的值分别为____________,____________,原因是____________。

共 3 分 

第23题

当a=3,b=2,c=1时,表达式f=a>b>c的值是____________。

共 1 分 

第24题

若x,y,x,z均为int型变量,则描述"x或y中有一个小于z"的表达式____________。

共 1 分 

第25题

若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[3],k;则下面程序段的输出是____________。

1
2
3
for(k=0;k<3;k++)
q[k]=&a[k*4];
printf("%d\n",q[2][3]);
共 1 分 

第26题

以下程序功能是:计算y年m1月d1日与童年的m2月d2日之间的天数(m2>=m1),并打印计算结果。若m1=m2且d1=d2则算1天,在闰年时,2月有29天,闰年的年号由以下方式确定:该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年,例如输入1997,2,27,3,10

<回车>时,输出为12,表明聪1997年2月27日到1997年3月10日共有12天。请填空。

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
#include<stdio.h>
int main()
{
    int y,m1,d1,m2,d2;
    int i,d;
    scanf("%d,%d,%d,%d,%d",&y,&m1,&d1,&m2,&d2);
    y=(y%4==0___1___y%100!=0___2___y%400==0)?1:0;
    d=0-d1;
    for(i=m1;i<m2;i++)
    switch (i)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:d+=31;break;
        case 2:d=d+28+y;break;
        case 4:
        case 6:
        case 9:
        case 11:
        ___3___;
        printf("%d",d+d2+1);
        return 0;
    }
}
共 3 分 

第27题

某个自动加油站有a、b、c三种汽油,单价分别为1.50、1.35、1.18(元/千克),也提供了“自己加”或“协助加”两个服务等级,以便用户可得到5%或10%的优惠。以下程序功能是:针对用户输入加油量a,汽油品种b和服务类型c(f----自动,m----自己,e----协助),输出应付款m,请填空。

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>
int main()
{
    float a,r1,r2,m;
    char b,c;
    scanf("%f%c%c",&a,&b,&c);
    switch (b) 
    {
        case 'a':r1=15;break;
        case 'b':___1___;break;
        case 'c':r1-1.18;break;
    }
    switch (c)
    {
        case 'f':r2=0;break
        case 'm':r2=0.05;break
        case ___2___:r2=0.1;break
        m=___3___;
        printf("%f",m);
        return0
    }
}
共 3 分 

第28题

以下程序输出结果是_________。

1
2
3
4
5
6
7
#include<stdio.h>
int main()
{
    int x=1,y=2;
    printf("x=%dy=%d*sum*=%d\n",x,y,x+y);
    printf("10 Squared is:%d\n",10*10);
}
共 1 分 

第29题

以下printf语句中的负号的作用是_______________,该程序的输出结果是____________。

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
int main()
{
    int x=12;
    double a=3.1415926;
    printf("%6d##\n",x);
    printf("%-6d##\n",x);
    printf("%14.101f##\n",a);
    printf("%-14.101f##\n",a);
    return 0;
}
共 2 分 

第30题

以下程序运行结果是____________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
int fact(int value);
int main()
{
    printf("FACT(5):%d\n",fact(5));
    printf("FACT(1):%d\n",fact(1));
    fact(-5);
    return(0);
}
int fact(int value)
{
    if(value<0)
    {
        printf("FACT(-1):Error!\n");
        return -1;
    }
    else if(value==1||value==0)
    return 1;
    else return(value*fact(value-1));
}
共 2 分 

第31题

以下程序时将矩阵a、b的和存入矩阵c中并按矩阵形式输出。请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
以下程序时将矩阵a、b的和存入矩阵c中并按矩阵形式输出。请填空。
#include<stdio.h>
int main()
{
    int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};
    int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};
    int i,j,c[3][4];
    for(i=0;i<3;i++)
    for(j=0;j<4;j++)
    c[i][j]=___1____;
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        printf("%3d",c[i][j]);
        ___2___; 
    }
    return 0;
}
共 2 分 

第32题

下面程序运行结果是___________。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
int main()
{
    int i=5;
    do
    {
        switch(i%2)
        {
            case 4:i--;break;
            case 6:i--;break;
        }
        i--;
        i--;
        printf("%d",i);
    }
    while(i>0);
    return 0;
}
共 3 分 

第33题

以下程序找出二维数组a中每行的最大值,并按一一对应的顺序放入一维数组s中。即:第零行中的最大值,放入s[0]中,第一行中的最大值,放入s[1]中............然后输出每行的行号和最大值,请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#define M6
int main()
{
    int a[M][M],s[M],i,j;
    for(i=0;i<M;i++)
    for(j=0;j<M;j++)
    scanf("%d",*(a+i)+j);
    for(i=0;i<M;i++)
    {
        *(s+i)=*(___1___);
        for(j=1;j<M;j++)
        if(*(s+i)___2___*(*(a+i)+j)*(s+i)=*(___3___));
    }
    for(i=0;i<M;i++)
    {
        printf("Row=%2d Max=%5d",i,*(s+i));
        printf("\n");
        return 0;
    }
}
共 3 分 

第34题

试定义一个带参得宏swap(x,y),以实现两个整数之间的交换,并利用它将一维数组a和b的值进行交换。


参考答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#define swap(x,y)
int main()
{
    int i,a[10],b[10];
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    for(i=0;i<10;i++)
    scanf("%d",&b[i]);
    for(i=0;i<10;i++)
    swap(a[],b[i]);
    for(i=0;i<10;i++)
    printf("%d",a[i]);
    printf("\n");
    for(i=0;i<10;i++)
    printf("%d",b[i]);
    return 0;
}
共 0 分 

第35题

从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[]="ab"),试编程。


参考答案:

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
#include<stdio.h>
#include<string.h>
int main()
{
    char a[80],b[]="ab",max;
    int i=1,j;
    printf("Input a string\n");
    gets(a);
    puts(a);
    max=a[0];
    while(a[i]!='\0')
    {
        if(a[i]>max)
        {
            max=a[];
            j=i;
        }
        i++;
    }
    for(i=strlen(a)+2;i>j;i--)
    a[i]=a[i-2];
    a[i+1]='a';
    a[i+2]='b';
    puts(a);
    return 0;
}
共 0 分 

第36题

编写程序实现功能:对于给定的一个百分制成绩,改用相应的五级分成绩表示。设:90分以上为A,80-90分为B,70-79分为C,60-69分为D,60分以下为E(要求用switc实现)。


参考答案:

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
#include<stdio.h>
int main()
{
    int score,temp,log;
    char grade;
    log=1;
    while(log)
    {
        printf("enter score:");
        scanf("%d",&score);
        if((score>100)||(score<0))
        printf("\n error,try again!\n");
        else log=0;
        if(score==100)
        temp=9;
        else
        temp=(score-score%10)/10;
        switch(temp)
        {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:grade='E';break;
            case 6:grade='D';break;
            case 7:grade='C';break;
            case 8:grade='B';break;
            case 9:grade='A';
            printf("score=%d,grade=%c\n",score,grade);
        }
    }
}
共 0 分