视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
c语言程序设计试题3
2025-09-30 22:44:23 责编:小OO
文档
C语言试题-3

一、选择题 ( 评分标准 20 分,每小题2分 )

1. 以下选项中可作为C语言合法常量的是________。

 (A) -80.   ( B) -080   (C) -8e1.0   (D) -80.0e

2. 以下叙述中正确的是________。

 (A) 用C程序实现的算法必须要有输入和输出操作

 (B) 用C程序实现的算法可以没有输出但必须要输入

 (C) 用C程序实现的算法可以没有输入但必须要有输出

 (D) 用C程序实现的算法可以既没有输入也没有输出

3. 已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是________。

 (A) 数组a和b的长度相同    (B) a数组长度小于b数组长度

 (C) a数组长度大于b数组长度 (D) 上述说法都不对

4. 以下叙述中错误的是________。

 (A) 数组名代表的是数组所占存储区的首地址,其值不可改变。

 (B) 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息。

 (C) 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出。

 (D) 可以通过赋初值的方式确定数组元素的个数。

5. 以下叙述中正确的是________。

 (A) 预处理命令行必须位于源文件的开头

 (B) 在源文件的一行上可以有多条预处理命令

 (C) 宏名必须用大写字母表示

 (D) 宏替换不占用程序的运行时间

6. 表达式 strlen(”hello”) 的值是________。

(A)4 (B)5 (C)6 (D)7

7. 设变量定义为“int a, b;”,执行语句scanf(“a=%d, b=%d”,&a, &b);时,输入________,则a和b的值都是10。

(A)10 10 (B)10, 10 (C)a=10  b=10 (D)a=10, b=10

8. 以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是_______。

  (A) feof(fp)   (B) ftell(fp)   (C)  fgetc(fp)   (D) rewind(fp)

9. 以下语句或语句组中,能正确进行字符串赋值的是________。

 (A) char *sp="right!";       (B) char s[10];s="right!"; 

 (C) char s[10];*s="right!";   (D) char *sp;*sp="right!";

10. 设变量定义为“int a[4];”,则表达式________不符合C语言语法。

(A)*a (B)a[0] (C)a (D)a++

套数号答案
31.A  2.C  3.C  4.B  5.D  6.B  7.D  8.D  9.A  10.D

二、判断题  ( 评分标准20分,每小题2分)

1. 一个C程序的执行是从本程序文件的第一个函数开始,到main函数结束。

2. 在C程序中,用整数0表示逻辑值“假”。

3. C语言中 while 和 do-while 循环的主要区别是do-while的循环体至少无条件执行一次。

4. 设变量定义为char s[]=“hello”,则数组s中有6个元素。

5. 对以下语句的正确理解是将5 个初值依次赋给 a[6] 到a[10]。

int  a[10] = {6, 7, 8, 9, 10};

6. 若变量已正确定义,表达式x=y=1符合C语言语法。

