国家开放大学电大《C语言程序设计》形考答案

[复制链接]
查看: 110|回复: 0

174

主题

174

帖子

526

积分

高级会员

Rank: 4

积分
526
发表于 2024-5-28 15:13:03 | 显示全部楼层 |阅读模式
C语言程序设计
若需要定义一个符号常量,并且使C语言能够进行类型检查,则应在定义语句的开始使用保留字const。


运算符优先级最高的是(  )
A. =
B. *=
C. &&
D. !=
C语言中打开一个数据文件的系统函数为( )。
a. fgetc()
b. fputc()
c. fclose()
d. fopen()
C语言中的标准输入和输出设备文件都属于字符文件。


C语言中的每条复合语句以花括号作为结束符。


C语言中的每条简单语句以分号作为结束符。


C语言程序中的基本功能模块为(  )。
A. 表达式
B. 标识符
C. 语句
D. 函数
C语言系统中提供一个用来描述文件属性的类型标识符为FILE。


NULL是一个符号常量,通常作为空指针值,它代表的值为0。


float的类型长度为8。


for语句能够被改写成的语句是( )。
a. 复合
b. if
c. switch
d. while
strcmp函数用于进行两个字符串之间的比较。


strcpy函数用于把一个字符串拷贝到另一个字符数组空间中。


x>0 && x
A. x10
B. x10
C. x
D. x>0 && x>10
一个二维字符数组a[10][20]能够存储的每个字符串的长度不超过20。


一个二维字符数组a[10][20]能够最多存储9个字符串。


一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。


下面循环语句执行结束后输出的i值为( )。
for(int i=0; in/2) {couta. n/2
b. n/2+1
c. n/2-1
d. n-1
不符合C语言规定的复合语句是(  )。
A. {}
B. {;}
C. {x=0;}
D. {y=10}
与结构成员访问表达式(*fp).score等价的表达式是fp->score。


与结构成员访问表达式x.name等价的表达式为( )。
a. x->name
b. &x->name
c. (&x)->name
d. (*x)->name
为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1。


为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句。


从一个数据文件中读入以换行符结束的一行字符串的系统函数为( )。
a. gets()
b. fgets()
c. getc()
d. fgetc()
使用const语句定义一个符号常量时,不必对它进行初始化。


使用“typedef char BB[10][50];”语句定义标识符BB为含有10行50列的二维字符数组类型。


使用一个结构类型时,必须一起使用关键字struct和类型标识符。


假定a为一个数组名,在下面的表达式中,存在语法错误的是( )。
a. a[i]
b. *a++
c. *a
d. *(a+1)
假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i字节。


假定k是一个double类型的变量,则定义变量p的正确语句为( )。
a. double p=&k;
b. int *p=&k;
c. double &p=*k;
d. char *p="Thank you!";
假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。


假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为46。


假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。


假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为( )。
a. 1
b. 2
c. 4
d. 8
假定x=5,则执行“a=(x?10:20);”语句后a的值为10。


假定x=5,则执行“y=++x;”语句后,y的值为6。


假定x=5,则执行“y=x++;”语句后,x的值为5。


假定x=5,则表达式2*x++的值为12。


假定x为一个简单变量,则&x表示x的地址。


假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][1]的值为( )。
a. 2
b. 4
c. 6
d. 8
假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。
a. 0
b. 4
c. 8
d. 6
假定一个函数定义为“static int f1(int x,int y){return x+y;}”,该函数名称为( )。
a. static
b. int
c. f1
d. return
假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明为( )。
a. char (*w)[N]
b. char *w[N]
c. char (*w)N
d. char**a
假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是( )。
a. ff(a)
b. ff(a[0])
c. ff(a+3)
d. ff(&a[0])
假定一个函数的数组参数说明为char a[],与之等价的指针参数说明为( )。1B
a. char a
b. char* a
c. char& a
d. char**a
假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。


假定一个枚举类型的定义为“enum RB{ab,ac=3,ad,ae}x=ad;”,则x的值为2。


假定一个结构类型的定义为 “struct A{int a,b; A* c;};”,则该类型的长度为12。


假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为( )。
a. 8
b. 10
c. 12
d. 16
假定一个结构类型的定义为 “struct B{int a[5]; char* b;};”,则该类型的长度为20。


假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长度为( )。
a. 4
b. 8
c. 12
d. 16
假定一个链表中结点的结构类型为“struct AA{int data, struct AA *next;};”,则next数据成员的类型为( )。
a. struct AA
b. struct AA*
c. AA
d. int
假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。
a. p->next=f
b. p->next=f和f=p
c. f=p->next
d. f->next=p和f=p
假定一维数组的定义为“char* a[8];”,则该数组所含元素的个数大于8。


