《C语言程序设计习题与上机指南》答案(5)

2019-08-30 16:32

#include

voidmain()

{floata,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c); if(a+b>c&&b+c>a&&c+a>b) {s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%.2f\\n”,area);} else

printf(“它不是一个三角形”); }

4.从键盘输入一个字符,判断其是否是大写字母,如果是大写字母,则转换为小写字母,否则不转换。

#include

voidmain() {charc; c=getchar();

if(c>=?A?&&c<=?Z?) c=c+32;

printf(“%c”,c); }

5.从键盘输入一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。其中‘A’对应的是90分(含90分)以上的成绩,‘B’对应的是80~89分的成绩,‘C’对应的是70~79的成绩分,‘D’对应的是60~69分的成绩,‘E’对应的是小于60分的成绩。如果输入的数值小于0或大于100要有“输入成绩错误”的信息显示。 #include voidmain() {intscore,c;

scanf(“%d”,&score); c=score/10; switch(c) {

case0: case1: case2: case3: case4:

case5:printf(“E”);break; case6:printf(“D”);break; case7:printf(“C”);break; case8:printf(“B”);break; case9:

case10:printf(“A”);break;

default:printf(“error”); } }

6、编写程序,求1+2+3+?+200。 #include voidmain() {

inti,s; i=1; s=1;

for(i=1;i<=200;i++) s=s+i;

printf(\+?+200=%d\\n\}

运行结果:20101

7、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和。 #include voidmain() {inti,temp;

floatf2=2,f1=1,sum=0; for(i=1;i<=20;i++) {sum=sum+f2/f1; temp=f2; f2=f2+f1; f1=temp; }

printf(\}

运行结果:32.660259 8、求1!+2!+3!+4!+…+20! #include voidmain() {inti;

floatsum=0,f=1; for(i=1;i<=20;i++) {f=f*i;

sum=sum+f; }

printf(\}

运行结果:2.561327e+018

9、用牛顿迭代法求方程4x3-8x2+6x-12=0在1.5附近的根。 #include #include voidmain()

{floatx=1.5,x0,y,f1;

do {x0=x;

y=((4*x0-8)*x0+6)*x0-12;

f1=(12*x0-16)*x0+6;(f1是导数) x=x0-y/f1; }

while(fabs(x-x0)>=1e-6); printf(\运行结果:x=2.00

10、编写程序,打印出以下图案。

* *** ***** ******* ***** *** * #include voidmain() {inti,j,k;

for(i=1;i<=4;i++)/*输出上面四行*号*/

{for(j=1;j<=4-i;j++)/*输出*号前面的空格*/ printf(\

for(k=1;k<=2*i-1;k++)

printf(\输出每行*号*/

printf(\输出每行*号后换行*/ }

for(i=1;i<=3;i++)/*输出下面三行*号*/ {for(j=1;j<=i;j++)

printf(\输出*号前面的空格*/ for(k=1;k<=5-2*(i-1);k++) printf(\输出每行*号*/

printf(\输出每行*号后换行*/ } }

第四章数组

一.选择题

1.以下能正确定义一维数组的选项是(B)。

A)inta[5]={0,1,2,3,4,5}; B)chara[]={0,1,2,3,4,5}; C)chara={'A','B','C'}; D)inta[5]=\

2.已有定义intx[3][2];以下能正确引用数组元素的选项是(C)。

A)x[2][2] B)x[1][2]C)x[2][1] D)x[0][2]

3.有以下语句:intx;charc[10];,则正确的输入语句是(D)。 A)scanf(\B)scanf(\

C)scanf(\ D)scanf(\4.以下叙述中错误的是(C)。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出\下标越界\的出错信息(VC:可以运行但会显示:遇到问题需要关闭)

D)可以通过赋初值的方式确定数组元素的个数

5.已有定义:chara[]=\,以下叙述中正确的是(C)。

A)数组a和b的长度相同B)a数组长度小于b数组长度 C)a数组长度大于b数组长度D)上述说法都不对 6.以下能正确定义一维数组的选项是(B)。

A)intnum[]; B)#defineN100intnum[N]; C)intnum[0..100]; D)intN=100;intnum[N]; 7.有以下程序

#include voidmain()

{chara[]={'a','b','c','d','e','f','g','h','\\0'}; inti,j;

i=sizeof(a);j=strlen(a); printf(\}

程序运行后的输出结果是(D)。 A)9,9B)8,9C)1,8D)9,8

8.下面程序的运行结果是(B)。

#include voidmain()

{charch[7]={\inti,s=0;

for(i=0;ch[i]>='0'&&ch[i]<'9';i++) s=10*s+ch[i]-'0'; printf(\}

A)12ba56 B)65C)6 D)62 9.有以下程序

#include voidmain() {

intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; inti,s=0;

for(i=0;i<4;i++)s+=aa[i][1];/*求每行第1列的数的和*/ printf(\}

程序运行后的输出结果是(B)。 A)11 B)19 C)13 D)20

10.以下不能正确定义二维数组的选项是(A)。. A)inta[2][]={{1,2},{3,4}}; B)inta[][2]={1,2,3,4};

C)inta[2][2]={{1},{2}}; D)inta[2][2]={{1},2,3}; 二.填空题

1.C语言规定数组名代表数组的首地址。

2.C语言中二维数组中元素排列的顺序是:按行存放。 3.字符数组中的一个元素存放一个字符。

4.C语言规定了“字符串结束标志”,以字?\\0?来表示。

5.用\格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。 6.若有以下定义:

floata[10];

则a数组元素下标的上限是9,下限是0。 7.下列程序运行结果是6。

#include #include voidmain()

{charstr[12]={'s','t','r','i','n','g'}; printf(\}

8.以下程序的功能是:使一个字符串按逆序存放,请填空。

#include #include voidmain()

{charm;charstr[]=\?\\ for(i=0,j=strlen(str);i

str[i]=str[j-1];/*str[i]与str[j-1]交换数据*/ str[j-1]=m; }

printf(\}

9.写出下面程序的运行结果62。

#include voidmain() {

inta[2][3]={40,25,-8,6,62,39}; inti,j,max; max=a[0][0]; for(i=0;i<2;i++) for(j=0;j<3;j++) if(a[i][j]>max) max=a[i][j];

printf(\} 10.下面程序的功能是,将字符数组S2中的全部字符拷贝到字符数组S1中。不用strcpy函数。请填空

#include #include


《C语言程序设计习题与上机指南》答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:矩阵练习题

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

马上注册会员

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