C语言程序设计第三阶段练习.docx
《C语言程序设计第三阶段练习.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第三阶段练习.docx(10页珍藏版)》请在冰豆网上搜索。
C语言程序设计第三阶段练习
江南大学现代远程教育第三阶段练习题
考试科目:
《C语言程序设计》第10章至第13章(总分100分)
学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一、单项选择题(本题共20小题,每小题2分,共40分。
)
1、若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是(D)。
A、p=q;B、*p=*q;C、n=*q;D、p=n;
2、已定义以下函数
fun(int*p)
{return*p:
}
该函数的返回值是(C)。
A、不确定的值B、形参p中存放的值
C、形参p所指存储单元中的值D、形参p的地址值
3、有以下程序
main()
{char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是(C)。
A、n,twoB、t,oneC、w,oneD、o,two
4、若有定义:
int*p[3];,则以下叙述中正确的是(B)。
A、定义了一个基类型为int的指针变量p,该变量具有三个指针
B、定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C、定义了一个名为*p的整型数组,该数组含有三个int类型元素
D、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
5、已定义以下函数
fun(char*p2,char*p1)
{while((*p2=*p1)!
=‘\0’){p1++;p2++;}}
函数的功能是(A)。
A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有‘\0’
6、有以下程序
voidfun(char*c,intd)
{*c=*c+1;d=d+1;
printf(“%c,%c,”,*c,d);
}
main()
{chara=’A’,b=’a’;
fun(&b,a);printf(“%c,%c\n”,a,b);
}
程序运行后的输出结果是(D)。
A、B,a,B,aB、a,B,a,BC、A,b,A,bD、b,B,A,b
7、若有以下的说明,则对初值中字符'a'的引用方式为(B)。
staticstructst
{charch;doublex;chara[];}
structstc[2][2]={{'a',,'bc'},{'c',,'de'},{'m',,'abc'}};
A、B、c[0][0].chC、c[1][1].chD、a[0]
8、有以下程序
#include<>
main()
{FILE*fp;inti,k=0,n=0;
fp=fopen(“”,”w”);
for(i=1;i<4;i++)fprintf(fp,”%d”,i);
fclose(fp);
fp=fopen(“”,”r”);
fscanf(fp,”%d%d”,&k,&n);printf(“%d%d\n”,k,n);
fclose(fp);
}
执行后输出结果是(B)。
A、12B、1230C、123D、00
9、有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是(D)。
A、5B、6C、8D、9
10.运行下列程序后的输出结果是B。
main()
{charstr[][10]={"China","Beijing"},*p=*str;
printf("%s\n",p+10);}
A、ChinaB、BeijingC、ngD、ing
11、以下枚举类型的定义中正确的是(B)。
A、enuma={one,two,three};B、enuma{one=9,two=-1,three};
C、enuma={“one”,“two”,“three”};D、enuma{“one”,“two”,“three”};
12、设有说明:
uniondata{
inti;floatf;
struct{
intx;chary;
}s;
doubled;
}a;
在16位微机环境下,int类型的整数占用两个字节,则变量a在内存中所占字节数为(A)。
A、8B、17C、9D、15
13、下面对结构数据类型的叙述中,(C)是错的。
A、结构变量可以在说明结构类型后定义,也可在说明结构时定义
B、结构可由若干个成员组成,各成员的数据类型可以不同
C、定义一个结构类型后,编译程序要为结构的各成员分配存储空间
D、结构变量的各成员可通过结构变量名和指向结构变量的指针引用
14、有以下程序
#include<>
main()
{char*p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是(D)。
A、12B、15C、6D、5
15、以下叙述中错误的是(D)。
A、二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B、在程序结束时,应当用fclose函数关闭已打开的文件
C、在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D、不可以用FILE定义指向二进制文件的文件指针
16、若有如下说明,则(D)的叙述是正确的。
structst
{inta;
intb[2];
}a;
A、结构体变量a与结构体成员a同名,定义是非法的
B、程序只在执行到该定义时才为结构体st分配存储单元
C、程序运行时为结构体st分配6个字节存储单元
D、类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)
17、对于用"r"方式打开文件下列说法正确的是(B)。
A、用"r"方式打开的文件只输入不能输出
B、用"r"方式打开的文件只能输出,不能输入
C、用"r"方式可以打开任何文件
D、以上均不对
18、在C语言中,文件若按数据的组织形式分类可分为(B)。
A、字符文件和数字文件B、ASCII文件和二进制文件
C、顺序文件和随机文件D、以上均不对
19、如有以下定义“inty[4][4]={1,2,3,4,5,6,7,8,9,10},*pyl=y[l],(*py2)[4]=y;”,则不能正确引用值为7的数组元素的表达式是(B)。
A、*(y[l]+2)B、*(y+1)+2C、pyl[2]D、py2[1][2]
20、若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是(C)。
A、*p+6B、*(p+6)C、*p+=5D、p+5
二、填空题(本题共6小题,每空2分,共30分)
1、以下程序输出整形变量a的值,错误的语句是(4),应改为p=&a。
(1)main()
(2){inta,*p;
(3)a=100;
(4)*p=a;
(5)printf(“a=%d”,*p);
(6)}
2、下面的程序用来统计文件中字符的个数,请填空。
#include""
main()
{FILE*fp;
longnum=0;
if((fp=fopen("","r"))==NULL)
{printf("cannotopenfile!
\n");
exit(0);
}
while(!
feof(fp))
{fgetc(fp);
num++;
}
fclose(fp);
printf("num=%d\n",num);
}
3、以下程序运行后输出的第一行内容是AD,第二行内容是BC,第三行内容是BB。
#include<>
main()
{char*s1=”BD”,*s2=”BC”,*s3=”AB”;
if(strcmp(sl,s2)>0)swap(sl,s2);
if(strcmp(s2,s3)>0)swap(s2,s3);
if(strcmp(sl,s2)>0)swap(sl,s2);
puts(sl);puts(s2);puts(s3);}
swap(char*s1,char*s2)
{chart;
t=*s1;*s1=*s2;*s2=t;}
4、下面的函数用于比较两个给出的C字符串。
按比较结果,函数将返回下列函数值:
若:
s1=s2返回0
s1s1>s2返回正值,请填空。
[程序]
scmp(char*s1,char*s2)
{while(*s1)
if(*s1-*s2)
return(*s1-*s2);
else{
s1++;s2++;
}
return(0);}
5、C程序中,数据可以用二进制和ASCII两种代码形式存放。
6、运行程序后输出的第一行内容是n1=t,n2=u、第二行内容是a=tesustring,b=tesusfg。
#include<>
main()
{staticchara[50]="test";
charb[40],*p;
p=a;
*(p+3)+=1;
strcpy(b,"abcdefg");
strcat(a,"string");
strncpy(b,a,5);
printf("n1=%c,n2=%c\t",*p,*(p+3));
printf("a=%s,b=%s\n",a,b);}
三、编程题(本题共2小题,每小题15分,共30分)
1、现有四个学生数据,每个学生数据结构包含姓名、学号和性别要求编一程序实现以学号为主键对四个学生的数据按从大到小的顺序排列。
2、p的近似值可用以下公式求得:
由以上公式可知,若n取值100000,则最后一项的值已为10-8,认为可达到精度要求,编一个程序实现求p的近似值,并把结果放在文件中。