最简单的C程序设计——顺序程序设计
P037 3.1 把华氏温度转化为摄氏表示法.
#include float F_to_C(float input_fah) //代表华转摄,input_fah是局部变量. { float output_cen; //这里也是局部变量. output_cen=(5.0/9)*(input_fah-32); //函数的功能体. return output_cen; //返回值,注意,返回值的数据类型应该和函数一致. } float C_to_F(float input_cen) { float output_fah; output_fah=(9.0/5)*input_cen+32; //转换过程. return output_fah; } int main() { int choice; float input_fah,input_cen,output_fah,output_cen; //局部变量的调用及参数传递. printf(\"F_to_C press <1> and C_to_F press <2> !\\n\"); scanf(\"%d\",&choice); if(choice==1) { printf(\"Please input fahrenheit :\"); scanf(\"%f\",&input_fah); //这个是主函数定义的变量,虽然和调用函数同名. output_cen=F_to_C(input_fah); printf(\"The 华氏 is %d , 摄氏 is %d .\",(int)input_fah,(int)output_cen); } if(choice==2) { printf(\"Please input centigrade :\"); scanf(\"%f\",&input_cen); output_fah=C_to_F(input_cen); printf(\"The Centigrade is %d is %d .\",(int)input_cen,(int)output_fah); } return 0; } P038 3.2 计算存款利息(关于精度问题). #include , and the Fahrenheit int main() { float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; p1=p0*(1+r1); p2=p0*(1+r2); p3=p0*(1+r3/2)*(1+r3/2); printf(\"p1=%f\\np2=%f\\np3=%f\\n\",p1,p2,p3); return 0; } P055 3.3 大写转换成小写 #include int main() //小写范围是97-122,大写范围是65-90,大写加上即得小写.26个字母. { char c1, c2; c1='A'; c2=c1+32; printf(\"%c %d\",c2,c2); return 0; } P059 3.4 给出三角形边长,算出面积. #include #include int main() { double a=3.67, b=5.43, c=6.21, s, area; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(\"area is %f\\n\",area); //默认可以组成三角形. return 0; } P065 3.5 求一无二次等式的根,默认两个不同根. #include #include int main() { double a,b,c,disc,x1,x2,p,q; scanf(\"%lf %lf %lf\",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(\"x1=%7.2f\\nx2=%7.2f\",x1,x2); return 0; } P071 3.6 用%f输出实数,只能得到六位小数. #include #include int main() { double a=1.0; //1是整型,1.0是浮点型,默认是double.可以是float. printf(\"%.9f\\n\",a/3); return 0; } P072 3.7 float型数据的有效位数. #include #include int main() { float a; //输出的结果是.333252,float精度6位,所以第七位后不可信. a=10000/3.0; printf(\"%f\\n\",a); return 0; } P078 3.8 使用putchar函数输出. #include #include int main() { char a='B',b='O',c='Y'; putchar(a); putchar(b); putchar(c); putchar('\\n'); putchar(101); //101是A的ASCII代码的缩写,因为此函数只能输出字符. putchar(66); return 0; } P079 3.9 使用getchar得到字符. #include #include int main() { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); //这也是基本回显的C程序代码. putchar('\\n'); return 0; } P081 3.10 getchar得到大写,putchar输出小写. #include #include int main() { char a,b; a=getchar(); b=a+32; putchar(b); putchar('\\n'); return 0; } P082 0.1 国民生产总值10年后的增长倍数. #include #include int main() { double p,r=0.09,n=10; p=pow((1+r),n); //这是数学函数, pow(x,y)计算x的y次方. printf(\"P is %lf when 10 years later .\\n\",p); return 0; //结果是0.36倍. } P082 0.2 求各种存款的利息数. #include #include int main() { double p,r,n; //年份和当年利率均有给出. p=1000*(1+5*0.0585); printf(\"5 years is %lf !\\n\",p); //1292.5,这是全五年期.lf输出的是double型. p=(1000*(1+2*0.0468)); p=(p*(1+3*0.0540)); printf(\"5 years is %lf !\\n\",p); //1270.76,这是先二年,再三年的. p=(1000*(1+3*0.0540)); p=(p*(1+2*0.0468)); printf(\"5 years is %lf !\\n\",p); //1270.76,这是先三年,再二年的.证明,是一样的. p=1000*pow((1+0.0414),5); printf(\"5 years is %lf !\\n\",p); //1224.86,这难道说是,相对的存死期越久越值钱. p=1000*pow((1+0.072/4),4*5); printf(\"5 years is %lf !\\n\",p); //1428.74. return 0; } P083 0.3 求几个月要以还贷. #include #include int main() { double m,r=0.01,d=300000,p=6000; m=(log10(p/(p-d*r)))/(log10(1+r)); printf(\"%.1lf\",m); //按要求只留一个小数,所以要写%.1lf. return 0; } P084 0.6 字母密码转换,调用函数及临界处理. #include char printcode(char f) { if(((int)f>86&&(int)f<91)||((int)f>118&&(int)f<123)) { return(f-26+4); //因为putchar会自动返回,所以改成return,因为这是在函数中,调用需要返回值. } else { return(f+4); } } int main() { char a,b,c,d,e; printf(\"Please input :\\n\"); a=getchar(); b=getchar(); c=getchar(); d=getchar(); e=getchar(); //临界问题. printf(\"%c%c%c%c%c\",printcode(a),printcode(b),printcode(c),printcode(d),printcode(e)); putchar(putcharcode(a)); putchar(putcharcode(b)); putchar(putcharcode(c)); putchar(putcharcode(d)); putchar(putcharcode(e)); return 0; //注意理解自定义函数的定义,使用,及形参实参的流向. //p84的是计算问题,自己看着办,最后要求小数点后两位,用的是%.2lf 来实现,因为没有要求实部,所以m.n格式中m不写. //p84的是定义问题,第一问,两者都行,但是定义字母时,scanf要写%c来获取,而定义数值时则要用%d来获取. // 第二问,putchar貌似只能输出字符,所以用printf.putchar本身就是字符输出函数啦,字符,有木有字符啊!!尽管它的参数可以是putchar('\\101'),效果是输出字符A啊. // 第三问,出现\"任何\"及\"无条件\那么答案明显是\"否\".可以转换,但要在某此条件下,例如输出和读入时,%c是字母,而%d是数值,看着办. } 因篇幅问题不能全部显示,请点此查看更多更全内容