C语言试题-7
一、选择题 评分标准 20 分,每小题2
1. 执行语句“k=x++&&y++||z++;”(各变量当前值均为1)后,变量kxyz值依次为________
A122B122C022D0222
2. 计算变量xx大于1)整数部分位数的表达式,可以写作________
A(int)log10(x) Blog10(x) Clog10(x)+1 D(int)log10(x)+1
3. 判断变量xy中有且只有1个值为0的表达式为________
A!(x*y)&&x+y B(x*y)&&x+y Cx*y==0 Dx==0&&y!=0
4. 执行语句“for(s=0, k=1; s<20||k<10; k=k+2) s+=k;”后,sk的值为________
A259 B2511 C3611 D369
5. 下列程序
#include <stdio.h>
int  f(int n)
{  if  (n<=0)  return ( 1 );
  else return ( f(n-1)*3+2 );
}
void main()
{  printf(”%d”, f(4));
}
则运行结果是           
(A)  5          (B)  17            (C)  53        (D)  161
6. 执行语句“for(float x=0, s=0; x!=60; x=x+0.3) s=s+x;”后,变量x的值为________
A)不可能大于60 B)不可能大于60.3 C)一定小于60 D)可以远大于60
7. 声明语句为“char a[10]”,执行printf(“%d,%d\n”,sizeof(a),strlen(strcpy(a, ""Windows"")));语句后的输出结果为________
A7,7 B7,8 C10,7 D10,8
8. 若有以下说明,则引用数值为“4”的数组元素的表达式为        
    int a[3][4] = { {1,8,7,2}, {9,4,3,6}, {5,6,7,1} };   
    int (*p)[4] = a;
(A) *a[1]+1      (B) *(p[1]+1);    (C) a[2][2]    (D) *p[1]+1
9. struct ex
  { int x float y char z } example
  则下面的叙述中不正确的是(  )。
  A. struct结构体类型的关键字    B.  example是结构体类型名
  C. xyz都是结构体成员名    D.  struct ex是结构体类型
10. 声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是________
A*(a[2]+1) Ba[9] C*(a[1]+2) D*(*(a+2))+1
套数号
答案
7
1.A  2. D  3.A  4. B  5. D  6.D  7. C  8.  B  9. B  10. A
二、判断题 评分标准 20 分,每小题2分)
1. 语句“int a=0; if(a=1) a+=10;” 编译不会出错,但运行后a的值是11
2. 定义一维数组int n=10, a[n];写法是不正确的
3. 标准输入函数scanf的返回值为所输入数据的个数或EOF。
4. 用数组名作为函数的实参时,传递给函数的形参是数组的第1个元素
5. 若s的当前值为0,执行循环语句“for(i=1; i<10; i=i+2) s+=i;”后,i的当前值为10。
6. 函数头定义形式: int f(int x; int y) 是正确的
7. 设有字符数组: char  s[20]; scanf("%s", s);,能把一串字符: How do you do?<回车>全部输入。
8. 若打开文件的方式为“r”而该文件已经存在,则文件中原有数据被清空。
9. 定义语句为“char a[10];”,执行下列语句后的输出结果为10,7。
printf("%d,%d\n",sizeof(a),strlen(strcpy(a,"Windows")));
10. 在C语言程序中,在main函数中定义的变量称为局部变量。
套数号
答案
7
1.T  2.T  3.T  4.F  5.F  6.F  7.F  8.F  9.T  10.T
三、填空题(1  评分标准 10 分,第1-4题每空1分,第五题2分)
1. C语言中,拷贝字符串使用的库函数是_______( )函数。
2. 求解赋值表达式 a=5+(c=6)后,表达式值、ac的值依次为_____________________
3. a=13b=25c=-17,条件表达式 ((y=(a<b)?a:b)<c)?y:c 的值为________
4. 3&53|53||5 的值分别为_____________________
5. 字符串常量“people”在内存中占用的字节数是________
7
1
strcpy
2
11,11,6
3
-17
4
171
5
7
四、程序改错题 评分标准 20 分,每小题 5
1. 该程序功能:输入xeps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于e
ps为止。
#include <stdio.h>
#include <math.h>
void main()
{  float x,eps,s=1,t=1,i=1;
    scanf("%f %f",&x,&eps);
    do{
        t= -t*x/i;          /*$1*/ 
        s+=t; 
    }while(fabs(t)>=eps);       
    printf("%f\n",s);
}
说明:
该程序中“/*$1*/”行中的语句 t=-t*x/i ;有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1: 3 0.1    结果:0.302902
答案:t=-t*x/++i;
2.该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
#include <stdio.h>
#include <ctype.h>
void main()
{  char a[80]; int n[5]={0},i;
    get(a);              /*$1*/
    for(i=0; a[i]!='\0'; i++) 
    switch(tolower(a[i]))           
    {  case 'a': n[0]++; break;
        case 'e': n[1]++; break;
        case 'i': n[2]++; break;
        case 'o': n[3]++; break;
        case 'u': n[4]++; break;           
    }
    for(i=0;i<5;i++) printf("%d ",n[i]);
}
说明:
该程序中“/*$1*/”行中的语句  get(a); 有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1apple    结果:1 1 0 0 0
答案:gets(a);
3. 该程序功能:运行时若输入an的值分别为36,则输出表达式3+33+333+3333+33333+333333的值。
#include <stdio.h>
void main()
{ int i,a,n,t=0;
  int s=0;                   
  scanf("%d%d",&a,&n);
  for(i=1;i<=n;i++)
  {    t=t*10+i;          /*$1*/   
    s=s+t;
  }
  printf("%d\n",s);
}
说明:
该程序中“/*$1*/”行中的语句 t=t*10+i; 有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1:3  3      结果:369
答案:t=t*10+a;
4. 以下函数mystrcat(str1,str2)的作用是:把字符串str2连接到字符串str1后面,形参str1和str2用指针实现。
#include <stdio.h>
void mystrcat(char *str1,char *str2)
{    while(*str1!='\0')
      str1++;
    while(*str2!='\0')
    *str1=*str2;    /*$1*/
    *str1='\0';
}
void main()
{    char str1[80],str2[80];
    gets(str1);
    gets(str2);
    mystrcat(str1,str2);
    printf("%s\n",str1);
}
说明:
该程序中“/*$1*/”行中的语句*str1=*str2; 有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1abc
          defg
          结果:abcdefg
答案:*str1++=*str2++;
五、程序填空( 评分标准 10 分,每小题5分)
1. 下列程序功能:一个数的所有因子加起来正好是它自己本身的数,运行结果为:6
#include <stdio.h>
void main()   
{  int i,j,s;
  for(i=6;i<=10;i++)
{  s=0;           
    for(j=1; j<i;j++)
      if(i%j==0) 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。