本节介绍c语言的编程实例。

    (1)求方程ax^2+bx+0的解:

方程有解有以下几种可能:

1.b^2-4ac=0,方程有两个相等实根。

2.b^2-4ac>0,方程有两个不等实根。

3.b^2-4ac<0,方程有两个共轭复根。

程序中需要判断b^2-4ac是否等于0,由于它是实数,在存储时会有一些微笑的误差,因此不能直接进行(b*b-4ac)==0的判断。因为这样可能会出现本来是0的量,由于上述误差被判断不等于0而导致错误的结果。所以采取的办法是判别其绝对值是否小于一个很小的数(例如10^-6),如果小于此数,就认为它等于0.

 #include<stdio.h>
#include<math.h> int main(){
double a,b,c,disc,x1,x2,realpart,imagpart;
scanf("%lf,%lf,%lf",&a,&b,&c);//输入三个数据时用逗号作为分隔符
disc=b*b-*a*c;
if(fabs(disc)<=1e-)
printf("has two equal roots:%8.4lf\n",-b/(*a));
else if(disc>1e-){
x1=(-b+sqrt(disc))/(*a);
x2=(-b+sqrt(disc))/(*a);
printf("has distinct real roots:%8.4lf\n",-b/(*a));
}
else{
realpart=-b/(*a);
imagpart=sqrt(-disc)/(*a);
printf("has complex roots:\n");
printf("%8.4lf+%8.4lf i \n",realpart,imagpart);
printf("%8.4lf+%8.4lf i \n",realpart,imagpart);
}
return ;
}

      (2)从键盘输入年号和月号,试计算改年该月共有几天:

 #include<stdio.h>

 int main(){
int year,month,days=;
printf("please input year and month:(use \',\' to distinct)\n");
scanf("%d,%d",&year,&month); switch(month){
case :
case :
case :
case :
case :
case :
case :days=;break;
case :
case :
case :
case :days=;break;
case :
if(year%==&&year%!=||year%==)
days=;
else
days=;
break;
default:
printf("Data error!");
}
printf("%d年%d月有%d天\n",year,month,days);
return ;
}

    (3)输入今天的日期y(年),m(月),d(日),输出明天的日期:

 #include<stdio.h>

 //验证输入值是否正确的函数
4 int valid(int y,int m,int d){
if(y<=|m<|m>|d>|d<){
printf("Input errors!");
return ;
}
else
return ;
} //进行运算的过程函数,输出结果的算法
void outTom(int y, int m,int d){
d++;
switch(d){
case :{
d=;
m++;
if(m==){
m=;y++;
}
break;
}
case :{
switch(m){
case :
case :
case :
case :
case :
case :
case :
{
break;
}
case :
case :
case :
case :
{
d=;
m++;
break;
}
default:
printf("This month has no such day!"); }
break;
}
case :{
if((m==)&&((y%==)||(y&==&&y%!=))){
m++;
d=;
}
break;
}
case :{
if(!((y%==)||(y&==&&y%!=))){
m++;
d=;
}
break;
}
default: break; }
printf("Tomorrow is %d/%d/%d",y,m,d);
} int main(){
//第一步完成数据的输入
int y,m,d;
printf("please input the date today:year,moth,day,using \',\' to distinct!\n");
scanf("%d,%d,%d",&y,&m,&d);
//完成数据的验证
if((valid(y,m,d))==){
return ;
}
printf("The date today is %d/%d/%d\n",y,m,d);
//输出结果
outTom(y,m,d);
return ;
}

(4)用两种方法求平方根:

1.用迭代法求数a的平方根Xn=1/2*(Xn-1)+a/Xn-1),取a/2作为迭代的初值,迭代结束条件取|Xn-Xn-1|<=10e-5:

 #include<stdio.h>
#include<math.h> int main(){
float a,x0,x1;
scanf("%f",&a);
x1=a/;
do{
x0=x1;
x1=(x0+a/x0)/;
}while(fabs(x1-x0)>1e-);
printf("a=%f,squart(a)=%f\n",a,x1);
return ;
}

2.用二分法求数a的平方根:

 #include<stdio.h>
