期末复习Word文档下载推荐.docx
《期末复习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《期末复习Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
%d"
x-=2);
}while(!
(--x));
A.1-2B.30C.1D.无输出
7、下列程序段执行之后,输出的结果是【】
doublex=4,y;
if(x<
0)
y=0;
elseif(x<
10)
y=1.0/x;
else
y=1;
printf("
%.2f\n"
y);
A.0.25B.0.50C.0.75D.1.00
8、若已定义:
inta[]={0,11,22,33,44,55,66,77,88,99},*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用是【】
A.p[i]B.*(&
a[i])C.a[10]D.a[p-a]
9、现有定义:
int*p[3];
下列关于标识符p的描述中,正确的是【】
A.定义不合法B.是一个指向整型变量的指针
C.
是一个指针,它指向一个具有3个元素的一维数组
D.是一个指针数组名,每个元素是一个指向整型变量的指针
10、若有如下定义,则对ex中的a成员的正确引用是【】
structsk{inta;
floatb;
}ex,*p=&
ex;
A.(*p).ex.aB.p->
aC.p->
ex.aD.p.ex.a
11、判断字符串s1和s2是否相等的表达式是【】
A.s1=s2B.s1==s2C.strcpy(s1,s2)==0D.strcmp(s1,s2)==0
12、数字11与13进行“位或”运算(即11|13)的结果是【】
A.1B.11C.13D.15
(2)填空题
1、一个C语言程序的执行是从函数开始的。
2、结构化程序的三种基本结构是:
顺序结构、和循环结构。
3、在VC++2008环境下,C语言源程序的扩展名是_____,经过编译、链接后得到的可执行文件的扩展名是__________。
4、C语言中字符串的结束标志符是________;
转义字符_______具有换行功能。
5、指针就是,指针变量就是用来的变量。
6、若a=5,b=3,则表达式a>
b?
a+b:
a-b的结果是____。
7、数学式:
0<
x<
13对应的C语言表达式是___________________。
8、一个函数的原型是voidfunc(int),现要求定义一个函数指针p指向该函数,那么p的正确定义格式是___________________。
(3)写出下列程序的运行结果
1、
#include<
stdio.h>
intmain()
{
charc1,c2;
c1='
A'
+'
8'
-'
5'
c2='
4'
%c,%d\n"
c1,c2);
return0;
}
已知字母A的ASCII码为65,程序运行后的输出结果是D,69
2、
inta=5;
voidfun(intb)
inta=10;
a+=b;
%d,"
a);
{
intc=20;
fun(c);
a+=c;
%d\n"
程序运行后的输出结果是30,25
3.
voidbubbsort(inta[],intn)
inti,j,temp;
for(i=0;
i<
n-1;
i++)
for(j=0;
j<
n-1-i;
j++)
if(a[j]>
a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
intarray[]={3,15,9,6,12};
bubbsort(array,5);
for(inti=0;
5;
i++)
%d"
array[i]);
\n"
);
程序运行后的输出结果是
(4)程序填空
1、以下程序的功能是:
从键盘输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入的是负数时结束输入。
floatx,max,min;
请输入学生成绩:
"
scanf("
%f"
&
x);
max=min=x;
while(
(1))
if(
(2))max=x;
if(x<
min)min=x;
scanf("
max=%f,min=%f\n"
max,min);
2、以下程序的功能是:
先从键盘输入一个文件名,然后将输入的字符以文本方式依次存放到该文件中,用#作为输入的结束标志。
stdlib.h>
FILE*fp;
charch,fname[30];
请输入文件名:
\n"
gets(fname);
if((fp=fopen(fname,"
w"
))==NULL)
不能打开文件!
exit(0);
请输入数据:
while((ch=getchar())!
='
#'
)
fputc(,fp);
fclose(fp);
(5)编程题:
1、课件第3讲例3输入三角形的三边长,求其面积
math.h>
floata,b,c,s,area;
请输入三角形的三边长度:
%f%f%f"
a,&
b,&
c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
三角形的三边长度:
a=%f,b=%f,c=%f\n"
a,b,c);
三角形的面积:
area=%f\n"
area);
2、课件第6讲循环结
(2)例1
intsign=-1;
doubles=0,PI;
inti;
for(i=1;
1.0/i>
=1e-7;
i=i+2)
sign=-sign;
s=s+1.0/i*sign;
PI=s*4;
i=%d\n"
i-2);
PI=%10.8f\n\n"
PI);
3、课件第6讲循环结
(2)
例2:
输入一批学生成绩,输出其中的最高分、最低分
intscore,min,max;
请输入成绩(0--100),其它成绩结束:
"
);
score);
max=min=score;
//min、max赋初值
while((score>
=0)&
&
(score<
=100))
if(score>
max)
max=score;
if(score<
min)
min=score;
max=%d,min=%d\n"
4、课件第7讲数组
例5:
已知一个int型数组,数据元素分别为{9,8,5,4,2,0}。
要求按由小到大的顺序,重新排列数组元素
inta[6],i,j,t;
input6numbers:
for(i=0;
6;
a[i]);
for(j=0;
j++)
for(i=0;
5-j;
if(a[i]>
a[i+1])
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
thesortednumbers:
a[i]);
5、课件第8讲数组
例6选择排序
#include<
string.h>
constintM=5;
//定义常量,下同
constintN=30;
voidSelectSort(charstr[M][N])//对字符串进行选择排序函数
inti,j,k;
chartemp[N];
//用于字符串交换时当作中间存放空间
M-1;
i++)//进行M-1次选择和交换
k=i;
//给k赋初值
for(j=i+1;
M;
j++)//选择出待排序元素中的最小值str[k]
if(strcmp(str[k],str[j])>
0)//进行字符串比较
k=j;
//记录较小值的位置
//利用字符串拷贝函数交换str[i]与str[k]的值
if(i!
=k)
{
strcpy(temp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],temp);
}
intmain()
chars[M][N];
//定义二维字符数组
请输入%d个字符串:
gets(s[i]);
SelectSort(s);
//调用函数进行选择排序
\n排序后字符串:
puts(s[i]);
6、实验_12
第2题:
请参考教材P226-229图示,请说明下列函数中,哪些能实现主函数的实参数据交换功能,哪些不能实现或程序存在问题,为什么?
(最好上机验证)
(1)
voidswap1(int*p1,int*p2)
inttemp;
temp=*p1;
*p1=*p2;
*p2=temp;
(2)
voidswap2(int*p1,int*p2)
int*temp;
*temp=*p1;
*p2=*temp;
(3)
voidswap3(intx,inty)
temp=x;
x=y;
y=temp;
(4)
voidswap4(int*p1,int*p2)
int*p;
p=p1;
p1=p2;
p2=p;
7、实验_82、输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。
如下图所示:
(提示:
在教材的p385-386中有字符和字符串函数,可以直接引用。
如isalpha()判断字母函数、isdigit()判断数字函数、isspace()判断空格函数、ispunct()判断标点函数等)
ctype.h>
charstr[201];
请输入一个长度不超过的字符串:
gets(str);
intn1,n2,n3,n4;
n1=n2=n3=n4=0;
str[i];
if(isalpha(str[i]))
n1++;
elseif(isdigit(str[i]))
n2++;
elseif(isspace(str[i]))
n3++;
elseif(ispunct(str[i]))
n4++;
该字符串的字母个数:
%d,数字个数:
%d,空格个数:
%d,标点个数:
%d\n\n"
n1,n2,n3,n4);
8、实验_101、编程计算数组各元素的平方和,要求如下:
(1)voidarray_input(intarray[],intn)的功能是:
输入整型数组array的各元素值,参数n是数组元素的个数;
(2)intsquare_sum(intarray[],intn)的功能是:
对整型数组array的各元素的平方求和,参数n是数组元素的个数;
(3)主函数的功能:
定义一个是长度为6的整型数组,通过调用array_input()输入各元素的值,再调用square_sum()得到各元素平方和,最后输出结果;
(4)主函数在前,上述两个函数在后面定义。
程序运行如下图所示:
voidarray_input(intarray[],intn);
intsquare_sum(intarrya[],intn);
inta[6];
array_input(a,6);
intarray_square_sum=square_sum(a,6);
数组a的各元素平方和:
%d\n\n"
array_square_sum);
voidarray_input(intarray[],intn)//输入数组元素的函数
请输入整型数组的%d个元素:
n);
n;
array[i]);
intsquare_sum(intarray[],intn)//计算数组元素平方和函数
intsum=0;
sum=sum+array[i]*array[i];
returnsum;
9、实验_11结构体、共用体和枚举类型
3、学生有三门课程:
A、B、C,3名学生的成绩如下表所示:
姓名
A
B
C
平均分
张三
78
84
67
李四
88
90
95
王五
66
79
80
请先定义一个结构体Student,其成员包括:
name(姓名)、A、B、C、aver(平均分),再定义一个Student类型的数组stud[3]来存放学生资料。
现欲先输入学生三门课程成绩,再计算平均分,最后输出学生信息,要求用“模块化程序设计”方法来设计程序。
请根据题意、注释在代码段1-代码段5中填写程序所缺代码。
//定义结构体Student,学生姓名不超过10个字符
//三门课程成绩均为百分制,只取整数;
平均分带小数
structStudent
//代码段1
};
//定义结构体数组stud[3]
//对input()、average()、print()三个函数进行声明
//调用input()、average()、print()三个函数
//代码段2
//定义输入n名学生的姓名、三门课程成绩的函数。
voidinput(Students[],intn)
//代码段3
输入某一学生成绩的界面如下:
//定义计算n名学生三门课程平均分的函数
voidaverage(Students[],intn)
//代码段4
//定义输出n名学生的姓名、三门课程成绩、平均分的函数。
学生信息输出如下图所示
voidprint(Students[],intn)
//代码段5
输出结果界面如下: