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小时内删除。
发表评论