#include<math.h> float find(float low,float high,float a){
float middle=(low+high)/;
if(middle*middle<fabs(a))
return middle;
else if(middle*middle>a)
high=middle;
else if(middle*middle<a)
low=middle;
float result=find(low,high,a);
return result;
} float sqt(float in){
float low,high;
if(in<){
low=;
high=;
}
else{
for(int i=;i<=in;i++){
if((float)i*i==in)
return (float)i;
else if(i*i<in&&(i+)*(i+)>in){
low=(float)i;
high=(float)(i+);
}
}
}
return find(low,high,in);
} int main(){
float a,result;
printf("please input a float number:\n");
scanf("%f",&a);
if(a<){
printf("Input error!");
return ;}
result=sqt(a);
printf("Squrt(%f)=%f",a,result);
return ;
}

    (5)利用公式求sinX的近似值:

sinx=x-x^3/3!+x^5/5!-x^7/7!+.....+(-1)^(2n+1)/(2n+1)!

这里x是弧度。这是一个级数求和问题。

 #include<stdio.h>
#include<math.h> int main(){
int k,i,n;//这里n是控制精确度的,n越大精确度越高。
double s,a,b,x;
scanf("%d%lf",&n,&x);
s=;
x=x*3.141593/;//将输入的角度转化为弧度
for(int i=;i<=n;i++){
a=b=;
for(k=;k<=*i-;k++){
a=a*x;
b=b*k;
}
s=s+pow(-,i+)*a/b;
}
printf("sinx=%lf\n",s);
return ;
}

    (6)计算正弦曲线y=sin(x)在[0,PI]上与x轴所围成的平面图形的面积:

计算定积分的公式为:s=(h/2)*[f(a)+f(b)]+h*(从i=1到n-1)Ef(Xi),其中,Xi=a+ih,h=(b-a)/n,本例取n=100。

 #include<stdio.h>
#include<math.h> int main(){
int i,n;
double a,b,h,s;
printf("Input a b:");
scanf("%lf%lf",&a,&b);
n=;
h=(b-a)/n;
s=0.5*(sin(a)+sin(b));
for(i=;i<=n-;i++){
s+=sin(a+i*h);
}
s*=h;
printf("s=%8.4lf\n",s);
return ;
}

    (7)找出100~999之间的所有"水仙花"数:

所谓"水仙花"数是指一个三位数,其各位数字的立方和等于该数其各位数字的立方和等于该数本身,例如153=1^3+3^3+5^3,所以153是水仙花数。

   方法一:

设100<=n<=999,i,j,k分别代表数n百位、十位,个位上的数字,则:

i=n/100

j=n/10%10

k=n%10

如果j^3+i^3+k^3=n,则n即为所求。

 #include<stdio.h>
#include<math.h> int main(){
int i,j,k,n;
for(n=;n<=;n++){
i=n/;
j=n/%;
k=n%;
if(n==(i*i*i+j*j*j+k*k*k))
printf("%d\n",n);
}
return ;
}

    方法二:

 #include<stdio.h>
#include<math.h> int main(){
int i,j,k;
int n;
for(i=;i<;i++)
for(j=;j<;j++)
for(k=;k<;k++){
n=i*+j*+k;
if((i*i*i+j*j*j+k*k*k)==n){
printf("%d是水仙花数!\n",n);
}
}
return ;
}

    (8)输入两个正整数m和n,求其最小公倍数:

 #include<stdio.h>

 int main(){
int a,b;
printf("Please input two int number: ");
scanf("%d%d",&a,&b);
if(a<=|b<=)
printf("Input error!");
for(int i=a>b?a:b;;i++){
if(i%a==&&i%b==){
printf("最小公倍数是%d",i);
break;
}
}
return ;
}

更好的算法:

 #include<stdio.h>

 int main(){
int a,b;
int n;
printf("Please input two int number: ");
scanf("%d%d",&a,&b);
if(a<=|b<=)
printf("Input error!");
n=a>b?a:b;
for(int i=;;i++){
if((i*n)%a==&&(i*n)%b==){
printf("最小公倍数是%d",i*n);
break;
}
}
return ;
}

    (9)编写程序读入n,输出不超过n的所有完全数:

如果一个正整数的因子所有之和等于该正整数,则称这个正整数为完全数。

 #include<stdio.h>

 int main(){
int n;
int k;
int s;
printf("Please input a number:\n");
scanf("%d",&n);
for(k=;k<=n;k++){
s=;
for(int i=;i<k;i++){
if(k%i==)
s+=i;
}
if(s==k){
printf("%d是完全数!",k);
}
}
return ;
}

