#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
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
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
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
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
{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
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
{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
{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
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
{charstr[12]={'s','t','r','i','n','g'}; printf(\}
8.以下程序的功能是:使一个字符串按逆序存放,请填空。
#include
{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 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