出自:国家开放大学C语言程序设计

假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->b。
判断题 (2 分) 2分
A.对
B.错
与结构成员访问表达式(*fp).score等价的表达式是fp->score。
判断题 (2 分) 2分
A.对
B.错
在C语言中,对二进制文件的所有不同打开方式共有6种。
判断题 (2 分) 2分
A.对
B.错
C语言中的标准输入和输出设备文件都属于字符文件。
判断题 (2 分) 2分
A.对
B.错
在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。
判断题 (2 分) 2分
A.对
B.错
在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。
判断题 (2 分) 2分
A.对
B.错
一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。
判断题 (2 分) 2分
A.对
B.错
C语言系统中提供一个用来描述文件属性的类型标识符为FILE。
判断题 (2 分) 2分
A.对
B.错
每次只能向文本文件中写入一个字符,不能一次写入一个字符串。
判断题 (2 分) 2分
A.对
B.错
对二进制文件进行读和写操作将使用相同的系统函数。
判断题 (2 分) 2分
A.对
B.错
在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。
判断题 (2 分) 2分
A.对
B.错
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;};
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);


}
C语言源程序文件的缺省扩展名为(  )。
单选题 (2 分) 2分
A.
cpp

B.
exe

C.
obj

D.
c
在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和(  )。
单选题 (2 分)
A.
表达式

B.
语句

C.
参数表

D.
函数体
在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对(  )。
单选题 (2 分)
A.
尖括号

B.
双引号

C.
单引号

D.
花括号
在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为(  )。
单选题 (2 分)
A.
5

B.
4

C.
3

D.
6
转义字符.\\.表示的字符是(  )。
单选题 (2 分) 2分
A.
单引号

B.
双引号

C.
反斜线

D.
问号
C语言中的每条简单语句以分号作为结束符。
判断题 (2 分)
A.对
B.错
在一个C语言程序文件中,若要包含一个头文件,则使用以百分号开始的预处理命令。
判断题 (2 分) 2分
A.对
B.错
关系表达式(x!=0)的等价表达式为(x)。
判断题 (2 分) 2分
A.对
B.错
若x=5,y=10,则x>y逻辑值为真。
判断题 (2 分) 2分
A.对
B.错
下面的do循环语句中,其循环体被执行的次数为( )。


int i=0; do i++; while(i*i<10);
单选题 (2 分) 2分
A.
4

B.
3

C.
5

D.
2
#include<stdio.h>


______ void main() {


______ ______int i,s=0;


______ ______for(i=1;i<=5;i++) s+=i*i;


______ ______printf("s=%d\n",s);


______ }
答案: 1
#include<stdio.h>


______ void main() {


______ int i, s1=0, s2=0;


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


______ if(i%2) s1+=i; else s2+=i;


______ printf("%d %d\n",s1,s2);


______ }
答案: 1
#include<stdio.h>


______ void main()


______ {


______ int i,s;


______ for(i=1,s=0;i<10;i++) {


______ if(i%3==0) continue;


______ s+=i;


______ }


______ printf("%d\n",s);


______ }
答案: 1
填空题 (4 分) 4 分 (请按题目中的空缺顺序依次填写答案)
#include<stdio.h>


______ 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<3; i++)


______ for(j=0; j<4; j++)


______ if(a[i][j]>m) m=a[i][j];


______ printf("%d\n",m);


______ }
答案: 1
在下面的函数声明语句中,存在着语法错误的是( )。
单选题 (2 分) 2分
A.
AA(int a, int b)

B.
AA(int, int)

C.
AA(int a; int b)

D.
AA(int a, int)
#include<stdio.h>


#include<string.h>


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<n/2; i++) {


char c=ss[i];


ss[i]=ss[n-1-i];


ss[n-1-i]=c;


}


}
简答题 (4 分) 4分
#include<stdio.h>


int LA(int *a, int n, int x) {


int i,s=0;


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


if(a[i]<x) s+=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);


}
简答题 (4 分) 4分
double SF(double x, int n) { //n为正整数


double p=1,s=1;


int i;


for(i=1;i<=n;i++) {


p*=x;


s+=p;


}


return s;


}
简答题 (4 分) 4分
int SG(int x) { //x为大于等于2的整数


int i=2;


while(i*i<=x) {


if(x%i==0) break;


i++;


}


if(i*i<=x) return 0; else return 1;


}
简答题 (4 分) 4分
int WB(int a[], int n, int x) {


for(int i=0;i<n;i++)


if(a[i]==x) return 1;


return 0;


}
简答题 (4 分) 4分
int LK(double a[], int n) {


double s=0;


int i,m=0;


for(i=0;i<n;i++) s+=a[i];


s/=n;


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


if(a[i]>=s) m++;


return m;


}
简答题
假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。
单选题 (2 分) 2分
A.
p->next=f

B.
p->next=f和f=p

C.
f=p->next

D.
f->next=p和f=
C语言中打开一个数据文件的系统函数为( )。
单选题 (2 分) 2分
A.
fgetc()

B.
fputc()

C.
fclose()

D.
fopen(
定义结构类型的变量时,不能够同时进行初始化。
判断题 (2 分) 2分
A.对
B.错
#include<stdio.h>


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<stdio.h>


#include<string.h>


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<stdio.h>


struct Worker {char name[15]; int age; float pay;};


int Less(struct Worker r1, struct Worker r2) {


if(r1.age<r2.age) return 1; else return 0;


}


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<4; i++)


if(Less(x,a[i])) x=a[i];


printf("%s %d %6.0f\n",x.name,x.age,x.pay);


}
简答题 (5 分)
void QA(struct Worker a[], int n) {


int i;


for(i=1; i<n; 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;};
简答题 (
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;};
简答题 (5 分)
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);


}
简答题 (5 分