c的详细学习(4)选择结构与循环结构的编程练习的更多相关文章

  1. 大数据学习--day04(选择结构、循环结构、大数据java基础面试题)

    选择结构.循环结构.大数据java基础面试题 switch: 注意: byte short int char String(jdk1.7支持) 不能是 long float double boolea ...

  2. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  3. Chrome弹窗的简单应用(选择结构与循环结构)

    ★选择结构★ ★JS实现弹窗显示随机数 示例代码效果图   ★ 弹窗实现对随机数的进一步判断 示例代码效果图 ★综合应用   比较大小 ★ 判断成绩等级 ): : : : : alert(" ...

  4. Java程序流程控制:判断结构、选择结构、循环结构

    本文内容: 判断结构 if 选择结构 switch 循环结构 while do-while for for each break.continue return 首发时间:2017-06-22 21: ...

  5. java顺序结构、循环结构、选择结构

    java顺序结构.选择结构.循环结构 顺序结构: 语句与语句之间,框与框之间是从上到下的顺序进行的,它是由若干个依次执行的处理步骤执组成的,它是任何一个算法都不离开的一种基本算法结构. 选择结构: 1 ...

  6. 黑马程序员——JAVA基础之程序控制流结构之循环结构,循环嵌套

    ------- android培训.java培训.期待与您交流! ---------- 循环结构: 代表语句:while ,do while ,for while语句格式 : while(条件表达式) ...

  7. 039 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 01 循环结构概述

    039 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 01 循环结构概述 本文知识点:循环结构概述 循环结构主要内容 while 循环 do-whiile ...

  8. java系统化基础-day02-运算符、选择结构、循环结构

    1.java中的运算符 package com.wfd360.day02; import org.junit.Test; import java.math.BigInteger; /** * 1.算术 ...

  9. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  10. luogg_java学习_03_流程控制及循环结构

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 程序流程控制 顺序结构 分支结构:if-else,sw ...

随机推荐

  1. 微博,and java 多线程编程 入门到精通 将cpu 的那个 张振华

    http://down.51cto.com/data/2263476  java 多线程编程 入门到精通  将cpu 的那个 张振华 多个用户可以同时用一个 vhost,但是vhost之间是隔离的. ...

  2. smali文件内容具体介绍

    大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR打开鳄鱼小顽皮APK能看到的是(Google Play下载的完整版版 ...

  3. 全球IT管理最佳实践之DevOps Master 认证

    原文:http://soft.chinabyte.com/30/13940030.shtml 作者:国际最佳实践管理联盟 孙振鹏 关键字: DevOps.DevOps认证.DevOpsDays.Dev ...

  4. java游戏开发基础Swing之JCheckBox

    © 版权声明:本文为博主原创文章,转载请注明出处 1.复选框(JCheckBox) 使用复选框可以完成多项选择.Swing中的复选框与AWT中的复选框相比,优点是Swing复选框中可以添加图片 JCh ...

  5. Unity3D - 性能优化之Draw Call

    Unity3D - 性能优化之Draw Call 分类: Unity 3D2012-09-13 11:18 1002人阅读 评论(0) 收藏 举报 性能优化引擎测试脚本图形算法 Unity(或者说基本 ...

  6. 使用eclipse开发hbase程序

      一:在eclipse创建一个普通的java项目 二:新建一个文件夹,把hbase需要的jar放进去,我这里把hbase/lib/*.jar 下所有的jar都放进去了,最后发现就用到了下面三个jar ...

  7. 前台freemark获取后台的值

    1.后台代码: ModelAndView mv = new ModelAndView("log/logList.ftl"); String info="abc" ...

  8. linux centos apache开启gzip的方法

    开启gzip压缩的方法很简单,连接服务器并打开配置文件“httpd.conf”,找到下面这两句,去掉前面的“#”  代码如下 1 LoadModule deflate_module modules/m ...

  9. Currency Exchange - poj 1860

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22111   Accepted: 7986 Description Seve ...

  10. MIC的异步传输

    关于signal和wait,属于异步传输的语法,即CPU端无需等待offload语句返回,即可异步运行下面的代码.一般用于启动MIC代码段后,并发执行CPU代码,达到同步执行的目的.另外一种用法是使用 ...