高级语言程序设计(C)答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、【初始化】:初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好。
2、【软件测试】:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。
3、【库函数】:顾名思义是把函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供程序员使用,程序员用的时候把它所在的文件名用#include<>加到里面就可以了(尖括号内填写文件名),例如#include<math.h>。
12
13
k=i;
K=i;应改为k=--i;
14
for(i=0;i<k;i++)
观察i和k,两个变量
15
{
的变化。
16
tmp=str[i];
17
str[i]=str[k];
18
str[k]=tmp;
19
k++;
K++;应改为k--;
20
}
21
22
for( i=0; str[i]= =’\0’; i++ )
程序
说明
1
#include <stdio.h>
2
int main()
3
{
4
int i,k,tmp;
5
char str[];
数组未指定元素个数
6
7
printf("input a string:\n");
8
9
while((str[i]=getchar())!=’\n’)
i未赋初值
10
i++;
11
str[i]=’\0’;
函数名
形参表
函数类型
3、读入30个取值在20到90之间的数字,读取每个数字时,仅在它不是重复已经读取数字的情况下才输出它。使用最小的可能数组来解决这个问题。
main()
{int a[30],i,j;
for(i=0;i<30;i++)
{a[i]=20+rand()%70;
for(j=i-1;j>=0;j--)
82
(sPtr+1)->Score[3]
78
2. main()
{
for (int i=0; i<2; i++)
for (int j=3; j>0; j--) printf("*");
}
i
0
1
2
j
3 2 1
3 2 1
3
输出
***
***
结束
3. main()
{int i=5;
char c[6]="abcd";//步骤(1)
if(a[i]==a[j]) {i--; break;}
if(j<0) printf("%d ",a[i]);
}
}
3、引入数组机制的好处是什么?
答:数组在内存中分配是栈内存,是【连续】存储【同一种类型】的【线性】结构。它的作用主要体现在对同一类型的数据进行存储。(要是int型,全都是int型,要是char型,全都是char型),不可以出现其他类型。对数据的访问是具名访问,可是直接读出数据中某一块的数据,例如int array[5]={1,2,3,4,5}; array[3]等于3.这里需要注意的是:数组的下标是从0开始的。如果你想访问array[5],会提示错误,因为已经越界了。提取数据比较方便,因为数组在内存中是连续存储数据的,好找。随便说句,数组可以当指针用,但它绝不是指针。
printf(“%lf %lf\n”,sum,diff);
}
(2)将计算代码独立做成子函数quadratic_ sum和quadratic_ diff
double quadratic_sum(int x,int y)
{dobule sum;
Sum=x*x+y*y;
Return sum;
}
double quadratic_diff(int x,int y)
==改为!=
23
putchar(str[i]);
24
25
return 0;
}
四、程序设计题(每小题10,共30分)
编程题要求:
(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;
(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。
1、编写一个程序,这个程序能够找出几个整数中最小的整数。假定程序读取的第一个值是程序要处理的整数的个数。给出伪代码描述及程序实现。
do
{ c[i]=c[i―1];//步骤(2)
} while(――i>0);
}
下标
0
1
2
3
4
5
步骤(1)c[]
a
b
c
dቤተ መጻሕፍቲ ባይዱ
\0
\0
步骤(2)i=5时c[]
a
b
c
d
\0
\0
步骤(2)i=4时c[]
a
b
c
d
d
\0
步骤(2)i=3时c[]
a
b
c
c
d
\0
步骤(2)i=2时c[]
a
b
b
c
d
\0
步骤(2)i=1时c[]
{ int StuId;
int Score[4];
int Total;
}
struct student com [10]
={{ 1, 90, 83, 72, 82},{ 2, 71, 92, 88, 78 },
{ 3, 85, 72, 98, 66 },{ 4, 78, 95, 63, 90 } };
for ( i=0; i<5; i++,aPtr++, bPtr++)
{
*aPtr +=i;③
*bPtr *=i;④
}
}
i
0
1
2
3
4
5
6
7
8
9
a
2
3
5
7
9
11
b
0
0
6
18
36
60
i
0
1
2
3
4
5
6
7
8
①*aPtr
2
3
4
5
6
7
③*aPtr
2
3
5
7
9
11
②*bPtr
0
3
6
9
12
15
④*bPtr
0
0
6
18
36
2、算法设计的一般步骤有哪些?
答:1)、分析问题:输入是什么?输出是什么?条件是什么?能用什么方法?
2)、用流程图画出解决方案:决定了程序的结构。三大结构有:顺序结构、判断结构、循环结构
3)、算法设计:常见的算法设计方法:穷举法、迭代法、递推法、递归法、回溯法、贪婪法、分治法
4)、程序设计:用编程语言来实现
4、【作用域】:通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。
5、【编译预处理】:编译预处理是C语言区别于其它高级程序设计语言的特征之一,它属于C语言编译系统的一部分。C程序中使用的编译预处理命令均以#开头,它在C编译系统对源程序进行编译之前,先对程序中这些命令进行“预处理”。本章的知识点是编译预处理命令的三种不同形式:宏定义、文件包含和条件编译。
a
a
b
c
d
\0
4.main()
{
int a[10], b[10];
int *aPtr, *bPtr, i;
aPtr=a; bPtr=b;
for ( i=0; i< 6; i++, aPtr++, bPtr++)
{
*aPtr=i+2;
*bPtr=3*i;
}
aPtr=&a[1];①
bPtr =&b[1];②
二、简答题(每小题5分,共25分)
1、为什么要用变量?
答:1)、计算机在工作过程中所产生的所有数据,都是在“内存”是存储和读取的。大家可以把“内存”想象成一个工厂的仓库,数据呢就是这个工厂工作过程中要使用的“零件”。在一段程序中,有很多很的数据(零件),它们分别存放在内存(仓库)中的不同地方。需要用变量把它引用出来。
{dobule diff;
Sum=x*x-y*y;
Return diff;
}
(3)在主函数中调用子函数并输出结果到屏幕上
功能
输入信息
输出信息
求两个数的平方和quadratic_sum
(int x,int y)
double sum
求两个数的平方差quadratic_diff
(int x,int y)
double diff
4、函数设计三要素包括功能、输入和输出三个方面的内容,它们和函数结构的关系是怎么样的?
答:函数设计的功能告诉这个函数具有具体的功能。输入对应函数的首部,输出对应函数的返回值。
5、值调用的特点是什么?
答:函数体内相应数据的改变不影响调用它的函数中的数据。
三、分析填表题(每小题6分,共30分)
1.struct student
}
2、我们需要一个小程序,输入两个整数,输出这两个数的平方和与平方差,要求:
(1)主函数负责接收这两个整数
Main()
{double sum,diff;
int x,y;
scanf(“%d%d”,&x,&y);
sum=quadratic_sum(x,y);
diff=quadratic_diff(x,y);
学习中心/函授站_
姓名学号
西安电子科技大学网络与继续教育学院
2015学年上学期
《高级语言设计(C)》期末考试试题
(综合大作业)
题号
一
二
三
四
总分
题分
15
25
30
30
得分
考试说明:
1、大作业于2015年4月3日公布,2015年5月9日前在线提交;
2、考试必须独立完成,如发现抄袭、雷同、拷贝均按零分计。
一、名词解释(每小题3分,共15分)
Main()
{int n,x,min;
Scanf(“%d”,&n);/*输入处理的整数个数*/
Scanf(“%d”,&x);/*输入要处理的第一个数*/
min=x;
For(i=2;i<=n;i++)/*用循环找出几个整数的最小值*/
{
scanf(“%d”,x);
if(max>x) min=x;
}
Printf(“%d”,min);
struct student x, *sPtr;
sPtr=com;
x=com[0];
结构成员引用
值
x. Total
0
x.Score[2]
72
com[1].StuId
2
com[2].Score[2]
98
sPtr->Total
0
sPtr->Score[3]
82
(*sPtr).StuId
1
(*sPtr).Score[3]
60
5.以下程序有语法错误和逻辑错误。在改正了语法错误后,为有效率地调试程序,你认为在调试时应该在哪些地方设置断点,应该观察哪几个量?找出程序中的错误。(观察的变量、断点设置、各种错误的改正等写在表格的说明栏中)
程序功能:输入一个以回车结束的字符串(少于80个字符),将它的内容颠倒过来再输出。如”ABCD”颠倒为”DCBA”。
2、【软件测试】:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。
3、【库函数】:顾名思义是把函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供程序员使用,程序员用的时候把它所在的文件名用#include<>加到里面就可以了(尖括号内填写文件名),例如#include<math.h>。
12
13
k=i;
K=i;应改为k=--i;
14
for(i=0;i<k;i++)
观察i和k,两个变量
15
{
的变化。
16
tmp=str[i];
17
str[i]=str[k];
18
str[k]=tmp;
19
k++;
K++;应改为k--;
20
}
21
22
for( i=0; str[i]= =’\0’; i++ )
程序
说明
1
#include <stdio.h>
2
int main()
3
{
4
int i,k,tmp;
5
char str[];
数组未指定元素个数
6
7
printf("input a string:\n");
8
9
while((str[i]=getchar())!=’\n’)
i未赋初值
10
i++;
11
str[i]=’\0’;
函数名
形参表
函数类型
3、读入30个取值在20到90之间的数字,读取每个数字时,仅在它不是重复已经读取数字的情况下才输出它。使用最小的可能数组来解决这个问题。
main()
{int a[30],i,j;
for(i=0;i<30;i++)
{a[i]=20+rand()%70;
for(j=i-1;j>=0;j--)
82
(sPtr+1)->Score[3]
78
2. main()
{
for (int i=0; i<2; i++)
for (int j=3; j>0; j--) printf("*");
}
i
0
1
2
j
3 2 1
3 2 1
3
输出
***
***
结束
3. main()
{int i=5;
char c[6]="abcd";//步骤(1)
if(a[i]==a[j]) {i--; break;}
if(j<0) printf("%d ",a[i]);
}
}
3、引入数组机制的好处是什么?
答:数组在内存中分配是栈内存,是【连续】存储【同一种类型】的【线性】结构。它的作用主要体现在对同一类型的数据进行存储。(要是int型,全都是int型,要是char型,全都是char型),不可以出现其他类型。对数据的访问是具名访问,可是直接读出数据中某一块的数据,例如int array[5]={1,2,3,4,5}; array[3]等于3.这里需要注意的是:数组的下标是从0开始的。如果你想访问array[5],会提示错误,因为已经越界了。提取数据比较方便,因为数组在内存中是连续存储数据的,好找。随便说句,数组可以当指针用,但它绝不是指针。
printf(“%lf %lf\n”,sum,diff);
}
(2)将计算代码独立做成子函数quadratic_ sum和quadratic_ diff
double quadratic_sum(int x,int y)
{dobule sum;
Sum=x*x+y*y;
Return sum;
}
double quadratic_diff(int x,int y)
==改为!=
23
putchar(str[i]);
24
25
return 0;
}
四、程序设计题(每小题10,共30分)
编程题要求:
(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;
(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。
1、编写一个程序,这个程序能够找出几个整数中最小的整数。假定程序读取的第一个值是程序要处理的整数的个数。给出伪代码描述及程序实现。
do
{ c[i]=c[i―1];//步骤(2)
} while(――i>0);
}
下标
0
1
2
3
4
5
步骤(1)c[]
a
b
c
dቤተ መጻሕፍቲ ባይዱ
\0
\0
步骤(2)i=5时c[]
a
b
c
d
\0
\0
步骤(2)i=4时c[]
a
b
c
d
d
\0
步骤(2)i=3时c[]
a
b
c
c
d
\0
步骤(2)i=2时c[]
a
b
b
c
d
\0
步骤(2)i=1时c[]
{ int StuId;
int Score[4];
int Total;
}
struct student com [10]
={{ 1, 90, 83, 72, 82},{ 2, 71, 92, 88, 78 },
{ 3, 85, 72, 98, 66 },{ 4, 78, 95, 63, 90 } };
for ( i=0; i<5; i++,aPtr++, bPtr++)
{
*aPtr +=i;③
*bPtr *=i;④
}
}
i
0
1
2
3
4
5
6
7
8
9
a
2
3
5
7
9
11
b
0
0
6
18
36
60
i
0
1
2
3
4
5
6
7
8
①*aPtr
2
3
4
5
6
7
③*aPtr
2
3
5
7
9
11
②*bPtr
0
3
6
9
12
15
④*bPtr
0
0
6
18
36
2、算法设计的一般步骤有哪些?
答:1)、分析问题:输入是什么?输出是什么?条件是什么?能用什么方法?
2)、用流程图画出解决方案:决定了程序的结构。三大结构有:顺序结构、判断结构、循环结构
3)、算法设计:常见的算法设计方法:穷举法、迭代法、递推法、递归法、回溯法、贪婪法、分治法
4)、程序设计:用编程语言来实现
4、【作用域】:通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。
5、【编译预处理】:编译预处理是C语言区别于其它高级程序设计语言的特征之一,它属于C语言编译系统的一部分。C程序中使用的编译预处理命令均以#开头,它在C编译系统对源程序进行编译之前,先对程序中这些命令进行“预处理”。本章的知识点是编译预处理命令的三种不同形式:宏定义、文件包含和条件编译。
a
a
b
c
d
\0
4.main()
{
int a[10], b[10];
int *aPtr, *bPtr, i;
aPtr=a; bPtr=b;
for ( i=0; i< 6; i++, aPtr++, bPtr++)
{
*aPtr=i+2;
*bPtr=3*i;
}
aPtr=&a[1];①
bPtr =&b[1];②
二、简答题(每小题5分,共25分)
1、为什么要用变量?
答:1)、计算机在工作过程中所产生的所有数据,都是在“内存”是存储和读取的。大家可以把“内存”想象成一个工厂的仓库,数据呢就是这个工厂工作过程中要使用的“零件”。在一段程序中,有很多很的数据(零件),它们分别存放在内存(仓库)中的不同地方。需要用变量把它引用出来。
{dobule diff;
Sum=x*x-y*y;
Return diff;
}
(3)在主函数中调用子函数并输出结果到屏幕上
功能
输入信息
输出信息
求两个数的平方和quadratic_sum
(int x,int y)
double sum
求两个数的平方差quadratic_diff
(int x,int y)
double diff
4、函数设计三要素包括功能、输入和输出三个方面的内容,它们和函数结构的关系是怎么样的?
答:函数设计的功能告诉这个函数具有具体的功能。输入对应函数的首部,输出对应函数的返回值。
5、值调用的特点是什么?
答:函数体内相应数据的改变不影响调用它的函数中的数据。
三、分析填表题(每小题6分,共30分)
1.struct student
}
2、我们需要一个小程序,输入两个整数,输出这两个数的平方和与平方差,要求:
(1)主函数负责接收这两个整数
Main()
{double sum,diff;
int x,y;
scanf(“%d%d”,&x,&y);
sum=quadratic_sum(x,y);
diff=quadratic_diff(x,y);
学习中心/函授站_
姓名学号
西安电子科技大学网络与继续教育学院
2015学年上学期
《高级语言设计(C)》期末考试试题
(综合大作业)
题号
一
二
三
四
总分
题分
15
25
30
30
得分
考试说明:
1、大作业于2015年4月3日公布,2015年5月9日前在线提交;
2、考试必须独立完成,如发现抄袭、雷同、拷贝均按零分计。
一、名词解释(每小题3分,共15分)
Main()
{int n,x,min;
Scanf(“%d”,&n);/*输入处理的整数个数*/
Scanf(“%d”,&x);/*输入要处理的第一个数*/
min=x;
For(i=2;i<=n;i++)/*用循环找出几个整数的最小值*/
{
scanf(“%d”,x);
if(max>x) min=x;
}
Printf(“%d”,min);
struct student x, *sPtr;
sPtr=com;
x=com[0];
结构成员引用
值
x. Total
0
x.Score[2]
72
com[1].StuId
2
com[2].Score[2]
98
sPtr->Total
0
sPtr->Score[3]
82
(*sPtr).StuId
1
(*sPtr).Score[3]
60
5.以下程序有语法错误和逻辑错误。在改正了语法错误后,为有效率地调试程序,你认为在调试时应该在哪些地方设置断点,应该观察哪几个量?找出程序中的错误。(观察的变量、断点设置、各种错误的改正等写在表格的说明栏中)
程序功能:输入一个以回车结束的字符串(少于80个字符),将它的内容颠倒过来再输出。如”ABCD”颠倒为”DCBA”。