C语言第三章练习(答案)

2022-07-15 11:15:22   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《C语言第三章练习(答案)》,欢迎阅读!
练习,答案,语言,第三章
C语言第三章练习

班级 学号 姓名 .

一、根据题目要求填空:(横线上填一行程序,方格中填一段程序) 1 若整数ab的因子,则交换a,b

if( b%a == 0 ) 注意这里必须为双等于号

int c;c=a;a=b;b=c;} 注意此题并未给出中间变量.需要自己定义

2 若浮点数f绝对值大于5,则a=4,否则a=f

a= f*f>25 4 f ; 送分题,对绝对值范围可多种解法但必须使用条件运算符

3 若平面坐标系中点P(x,y)在坐标轴上但不在原点上,则输出OK否则输出ERR printf( x *y ==0 && x+y!=0 ? "OK":"ERR"); 或者 printf( "%s", x *y ==0 && x+y!=0 ? "OK":"ERR");

4 若平面坐标系中点P(x,y)落在以原点为圆心半径为1的园内,则将计数器c增加1 if( x*x+y*y<=1 ) c++;

5 将平面坐标系中x=1,x=2,x=3....y=1,y=2,y=3...这些直线画出来,形成一个

在第一象限是方格,第二象限和第四象限是直线的图.要求:输入点P(x,y)坐标,P在直线上则变量lines加一,P在格子交叉点上,再将变量points加一:(提示.做本题前先翻阅课本最后的数学函数表) scanf("%f%f",&x,&y);

if( (floor(x)==x || floor(y)==y ) && ( x>0 || y>0) ) lines++;

if( (floor(x)==x && floor(y)==y ) && ( x>0 || y>0) ) points++;

注意这里也可以使用类型转换运算 ((int)x==x || (int)y==y) && ... 6 输入三个整数,判断这三个整数能否构成三角形: scanf("%f%f%f",&x,&y,&z);

if( (x>0 && y>0 && z>0) && (x+y>z && x+z>y && y+z> x) ) printf("OK");

else 注意:x,y,z为正数条件不可缺少 printf("ERR");

7 ab两个整数(a>b)通过四则运算可以得出24,则输出这个表达式

if( a+b==24 )

printf( "%d + %d =24",a,b ); if( a-b==24 )

printf( "%d - %d =24",a,b ); if(a*b==24 )

printf( "%d * %d =24",a,b );


if( a/b==24 ) 评论:这题就是笨功夫 printf( "%d / %d =24",a,b );

8 根据输入的字符判断是否为元音字母.若为元音字母则输出这个字符的大写形式否则

输出这个字符的小写.用两种方法编写程序.

①使用switch(提示:输入字符并不确定是大写还是小写) char ch=getchar(); swtich(ch) {

case 'A':

case 'a': printf("A"); break; case 'E':

case 'e': printf("E");break; case 'I':

case 'i': printf("I");break;

case 'O':

case 'o': printf("O");break; case 'U':

case 'u': printf("U");break;

default: if(ch>='A' && ch<='Z') ch+=32; putchar(ch);

}

②使用if语句(提示:灵活使用tolowertoupper函数)

char ch=getchar();(评论:这里先赋值再比较,节省了后面每个都需要toupper的繁琐) if( (ch=toupper(ch))=='A' || ch=='E' || ch=='I' || ch=='O' || ch=='U' ) printf( "%c",ch ); else

printf( "%c",tolower(ch) );

二、编写程序:

1 在平面坐标系中有直线Ax+By+C=0,和平面上点p1(x1,y1)P2(x2,y2)。输出最

靠近直线的点的坐标。

#include "math.h" void main(){

float A,B,C,x1,x2,y1,y2,d1,d2;

scanf("%f%f%f%f%f%f%f",&A,&B,&C,&x1,&y1,&x2,&y2); d1=fabs(A*x1+B*y1+C)/sqrt(A*A+B*B); d2=fabs(A*x2+B*y2+C)/sqrt(A*A+B*B);

printf("(%f,%f)\n",d1}

2 输入年月日,输出这天是当年第几天。(当心闰年)(本参考答案使用了switch的直行语法现象)

void main(){

int y,m,d,t=0;

scanf("%d%d%d",&y,&m,&d); switch(m){ case 12: t+=30; case 11: case 10: case 9:

t+=31; t+=30; t+=31;



case 7: t+=30; case 6: t+=31; case 5: t+=30; case 4: t+=31; case 3: t+=28;

if(y%400==0 || (y%4==0&&y%100!=0) t++;

case 2: t+=31; case 1: t+=d;}

case 8: t+=31; printf("%d",t);}




本文来源:https://www.wddqxz.cn/a6ba10271b37f111f18583d049649b6649d70925.html

相关推荐