7. 表达式!(x>0‖y>0)等价于!(x>0&&!(y>0)。

8. C语言规定简单变量作实参时,它与对应形参之间的数据传递方式是实参和形参间来回传递。

9. 在C源程序中将语句“if(x==5) y++;”误写成“if(x=5) y++;”,将导致编译错误。

10. fscanf函数的正确调用格式为:fscanf (fp, 格式字符串,输出表列); 。

套数号答案
21. F  2. T  3. T  4. T  5. F  6. T  7. T  8. F  9. F  10. T

三、填空题  ( 评分标准10分,每小题2分)

1. 在C语言中,NULL的数值为________。

2. 如果定义结构体

struct student {

int id;

int age;

} * s;

则如果要表示其成员变量id,可以用________。

3. C程序是由函数构成的。其中有并且只能有________个主函数。

4. 在内存中存储“A”要占用________个字节。

5. 若定义:int a=88,*b=&a;,则printf("%d\\n",*b);的输出结果为         。

第2套

(1)

0(2)

s->id(3)

1(4)

2(5)

88
四、程序改错题(评分标准20分,每小题5分)

1. 假设该程序输入10个数字:1 2 3 4 5 6 7 8 9 10,则程序运行结果: 1--3--5--7--9--    。

#include

void main()

{ int i;

 int a[10];

for(i=0;i<10;i++)

 scanf("%d",&a[i]);

for(i=0;i<10;i++)

  {  if (a[i]%2=0)           /*$*/

          continue;  

     else

       printf("%d--",a[i]);

    }   

 }

说明:

该程序中“/*$1*/”行中的语句if (a[i]%2=0)  有错误,请改正(注意:不得加行、减行、加句、减句)。

运行样例1:1  3  2  6  10  20  8  12  5  3  运行结果:1--3--5--3--

答案:if(a[i]%2==0)

2. 以下程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0。

#include

void main()

{    int i, x, y=1;

    scanf("%d", &x);

    for(i=2; i>x/2; i++)     /*$1*/

        if(x%i==0)

        { y=0;

          break; 

        }

    printf("%d\\n",y);

}

说明:

该程序中“/*$1*/”行中的语句for(i=2; i>x/2; i++)  有错误,请改正(注意:不得加行、减行、加句、减句)。

运行样例1:7    运行结果:1

答案:for(i=2; i<=x/2; i++)

3. 假设该程序输入两个数据:2  3,程序运行结果为:2。

#include "stdio.h"

int *fun(int *a,int *b)

{    int m;

    m=*a;

    m+=*b-3;

    return(m);              /*$*/

}

void main()

{     int x,y;

    int *a=&x,*b=&y;

    int *k;

    scanf("%d%d",&x,&y);

    k=fun(a,b);

    printf("%d\\n",*k);

}

说明:

该程序中“/*$1*/”行中的语句return(m); 有错误,请改正(注意:不得加行、减行、加句、减句)。

运行样例1:5  4  运行结果:6 

答案:return(&m);  

4. 本程序功能:实现对字符数组的倒序。输入字符串:hg25DA, 输出结果: str now is AD52gh  

#include

#include

#include

int main()

{    char str[50] ;

    int length = strlen(str);

    char * p1 = str;

    char * p2;

    scanf("%s",str);

    length = strlen(str);

    p2 = str + length;          /*$*/

while(p1 < p2)

    {   char c = *p1;

        *p1 = *p2;

        *p2 = c;

        ++p1;

        --p2;

    }

    printf("str now is :%s\\n",str);

    return 0;

}

说明:

该程序中“/*$1*/”行中的语句p2 = str + length; 有错误,请改正(注意:不得加行、减行、加句、减句)。    

运行样例1:SH87ch     运行结果:str now is:hc78HS

答案: p2 = str + length – 1;  

五、程序填空(评分标准10分,每小题5分)

1. 阅读以下程序,假设输入为it6y7hh9e,请写出运行后的结果。

#include

#include

#include

void f(char *s)

{   int i=0;

     while(s[i]!='\\0')

        if(isdigit(s[i]))  

             /*$*/

        else    i++;

}

void main()

{  char str[80];

    gets(str); 

    f(str); 

    puts(str);

}

说明:

该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。该程序功能:删除字符串中的数字字符。这里用到isdigit()函数,所以需要在前加  #include 

运行样例1:i52lovey793ou    运行结果:iloveyou

答案:strcpy (s+i,s+i+1);

2. 以下程序对test.txt进行读操作,并将读出的文本输出到屏幕上。设test.txt文件原有内容:“hello,welcome to the world of C!”。

#include

#include

void main()

{ FILE *fp;

  char ch;

  fp = fopen("test.txt", "r");

  if (fp == NULL)

    { printf("can not open test\\n");

      exit(0);

     }

  ch = fgetc(fp);

  while(/ *$* /)

  {    putchar(ch);

    ch = fgetc(fp);

 }

fclose(fp);

}

说明:

该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。

运行结果1:hello,welcome to the world of C!

答案:ch != EOF

六、程序设计(评分标准20分,每小题10分)

 1. 编制函数,其功能是在float类型一维数组(5个元素)中查找最大值、最小值,并将它们返回到调用程序,并输出,一维数组的数值要求在主函数中输入。

参:  

#include

#include

void find(float num[],int n,float *min,float *max);

void main()

{    float min=1000000.0,max=0,num[5];

int i;

for(i=0;i<5;i++)

         scanf(“%f”,&num[i]);

     find(num,5,&min,&max);

     printf("%.1f   %.1f",max,min);

     getchar();

}

void find(float num[],int n,float *min,float *max)

{    int i;

for(i=0;i { if(num[i]<*min) *min = num[i];

if(num[i]>*max) *max = num[i];

     }

}

运行样例1:1.5   12.3   42.2   0.7   14.5(输入5个数)

运行结果1:42.2   0.7

运行样例2:1.2   15.4   83.7   0.1   28.2(输入5个数)

运行结果2:83.7   0.1

2. 某一电脑外设批发店 经营品牌无线键盘鼠标套装。如果成套购买(键盘+鼠标),一次买的数量多于50套,每套450元;如果一次买的数量不足50套,每套500元;如果只买键盘,每个250元,如果只买鼠标,每个300元。 编写程序:要求在键盘中输入需要买的无线键盘和鼠标的数量,计算应付金额。 参:

#include

void main()

{      int c,t;

    int m;

    scanf("%d%d",&c,&t);

    if (c==t)

    {    if (c>=50)

            m=c*450;

        else

            m=c*500;

    }

    else{  if (c>t)

         {    if (t>=50)

                m=t*450+(c-t)*250;

            else 

                m=t*500+(c-t)*250;

         }

         else

         {    if (c>50)

                m=c*450+(t-c)*300;

            else

                m=c*500+(t-c)*300;

        }

    }

    printf("%d",m);

}

运行样例1:5 6 

结果1:      2800下载本文

显示全文
专题