假定二维数组的定义为“char a[M][N];”,则该数组所含元素的个数为M+N。


假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在0~N之间。


假定二维数组的定义为“double a[M][N];”,则每个数组元素的行下标取值范围在0~M-1之间。


假定二维数组的定义为“int a[3][5];”,则该数组所占存储空间的字节数为60。


假定变量m定义为“int m=7;”,则下面正确的语句为( )。
a. int p=&m;
b. int *p=&m;
c. int &p=*m;
d. int *p=m;
假定有“struct BOOK{char title[40]; float price;} book;”,则正确的语句为( )。
a. struct BOOK x= &book;
b. struct BOOK *x=&book;
c. struct BOOK x=calloc(BOOK);
d. struct BOOK *x=BOOK;
假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为( )。
a. struct BOOK *x=malloc(book);
b. struct BOOK x={"C++ Programming",27.0};
c. struct BOOK *x=malloc(sizeof(struct BOOK));
d. struct BOOK *x=&book;
假定有语句为“int b[10]; int *pb;”,则下面不正确的赋值语句为( )。
a. pb=b;
b. pb=&b[0];
c. pb=b+2;
d. pb=b[5];
假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。


假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->b。


假定要访问一个结构指针变量x中的数据成员a,则表示方法为( )。
a. x.a
b. x->a
c. x(a)
d. x{a}
关系表达式(x!=0)的等价表达式为(x)。


关系表达式x+y>5的相反表达式为x+y


函数形参变量不属于局部变量。


十进制数25表示成符合C语言规则的八进制数为31。


十进制数25表示成符合C语言规则的十六进制数为0x19。


向一个二进制文件中写入信息的函数fwrite()带有的参数个数为( )。
a. 1
b. 2
c. 3
d. 4
在C语言中,一个函数由函数头和函数体组成。


在C语言中,为只写操作打开一个文本文件的方式为( )。
a. "a"
b. "r+"
c. "r"
d. "w"
在C语言中,对二进制文件的所有不同打开方式共有6种。


在C语言中,常数28和3.26具有相同的数据类型。


在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。


在C语言中,转义字符'\n'表示一个换行符。


在C语言程序中,在行尾使用注释的开始标记符为一对单斜线字符。


在C语言程序中,多行注释语句使用的开始标记符为(  )。
A. //
B. /*
C. */
D. **
在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为(  )。
A. 5
B. 4
C. 3
D. 6
在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为(  )。
A. char
B. int
C. float
D. double
在switch语句中,每个case和冒号之间的表达式只能是常量。


在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是( )。
a. for
b. if
c. do
d. while
在一个C语言程序文件中,若要包含一个头文件,则使用以百分号开始的预处理命令。


在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和(  )。
A. 表达式
B. 语句
C. 参数表
D. 函数体
在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。


