【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《C语言第三章练习(答案)》,欢迎阅读!
C语言第三章练习
班级 学号 姓名 .
一、根据题目要求填空:(横线上填一行程序,方格中填一段程序) 1、 若整数a是b的因子,则交换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语句(提示:灵活使用tolower和toupper函数)
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