admin 管理员组文章数量: 1087134
2024年12月31日发(作者:scalar语言开发fpga)
《程序设计基础》作业二答案(12秋)
作业二答案
一、选择题
1、C语言中,使用变量的要求是______。A
A 要先定义后使用
B 要先使用后定义
C 不需要定义,可以直接使用
D 没有明确的要求
2、不是C语言的基本数据类型是______。D
A int
B double
C char
D bool
3、编程语言提供的三种基本控制结构是______。D
A 输入、处理和输出结构
B 常量、变量和表达式结构
C 表达式、语句和函数结构
D 顺序、选择和循环结构
4、在C语言中,决定int数的表示范围的因素是______。A
A int类型占用的字节数量
B 人为事先的约定和习惯
C 所存储的数据是否有符号
D 数在内存中的编码方式
5、C语言中,关于运算符的正确概念是_____。D
A 运算符具有优先级,同优先级的运算符由括号决定运算次序
B 在不同优先级运算符进行混合运算时,运算的先后次序取决于
结合性
C 在同优先级的运算符参与运算时,先计算左侧的运算符
D 运算符具有优先级和结合性
6、在C语言中关于循环语句的结论中,错误的是______。D
A do-while语句构成的循环至少要执行一次
B while语句和for语句可以相互替代
C for和while语句的循环控制条件都是当条件成立时执行循环体
D do-while语句的循环控制条件是当条件不成立时继续执行循环
体
二、填空题
1、最基本的程序控制有三种,它们是______,______和______。这
三种执行控制
的任意组合和重复、嵌套就可以描述任意复杂的程序。顺序执行、
分支控制和
循环控制
2、C语言中分支语言是______语句和______语句。if,switch
3、C语言中循环语言是______语句,______语句和______语句。
while,for和
do-while
4、C语言中自增运算符是______,求余数的运算符号是______。
++,%
5、C语言中要改变循环语句的流程可以使用语句______,______和
______。break,
continue和goto
三、简答题
1、请简要介绍面向过程式语言中的三种程序设计的基本结构。
顺序结构是指按先后顺序从前到后执行的语句序列。这些语句逻
辑上可能有明确的顺序关系,即后一个程序语句依赖于前一个语句,
也可能它们之间没有明确的顺序关系,即某些语句的先后顺序并不重
要,一个语句逻辑上并不从属于另一些语句。
选择结构是指根据判定条件控制一些语句是否执行的语句。选择
结构可用if-then、if-then-else或case(或switch)等语句进行描述。
当判定条件成立时需要执行一组语句,且不成立时不需要执行这些语
句,那么应当采用if-then语句。当判定条件成立时需要执行一组语句,
否则需要执行另一组语句时,可采用if-then-else语句。当根据表达式
的取值情况在多个动作中选取其一执行时,可采用case语句。
循环结构是指可重复执行一组语句(称为循环体)的程序语句。根据
重复方式的不同,循环结构可分为while型循环、until型循环和for
型循环。while型循环是在指定的条件(称为循环条件)成立时,重复
执行循环体,其特点是执行循环体前先判定循环条件,因此可能一次
也不执行循环体。until型循环将重复执行循环体,直到循环条件成立
才结束该重复,其特点是每执行一次循环体后判定循环条件,因此至
少执行一次循环体。for型循环将循环体重复执行给定次数,其特点是
循环开始前可确定循环次数。
2、什么是面向过程式语言?有什么特点?
面向过程式语言,也叫命令式语言或强制式语言,它是通过指明
一列可执行的运算及运算的次序来描述计算过程的语言。
命令式语言以冯·诺依曼式计算机体系结构为背景。机器语言与汇
编语言是最早问世的命令式语言。FORTRAN,ALGOL,COBOL,
PASCAL,C,Ada等高级语言也属过程式语言,其变量对应于存储单
元,对变量的访问就是对相应存储单元的访问。各个语句在程序中的
顺序以及转向语句等控制语句则明确规定了机器的执行步骤,这就是
冯·诺依曼式体系结构的思维方式在程序设计中的反映。
过程式语言程序的本质是重复地、按步地计算低级(非抽象)值
并将之赋给变量(对象),这就迫使程序人员去关心比较低级的细节,
而这不适用于设计复杂算法。因此,几十年来过程式语言一直向着隐
蔽低级机器属性、提高程序层次与抽象性的方向发展。
3、结构化程序设计方法的主要技术是什么?
结构化程序设计方法的主要技术是自顶向下、逐步求精。具体地
说,就是在接受一个任务之后,纵观全局,先设想好整个任务分为几
个子任务,每一个子任务又可以进行细分,直到不需要细分为止。这
种方法就叫做“自顶向下、逐步求精”。
采用这种方法考虑问题比较周全,结构清晰,层次分明。用这种
方法也便于验证算法的正确性。在向下一层细分之前应检查本层设计
是否正确,只有上一层是正确的才可以继续细分。如果每一层设计都
没有问题,则整个算法就是正确的。由于每一层向下细分时都不太复
杂,因此容易保证整个算法的正确性。检查时也是由上而下逐层检查,
这样做思路清晰,可以有条不紊地一步一步地进行,既严谨又方便。
4、结构化程序设计的主要特征与风格是什么?
结构化程序设计的主要特征与风格如下所述。
(1)一个程序按结构化程序设计方式构造时,由三种基本控制结构:
顺序结构、选择结构和循环结构构成。
(2)有限制地使用goto语句。鉴于goto语句的存在使程序的静态
书写顺序与动态执行顺序十分不一致,导致程序难读难理解,容易存
在潜在的错误,难于证明正确性,有人主张程序中禁止使用goto语句,
但有人则认为goto语句是一种有效设施,不应全盘否定而完全禁止使
用。结构程序设计并不在于是否使用goto语句,因此作为一种折衷,
允许在程序中有限制地使用goto语句。
(3)往往藉助于体现结构化程序设计思想的所谓结构化程序设计语
言来书写结构化程
序,并采用一定的书写格式以提高程序结构的清晰性,增进程序
的易读性。
(4)它强调了程序设计过程中人的思维方式与规律,是一种自顶向
下的程序设计策略,它通过一组规则、规律与特有的风格对程序设计
细分和组织。对于小规模程序设计,它与逐步精化的设计策略相联系,
即采用自顶向下、逐步求精的方法对其进行分析和设计;对于大规模
程序设计,它则与模块化程序设计策略相结合,即将一个大规模的问
题划分为几个模块,每一个模块完成一定的功能。
5、程序的最基本控制结构有几种?分别叫什么?如何组成千变万
化的程序?
参考答案:
最基本的程序控制有以下三种:顺序执行、分支控制和循环控制。
(3分)
这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的
程序。(2分)
四、写出程序的运行结果
1、写出程序运行结果。
#include
main ( )
{ int a=3, b=7;
printf ("%dn", ++a + ++b); /* ① */
printf ("%dn", b%a); /* ② */
}
程序运行结果是:
①12 ②0
2、阅读下面的程序并回答问题。
#include
main( )
{ int a,b,m,n;
scanf ( ”%d%d", &a, &b);
m = n = 1;
if (a>0) m = m+n;
if (a
else if(a==b) n = 5;
else n = m+n;
printf ( "m=%d n=%dn", m, n );
}
为了输出 n=4,变量a和b应具备条件。
3、阅读程序,写出程序的输出结果。
#include
main ( )
{ char i, j;
for ( i=’0’, j=’9’; i<="" bdsfid="161" i++,="" j--="" p="">
printf("%c%c", i, j);
printf("n");
}
运行结果是:
4、写出程序运行结果。
#include
main ( )
{ int a, b, c;
a=1; b=2; c=3;
if (a>b)
if (a>c)
printf("%d", a);
else printf ("%d", b);
printf ("%dn", c);
}
运行结果是:
3
5、阅读程序写出程序的输出结果。
#include
main( )
{ int i=0,j=0,k=0,m;
for ( m=0;m<4;m++ )
switch ( m )
{ case 0: i=m++;
case 1: j=m++;
case 2: k=m++;
case 3: m++;
}
printf ("n%d,%d,%d,%d",i,j,k,m);
}
运行结果是:
0,1,2,5
6. #include
void main( )
{ int a=1,b=4,c=2;
a=(a+b)/c;
printf(“%d n”,--a);
}
运行结果:1
7.
void main ( )
{ char c1=67; /*‘A’的ASCII码值为65 */ if (‘A’ <=c1 &&
c1<=’Z’)
printf(“%d,%c”,c1,c1+1);
else printf(“%c”,c1); }
运行结果:67,D
8.
viod main ( )
{ int a=0, n=5;
for ( ; ; )
{ a++; n--;
printf(“%d,”,a);
a=n;
if (n==0) break;
}
printf(“%d”,a);
}
运行结果:1,5,4,3,2,0
9. main()
{ int k=10; char c=’b’;
do
swith(c++)
{ case ‘a’:k++;
case ‘b’:k--;
case ‘c’:k+=3;break;
case ‘d’:k=k%4;
}
while(c!=’c’);
printf(“%dn”,k );
}
运行结果:12
10.#include
main()
{ int x = 1,a = 0,b = 0; switch(x)
{ case 0; b + +;
case 1; a + +;
case 2; a + +;b + +;
}
printf (“a = % d ,b = % d n”,a,b);
}
运行结果:
a=1,b=1
11、写出程序的运行结果。
#include
main( )
{ int a=2, b=-1, c=2;
if ( a
if ( b<0 ) c=0;
else c+=1;
printf ("%dn", c);
}
运行结果是:
2
12、阅读程序写出运行结果。
#include
main ( )
{ char ch;
ch = getchar ( );
switch ( ch )
{ case 65:
printf (”%c”, ’A’);
case 66:
printf (”%c”, ’B’);
default:
printf (”%sn”, ”other”);
}
}
如程序可以正常运行,当从键盘输入字母A时,输出结果为。运
行结果是:
ABother
13、写出程序运行结果。
main ()
{ int x=23, y=10;
do
{printf(”%d %d”, x--,++y);}
while ( ! x );
}
该程序的执行结果是______。
23 11
14、写出程序运行结果。
#include
main( )
{ int k=1, j=0;
while ( k+j <= 10 )
if ( k >j ) j=j+2;
else k = k+2;
printf ( "%d %dn", k, j );
}
该程序的执行结果是______和______。
5 6
15、阅读程序,写出程序的输出结果。
main ( )
{ int a=0, n=5;
for ( ; ; )
{ a++; n--;
printf(“%d,”,a);
a=n;
if (n==0) break;
}
printf(“%d”,a);
}
运行结果:____________________
1, 5, 4, 3, 2, 0
16、阅读下面的程序并回答问题。
#include
main ( )
{ int a=13, b=-7;
printf ("%dn", a/b); /* ①*/
printf ("%dn", b/a*a); /* ②*/ }
程序运行结果是:______和______。
①1 ②0
17、阅读程序,写出程序的输出结果。
#include
main ( )
{ int i=1, j=2;
if ( i != j )
printf("YESn");
else
printf("NOn");
}
运行结果是:______。
YES
18、阅读程序,写出程序的输出结果。
main ( )
{ int a=0;
for ( a=0; a<3 ; a++) ;
printf("%dn", a);
}
运行结果:______。
3
19、写出程序运行结果。(2分)
#include
main( )
{ char c=’A’;
if ( ’0’<= c <=’9’)
printf (”YES”);
else
printf (”NO”);
}
该程序的执行结果是______。
20、写出程序运行结果。(4分)
#include
main ( )
{ int i,j;
for ( i=0, j=10; i<="">
printf ("%dn", i); /* ① */
printf ("%dn", j); /* ② */
}
该程序的执行结果是______和______。
8 6
21、阅读程序,写出程序的输出结果。(4分)
main ( )
{ int x=10, y=10, i;
for ( i=0; x>8; y=++i )
printf (”%d %d ”, x--, y);
}
运行结果:
10 10 9 1
22、以下程序的输出结果是_____ 。
void main()
{
int x=17,y=26;
printf("%d n",y/=(x%6));
}
5
五、程序设计
1、编写一程序,从键盘输入10个实数,计算并输出这10个数
的平均值。
#include
main( )
{ int i;
double x, sum=0;
for (i=1; x<=10; x++)
{ scanf (“%f”, %x)
sum += x;
}
printf("%fn", sum/10 ) ;
}
2、编写程序,计算1!+2!+3!+…….+n!的值,其中n的
值由键盘输入。
#include
{int i,j,n;
double sum=0,fact=1;
printf(“Please input n:”);
scanf(“%d”,&n);
for (i=1;1<=n;i++) {
fact=1;
for (j=1;j<=k;j++)
fact=fact*j;
sum=sum+fact;
}
printf(“num=%.2lf”,sum);
}
3、从键盘输入h值,输出h行用*号组成等腰三角形。例:输入
h=4,输出的图形如下:
*
* * *
* * * * *
* * * * * * *
#include
main ( )
{ int h, k, j;
scanf (”%d”, &h);
for ( k=1; k<=h; k++) /* 控制打印h 行*/
{ for ( j=1; j<=h-k; j++) /* 打印空格*/
printf (””);
for ( j=1; j<=2*k-1; j++) /* 打印* 号*/
printf (”*”);
printf(”n”) ;
}
}
4、从键盘输入h值,输出h行用*号组成的菱形。例:输入h=4,
输出的图形如下:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
#include
main ( )
{ int h, k, j, m, n ;
printf ("Enter H:");
scanf ("%d", &h);
for (j=1; j<=2*h-1; j++) /* 行控制*/
{ if (j<=h) { m=h-j; n=2*j-1; }
else { m=j-h; n=4*h-1-2*j; }
for (k=1; k<=m; k++) /* 打印空格*/
printf (" ");
for (k=1; k<=n; k++) /* 打印* */
printf ("*");
printf("n");
}
}
5、编写程序。从键盘输入h值,输出h行用 * 号组成的平行四边
形。例:输入 h=4,输出的图形如下:
* * * *
* * * *
* * * *
* * * *
#include
main ( )
{ int h, k, j;
scanf (”%d”, &h);
for ( k=1; k<=h; k++) /* 控制打印 h 行 */
{ for ( j=1; j<=h-k; j++) /* 打印空格 */
printf (””);
for ( j=1; j<=k; j++) /* 打印 * 号 */
printf (”*”);
printf(”n”) ;
}
}
6、输入两个数a和b,交换它们的值后输出a和b的值。
void main()
{
int a,b,t;
scanf("%d%d",&a,&b);
printf("%d,%dn",a,b);
t=a;
a=b;
b=t;
printf("%d,%d",a,b); }
上一页下一页
版权声明:本文标题:《程序设计基础》作业二答案(12秋) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735697301a1682854.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论