在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对(  )。
A. 尖括号
B. 双引号
C. 单引号
D. 花括号
在下列的符号常量定义中,错误的定义语句格式为(  )。
A. const int M1=10;
B. const int M2=20;
C. const int M3 10;
D. const char mark='3';
在下面循环语句中,内层循环体S语句的执行总次数为( )。
for(int i=0; i
for(int j=i; j
a. n2
b. (n+1)/2
c. n(n-1)/2
d. n(n+1)/2
在下面的do循环语句中,其循环体被执行的次数为( )。
int i=0; do i++; while(i*i
a. 4
b. 3
c. 5
d. 2
在下面的一维数组定义中,有语法错误的选项是( )。
a. int a[]={1,2,3};
b. int a[10]={0};
c. int a[];
d. int a[5];
在下面的二维数组定义中,语法正确的选项是( )。
a. int a[5][];
b. int a[][5];
c. int a[][3]={{1,3,5},{2}};
d. int a[](10);
在下面的保留字中,不能作为函数的返回值类型的是( )。
a. void
b. int
c. enum
d. long
在下面的函数声明语句中,存在着语法错误的是( )。
a. AA(int a, int b)
b. AA(int, int)
c. AA(int a; int b)
d. AA(int a, int)
在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。


在执行“typedef int DataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。


在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。


在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(  )。
A. main
B. MAIN
C. name
D. function
在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置。


在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口。


在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的( )。
a. 原型语句
b. 参数表
c. 函数名
d. 返回类型
在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是( )。
a. 句点
b. 冒号
c. 分号
d. 逗号
在结构类型的定义中,允许出现结构类型不完整的超前定义。


在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。


如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。


如果在一个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。


字符串"a:\\xxk\\数据"的长度为13。


字符串“a+b=12\n”的长度为(  )。
A. 6
B. 7
C. 8
D. 9
存储字符'a'需要占用1个字节的存储空间。


定义结构类型的变量时,不能够同时进行初始化。


对二进制文件进行读和写操作将使用相同的系统函数。


已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为( )。
a. free(p);
b. free p;
c. free(*p);
d. free
;
已知字符'C'的ASCII码为67,当执行“int x='C'+5;”语句后x的值为72。


带有随机函数的表达式rand()%20的值所在的区间范围是0~19。


当不需要函数返回任何值时,则需要使用保留字void作为函数的返回值类型。


当处理特定问时的循环次数已知时,通常采用的语句是( )。
a. for
b. while
c. do-while
d. switch
执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。


执行malloc(sizeof(struct BB))函数调用时,得到的动态存储空间能够保存具有struct BB结构类型的一个对象。


执行“printf("%c",'F'-2);”语句后得到的输出结果为H。


枚举类型中的每个枚举常量的值都是一个(  )。
A. 整数
B. 浮点数
C. 字符
D. 逻辑值
标准输入设备键盘的文件流标识符是( )。
a. stdin
b. stdout
c. stderr
d. stdio
每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为error。


每个C语言程序文件的编译错误被分为(  )。
A. 1类
B. 2类
C. 3类
D. 4类
每次只能向文本文件中写入一个字符,不能一次写入一个字符串。


注释内容的开始所使用的标记符为/*,则注释内容的结束所使用的标记符为*/。


用calloc函数创建具有10个整型元素的一维数组的正确语句是( )。
a. int *p=calloc(10,2);
b. int *p=calloc(10);
c. int *p=calloc(10,4);
d. int *p=malloc(10)
用于输出表达式值的标准输出函数是printf()。


由C语言目标文件连接而成的可执行文件的缺省扩展名为(  )。
A. cpp
B. exe
C. obj
D. c
程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为(  )。
A. 空格或逗号
B. 逗号或回车
C. 逗号或分号
D. 空格或回车
空字符串的长度为1。


若p指向x,则*p与x的值不同。


若x=5,y=10,则x>y逻辑值为真。


若有语句为“int a[10], x, *pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。
a. x=pa[3];
b. x=*(a+3);
c. x=a[3];
d. x=*pa+3;
若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。


表示文件结束符的符号常量为( )。
a. eof
b. Eof
c. EOF
d. feof
表达式(float)25/4的值为6。


表达式45%13的值为3。


表达式x=x+1表示成增量表达式为++x。


设有语句“int a=12; a+=a*a;”,则执行结束后,a的值为(  )。
A. 12
B. 144
C. 156
D. 288
调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。


转义字符'\\'表示的字符是(  )。
A. 单引号
B. 双引号
C. 反斜线
D. 问号
逻辑表达式(a>b || b==5)的相反表达式为(a>b && b==5)。


存储一个空字符串需要占用0个字节的存储空间。


#include
const int M=20;
void main()
{
int i,c2,c3,c5;
c2=c3=c5=0;
for(i=1; i
if(i%2==0) c2++;
if(i%3==0) c3++;
if(i%5==0) c5++;
}
printf("%d %d %d\n",c2,c3,c5);
}
#include
int a[10]={4,5,6,15,20,13,12,7,8,9};
void main()
{
int i,s[4]=0;
for(i=0; i
switch(a[i]%4) {
case 0: s[0]+=a[i];break;
case 1: s[1]+=a[i];break;
case 2: s[2]+=a[i];break;
default: s[3]+=a[i];break;
}
}
for(i=0; i
}
#include
void main() {
int n=6,y=1;
while否 y*=n--;
printf("y=%d\n",y);
}
#include
void main() {
int i,s=0;
for(i=1;i
printf("s=%d\n",s);
}
#include
void main() {
char a[]="abcdbfbgacd";
int i1=0, i2=0, i=0;
while(a[i]) {
if(a[i]=='a') i1++;
if(a[i]=='b') i2++;
i++;
}
printf("%d %d %d\n",i1,i2,i);
}
#include
void main() {
int a[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}};
int m=a[0][0];
int i,j;
for(i=0; i
for(j=0; j
if(a[i][j]>m) m=a[i][j];
printf("%d\n",m);
}
#include
void main() {
int i, s1=0, s2=0;
for(i=0;i
if(i%2) s1+=i; else s2+=i;
printf("%d %d\n",s1,s2);
}
#include
void main()
{
int i,s;
for(i=1,s=0;i
if(i%3==0) continue;
s+=i;
}
printf("%d\n",s);
}
#include
void main() {
int a[8]={12,39,26,41,55,63,72,40};
int i, i1=0, i2=0;
for(i=0;i
if(a[i]%2==1) i1++; else i2++;
printf("%d %d\n",i1,i2);
}
#include
struct Worker {char name[15]; int age; float pay;};
int Less(struct Worker r1, struct Worker r2) {
if(r1.age
}
void main() {
struct Worker a[4]={{"abc",25,2420},{"def",58,4638},
{"ghi",49,4260},{"jkl",36,3750}};
struct Worker x=a[0];
int i;
for(i=1; i
if(Less(x,a[i])) x=a[i];
printf("%s %d %6.0f\n",x.name,x.age,x.pay);
}
#include
#include
struct Worker {
char name[15]; //姓名
int age; //年龄
float pay; //工资
};
void main() {
struct Worker x;
char *t="liouting";
int d=38; float f=3493;
strcpy(x.name,t);
x.age=d; x.pay=f;
printf("%s %d %6.0f\n",x.name,x.age,x.pay);
}
#include
int LA(int *a, int n, int x) {
int i,s=0;
for(i=0;i
if(a[i]
return s;
}
void main() {
int a[8]={5,10,15,8,12,3,9,20};
int b=LA(a,5,10);
int c=LA(a+2,6,10);
printf("%d %d\n",b,c);
}
#include
int WF(int x, int y) {
x=x+y;
y=x+y;
return x+y;
}
void main() {
int x=5, y=7;
int z=WF(x,y);
printf("z=%d\n",z);
}
#include
struct Worker {
char name[15]; //姓名
int age; //年龄
float pay; //工资
};
void main() {
struct Worker x={"wanghua",52,4300};
struct Worker y, *p;
y=x; p=&x;
printf("%s %d %6.2f\n",x.name,y.age,p->pay);
}
#include
void main() {
int a[8]={3,5,7,9,2,3,4,8};
int s=0,*p;
for(p=a;p
printf("s=%d\n",s);
}
#include
#include
void fun(char ss[]);
void main彩蛋 {
char s[15]="0123456789";
fun(s);
printf("%s\n",s);
}
void fun(char ss[]) {
int i, n=strlen(ss) ;
for(i=0; i
char c=ss[i];
ss[i]=ss[n-1-i];
ss[n-1-i]=c;
}
}
#include
void main()
{
int x=5;
switch(2*x-3) {
case 4: printf("%d ",x);
case 7: printf("%d ",2*x+1);
case 10: printf("%d ",3*x-1); break;
default: printf("%s","default\n");
}
}
#include
int Count(int a[], int n, int x)
{
int i,c=0;
for(i=0;i
if(a[i]>x) c++;
return c;
}
void main() {
int a[8]={20,15,32,47,24,36,28,70};
int b=Count(a,8,30);
printf("b=%d\n",b);
}
double SF(double x, int n) { //n为正整数
double p=1,s=1;
int i;
for(i=1;i
p*=x;
s+=p;
}
return s;
}
int Count(struct IntNode *f)
{ //f为指向一个单链表的表头指针
int c=0;
while(f) {
c++;
f=f->next;
}
return c;
}
假定struct IntNode的类型定义为:
struct IntNode {int data; IntNode* next;};
int LK(double a[], int n) {
double s=0;
int i,m=0;
for(i=0;i
s/=n;
for(i=0;i
if(a[i]>=s) m++;
return m;
}
int SG(int x) { //x为大于等于2的整数
int i=2;
while(i*i
if(x%i==0) break;
i++;
}
if(i*i
}
int WB(int a[], int n, int x) {
for(int i=0;i
if(a[i]==x) return 1;
return 0;
}
int fun(int m, int n) {
int c=0;
static int b=2;
if(m[b]
else if(m%b==0 && n%b==0) {c=b; return c*fun(m/b,n/b);}
else {b++; return fun(m,n);}
}
void QA(struct Worker a[], int n) {
int i;
for(i=1; i
scanf("%s %d %f",&a[i].name,&a[i].age,&a[i].pay);
}
假定结构类型struct Worker 的定义如下:
struct Worker { char name[15]; int age; float pay;};
void xw1(char* fname) {
FILE* fout=fopen(fname,"w");
char a[20];
printf("每个字符串长度小于20,字符串end作为结束标志\n");
while(1) {
scanf("%s",a);
if(strcmp(a,"end")==0) break;
fputs(a,fout);
fputc('\n',fout);
}
fclose(fout);
}
编写一个主函数,利用while循环,求出并显示满足不等式的最小n值。
编写一个主函数,求出满足不等式22+42+...+n2
编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入。
编写一个函数,函数头格式为“double Mean(double a[M][N],int m,int n)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程中采用变量v存放平均值。
编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。





上一篇:国家开放大学电大《行政案例分析》形考任务一二三四参考答案
下一篇:国家开放大学电大《金融学》模拟实践答案
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩课程推荐
|网站地图|网站地图