《C语言》答案(2)

2019-08-17 12:50

【习题4】

以下的编程题目要求首先画出程序的传统流程图或N-S流程图,再编写程序代码。上机实验时再输入到计算机中进行调试,并将调试过程中出现的问题和测试情况记录下来。

(流程图请读者自己参考课本自己画,略)

4.1 编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。

提示:x代表输入的整数,if(x%2==0) printf(\printf(\

4.2 编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。

提示:x,y代表平面坐标,if(x*x+y*y==1) printf(\printf(\

4.3 编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。 A: 90-100 B: 80-89 C: 70-79 D: 60-69 E: <60

提示:char grade;

if(grade=='A') printf(\

else if(grade=='B') printf(\ ....

4.4 写出下面程序的运行结果: #include main()

{

int a=-1,b=1,c=5; switch(a>0){

case 1:switch(b-2<0){

case 1:printf(\ case 2:printf(\

}

case 0:switch(c= =5){

case 0:printf(\ case 1:printf(\ default:printf(\

}

default:printf(\

} }

运行结果:&#@

4.5 将以下语句改写成switch语句。 if((t>0)&&(t<=10))

if((t>=3)&&(t<=6)) x=2;

5

else if((t>1)||(t>8)) x=3; else x=1; else x=0;

提示:int t; if(t<=0||t>10) c=0; else c=t;

switch(t)

{ case 0: x=0;break; case 1: case 2: x=3;

case 3:case 4:case 5: case 6: x=2; case 7:case 8: case 9: x=3; case 10: x=2; }

4.7 编程实现一个具有简单四则运算功能的计算器。

提示:参照例4.18,随机产生3个数,其中一个数用来判断是哪种运算。 4.8 编程实现,输入一行字符,将其中的数字字符对应的整数值加起来并输出结果。如:

a45b8&*3 则是4+5+8+3,结果为20。

提示:char c; int sum=0;

while((c=getchar())!='\\n') if(c>='0'&&c<='9')

sum=sum+c-'0';

4.9 编程实现,求?n!的值。

120提示:先计算n!,再在计算阶乘的外面套上一层循环。注意:20!是一个很大的值,float s=1;int i;例如:计算6!:

for(i=1;i<=6;i++) s=s*i;

4.10 编程实现,找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1,2,3,

所谓“完数”是指一个数如果恰好等于它的因子之和,因子是指能够整除该数的数。

提示:先判断数是否为完数,如果是再考虑输出因子。以6为例输出因子: for(i=1;i<6;i++) if(6%i==0) printf(\4.11 编程实现,计算序列的前20项之和,

23581321 ,,,,,,...

1235813提示:这是一个累加式,每项是一个分式,用a、b分别表示分子、分母。注意:如果a、b都是整数,则是整除。float sum=0,a=2,b=1; int i;

for(i-1;i<=20;i++){sum=sum+a/b;a=a+b;b=a-b;} 4.12 编程实现,求Sn=a+aa+aaa+...+aa

之值,其中a是一个数字。如:

2+22+222+2222+22222(此时n=5),n,a由键盘输入。

提示:这是一个累加式,后1项可以由前一项表示,譬如:第2项可以由第1项表示:

6

第1项 t=a; 第2项:t=t*10+a;

4.13 编程实现,把从键盘输入的金额数(以圆为单位)按人民币面额划分,

然后显示支付该金额的各种面额人民币的数量。

提示:譬如:123.58元可以表示100元:1张;20元:1张;2元:1张;1元:1张;5角:1张;5分:1枚;2分:1枚;1分:1枚。

为了简单可以只完成整数部分转换,即输入的金额数为整数。

4.14 编程实现,使用循环结构打印以下图案。 * * * * * * * * * * * * * * * * * * * * * * * * *

提示:输出时,本图案要按向上三角形和向下三角形进行输出。每行输出中包括空格输出,‘*’号输出。输出空格和‘*’号个数要与行循环控制变量关联起来。

4.15 编程实现,以菜单方式实现猜数游戏系统。(功能自己设定)

提示:模仿例4.14和例4.18完成。功能可以包括猜数范围,人数等设置。 4.16 编程实现,以菜单方式实现四则运算辅助教学系统。

提示:随机产生两个操作数和运算符+、-、*、/,由使用者输入一个数,判断计算结果与输入的数是否相等,如果相等,表示正确,否则是错误的。

7

【习题5】

一、 填空题

5.1 若有定义int a[3][5];则排列在数组中的第9个元素是( a[1][3] )。 5.2 strlen(\的值是( 12 )。 5.3 C语言中字符串结束的标志是( '\\0' )。

5.4 写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是( float s[6]={0}; )。

5.5 strcmp(\的值是( 32 或>0 )。 二、 选择题

5.6 若有int s[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是( D ) A.1 B.2 C.3 D.4 5.7 对数组的描述正确的是( B )。

A.数组一旦定义其大小是固定的,但数组元素的类型可以不同。 B.数组一旦定义其大小是固定的,但数组元素的类型必须相同。 C.数组一旦定义其大小是可变的,但数组元素的类型可以不同。 D.数组一旦定义其大小是可变的,但数组元素的类型必须相同。 5.8 对字符串\进行完整赋值的操作是( B )。

A.char s[3] = {'B','o','y'}; B. char s[] = \ C.char s[3] = {\ D.char s[3]; s=\

5.9在c语言中引用数组元素时,其数组下标的数据类型允许是( C )。 A.整型常量 B.整型表达式

C.整型常量或整型表达式 D.任何类型的表达式 5.10对以下说明语句的正确理解是( B )。 int a[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确 三、看程序写结果 5.11 main()

{int a[3][3] = {{1,0,2}, {2,2},{0,2}}, c[3][3],i,j; for(i=0; i<3; i++) {

for(j=0; j<3; j++) {

c[i][j] = a[a[i][j]][a[j][i]]; printf(\} }

printf(\}

运行结果为: 2 2 0 0 0 2 2 0 1

5.12当运行以下程序时,从键盘输入:Ah2MA A3ha,请写出输出结果。

8

main()

{ char s[80], c='a'; int i=0;

scanf(\ while(s[i++]!='\\0')

if(s[i] == c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32; puts(s); }

运行结果为:AH2Ma 四、编程题

5.13 用数组方法定义一个矩阵,求其转置矩阵。

提示:已知a[3][2],转置后的结果存放在b[2][3]; 则b[j][i]=a[i][j]; 5.15 从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的

最大元素,并输出其行、列下标。

提示:已知a[3][3],max,row,col分别用来存放一列的最大值,行下标和列下标。

5.15利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1 ∶ ∶

提示:定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。根据a[i][j]=a[i-1][j]+a[i-1][j-1]求出其它元素的值。

5.16 从键盘上输入一串字符(长度小于50个字符),找出其中最前面的一个X

和最后面的一个X之间的子串,并输出子串的长度。

提示:定义一个长度为81的字符数组,从左边查找第一字符'X'的下标,从右边查找第一个字符'X'的下标。 5.17 矩阵A是一个3×3的矩阵,B是一个3×2的矩阵,编程求C=A?B。

提示:定义一个3X2的数组c[3][2],该数组的元素值由A数组的一行元素分别与B的一列元素相乘得到。譬如:c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]。 5.18 把30个学生的学号和两门课程的成绩输入到一个二维数组中,求出的每个

学生的两门课程的总成绩也放于此数组中,请按学生总分的高低打印出成绩单(包括学号、两门课程成绩和总分)。

提示:定义一个30行4列的数组。为了先快速测试算法是否正确?可以定义一个3行4列的数组,并且通过赋初始值,减少调试程序时反复输入数据的麻烦,算法调试成功后在加上输入数据部分。实现从高到低打印出成绩可以通过排序(降序);也可以通过另外定义1个一维数组作为索引,再通过索引打印成

9


《C语言》答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:分类修改病句

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: