C 语言上机考试试题-12
一、选择题 评分标准 20 分,每小题2
1. 在定义一个结构体变量时系统分配给它的存储空间是________
(A) 该结构体中的第一个成员所需存储空间
(B) 该结构体中的最后一个成员所需存储空间
(C) 该结构体中占用最大存储空间的成员所需存储空间
(D) 该结构体中所有成员所需存储空间的和
2. 执行语句for(s=0,k=1; s<20||k<10; k=k+2) s+=k; 后,s,k的值为________
(A)  25,9          (B)  25,11        (C)  36,11          (D)  36,9
3. 若用fopen()函数打开一个已经存在的文本文件,保留该文件原有数据且可以读也可以写,则文件的打开模式________
(A)  "ab+"        (B)  "w+"        (C)  "a+"    (D)  "a"
4. 对于以下的变量定义,语句________在语法和语义上都是正确的。
struct node{
    float x,y;
    char s[10];
}point={1,2, "abc"},*p;
(A)  *p=point;      (B)  p=&point;    (C)  point=p;      (D)  p->x=point.y
5.  fseek函数可以实现的操作是________
(A) 改变文件的位置指针的当前位置    (B) 文件的顺序读写
(C) 文件的随机读写                  (D) 以上都不对
6. 在说明一个共用体变量时系统分配给它的存储空间是________
(A) 该共用体中的第一个成员所需存储空间 
(B) 该共用体中的最后一个成员所需存储空间
(C) 该共用体中占用最大存储空间的成员所需存储空间
(D) 该共用体中所有成员所需存储空间的和
7. 以下程序段输出字符串str,其中循环条件str[i]!='\0' 还可以写成________
char str[80];
for(i=0; str[i]!='\0';i++)
putchar(stri[i]);
(A)  str[i] != NULL    (B)  i < 80      (C)  !(str[i]='\0')    (D)  i<=80
8. 设变量定义如下,则对其中的结构分量num正确的引用是________
  struct student {
      int num ;
      char name[20];
      float score;
  } stud[10];
  (A) stud[1].num=10;                (B) student.stu(D) num=10;
  (C) struct stud.num=10;              (D) struct student.num=10;
9. 函数f定义如下,执行语句m=f(5); 后,m的值应为________
      int f(int k)                       
      {  if(k==0||k==1) return 1;           
        else return f(k-1)+f(k-2);
      }
  (A)  3            (B)  8        (C)  5              (D)  13
10. 以“只读”方式打开文本文件c:\xy.txt,下列语句中哪一个是正确的________
      (A)  fp=fopen("c:\\xy.txt","a");        (B)  fp=fopen("c:\\xy.txt","r"); 
(C)  fp=fopen("c:\\xy.txt","wb");      (D)  fp=fopen("c:\xy.txt","r");
套数号
答案
12
1.D  2.B  3.C  4.B  5.A  6.C  7.B  8.A  9.B  10.B
二、判断题 评分标准 20 分,每小题2分)
1. 若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的声明语句。
2. 在C 语言程序中,在main()函数中定义的变量称为全局变量 。
3. 执行循环语句for(i=1;i<10;i=i+2) s+=i; 后,i的当前值为11。
4. P为指向字符串"hello!"的指针变量,*P表示字符'h'。
5. 表达式(15|0)&2 的值是2。
6. 当函数参数表用int保留字表示时,则表示该参数表为空。
7. 链表是动态地进行存储分配的一种结构。
8. 链表的一个结点中只可以存储数据。
9. 全局变量就是在main函数中定义的变量。
10. 共用体变量所占内存长度等于最长的成员的长度。
套数号
答案
13
1.T  2. F  3. T  4. T  5. T  6. F  7. T  8. F  9. F  10. T
三、填空题  评分标准 10 分,每小题2分)
1.下列程序段的输出结果是_____________(注意字符的大小写)。
main( )
{ char b[]="Hello,you";
b[5]=0;
printf("%s", b ); 
}
2. 若有定义语句:char s[12],d[12]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。
while(s[i]){ d[j]= ______;j++;}
d[j]=0;
3. 有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5,rec6));
该函数调用语句中,含有的实参个数是       
4 当调用函数时,实参是一个数组名,则向函数传送的是        的首地址
5. 存储'A'要占用________个字节。
4
1
Hello
2
s[i++]
3
3
4
数组
5
1
四、程序改错题 评分标准 20 分,每小题 5
1. 以下程序用于统计字符串中各个元音字母(a,e,i,o,u)的个数,要求只统计小写字母,改正下面程序中的错误。
#include <stdio.h>
void main( )
{    char s[100];
    int i,j,num[5];
    gets(s);
    for(j=0;j<5;j++)num[j]=0;
    for(j=0;s[j]!='\0';j++)
    {    i=-10;
        switch(s)          /*  $  */
        {
        case 'a': {i=0;break;}
        case 'e': {i=1;break;}
        case 'i': {i=2;break;}
        case 'o': {i=3;break;}
        case 'u': {i=4;break;}
        }
        if(i>=0) num[i]++;
    }
    for(j=0;j<=4;j++)
printf("%d",num[j]);   
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句switch(s)有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:此程序用于统计字符串中各个元音字母(a,e,i,o,u)的个数,要求只统计小写字母。例如: 输入abcdef  输出11000 。
答案:s[j]
测试样例1:输入aabeediou  输出 22111
2. 以下程序要求实现:计算1+1/2+1/4+...+1/100的值。
#include <stdio.h> 
void main()
{  int i;
float sum=1;
for (i=2;i<100;)
{    sum+=1/(float)i;
    i*=2;            /*  $  */
}
printf("%2.5f",sum);
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句i*=2; 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:计算1+1/2+1/4+...+1/100的值。
答案: i+=2;
测试样例1:  输出结果:3.23960
3. 以下程序把一个整数中每一位上为奇数的数字取出,并依次排列成一个新数,请改正程序中的错误。
#include <stdio.h>
void f( long s, long *p)
{
    int k=0;
    long d=1;
    *p=0;
    while(s>0)
    {        k=s%10;
if(k%2==0){*p=k*d+*p; d*=10;}          /*  $  */
            s/=10;
    }
}
void main()
{
    long s,d=0;
  scanf("%ld",&s);
    f(s,&d);
    printf("%ld",d);
   
}
操作说明:
在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句if(k%2==0){*p=k*d+*p;d*=10;} 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:把一个整数中每一位上为奇数的数字取出,并依次排列成一个新数。例如:输入:45678  输出:57
c语言数组最大值最小值答案:k%2!=0
测试样例1:输入:45678  输出:57
4. 主函数中用键盘输入两个数,将这两个数作为形参传递给fun函数,fun函数对传递过来的两个参数求和与差,并在主函数中输出这两个参数的和与差。
#include<stdio.h>
void fun(int a,int b,int sum,int min)                /*  $  */
{    *sum=a+b;
    *min=a-b;
}
void main()
{
    int a,b,sum=0,min=0;
    scanf("%d%d",&a,&b);

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