xx1 c语言编程,C语言课后习题程序2

4.2请编写一个程序,读取X和Y的值,然后在一行中显示下面表达式的结果:

(a)(x+y)/(x-y) (b)(x+y)/2 (c)(x+y)*(x-y)

程序如下:

voidmain()

{intx,y;

floata,b,c;

printf("enter two numbers\n");

scanf("%d %d",&x,&y);

a=(double)(x+y)/(x-y);

b=(double)(x+y)/2;

c=(double)(x+y)*(x-y);

printf("a=%f b=%f c=%f",a,b,c);

}

运行结果:

blog_8d5918ba01010001.html

4.5请编写一个交互式程序,以演示乘法的计算过程。程序应请求用户输入两个两位数字的整数,并按如下形式显示整数的乘积。

45

X37

———

315

135

———

1665

程序如下:

voidmain()

{

inta,b,c,d;

printf("enter two numbers\n");

scanf("%d %d",&a,&b);

printf(" %d\n",a);

printf(" *%d\n",b);

c=b%10;

d=b/10;

printf(" ______\n");

printf("is %d\n",a*c);

printf("is %d\n",a*d);

printf(" ______\n");

printf("add %d\n",a*b);

}

运行结果:

blog_8d5918ba01010001.html

4.6请编写一个程序,使用一个scanf语句从键盘读取3个整数值,然后使用如下方式把它们输出到一行:

(a)3个printf语句;

(b)只用一个带转换指示符的printf语句;

(c)只用一个无转换指示符的printf语句。

程序如下:

voidmain()

{

inta,b,c;

printf("enter three numbers\n");

scanf("%d %d %d",&a,&b,&c);

printf("%d",a);

printf(" %d",b);

printf(" %d",c);

printf("\n");

printf("%d\t%d\t%d",a,b,c);

printf("\n");

printf("%d %d %d",a,b,c);

}

运行结果:

blog_8d5918ba01010001.html

4.7请编写一个程序,以含如下形式的指数格式显示数值10.45678:

(a)精确到小数点后2位。

(b)精确到小数点后4位。

(c)精确到小数点后8位。

程序如下:

voidmain()

{

floata=10.45678;

printf("%f\n",a);

printf("%8.2e\n",a);

printf("%8.4e\n",a);

printf("%8.8e",a);

}

运行结果:

blog_8d5918ba01010001.html

4.8请编写一个程序,以含如下形式的固定小数点格式显示数值345.6789:

(a)精确到小数点后2位。

(b)精确到小数点后5位。

(c)精确到小数点后0位。

程序如下:

voidmain()

{

floata=345.6789;

printf("%f\n",a);

printf("%-8.2f\n",a);

printf("%8.5f\n",a);

printf("%-3.0f",a);

}

运行结果:

blog_8d5918ba01010001.html

5.1编写一个程序,确定某个给定的数是“奇数”还是“偶数”,并显示“NUMBER IS EVEN”或“NUMBER IS ODD"消息。

(a)不使用else语句 (b)使用else语句

a程序如下:

voidmain()

{

inta;

printf("Please input a integer:");

scanf("%d",&a);

if(a%2==0)

{

printf("number is even");

}

if(a%2!=0)

{

printf("number is odd");

}

}

a运行结果:

blog_8d5918ba01010001.html

b程序如下:

voidmain()

{

inta;

printf("Please input a integer:");

scanf("%d",&a);

if(a%2==0)

printf("number is even");

else

printf("number is odd");

}

B运行结果:

blog_8d5918ba01010001.html

5.2编写一个程序,找出所有位于100—200之间,能被7整除的整数之和。

程序如下:

voidmain()

{

inti,sum;

sum=0;

for(i=100;i<=200;i++)

if(i%7==0)

sum=sum+i;

printf("sum=%d",sum);

}

运行结果:

blog_8d5918ba01010001.html

5.3如下两个线性方程组的两个未知数为X1,X2

ax1+bx2=m

cx1+dx2=n

该方程组的唯一解为(ad-cb不等于零时):

x1=(md-bn)/(ad-cb)

x2=(na-mc)/(ad-cb)

请编写一个程序,读取常量a,b,c,d的值,然后计算X1和X2的值。如果ad-cb=0,应给出适当的提示信息。

程序如下:

voidmain()

{

floatx1,x2;

inta,b,c,d,m,n;

printf("enter four numbers\n");

scanf("%d %d %d %d",&a,&b,&c,&d);

if(a*d-c*b!=0)

{

x1=(m*d-b*n)/(a*d-c*b);

x2=(n*a-m*c)/(a*d-c*b);

printf("x1=%5.2f x2=%5.2f\n",x1,x2);

}

else

{

printf("a*d-c*b=0");

}

}

运行结果:

blog_8d5918ba01010001.html

5.4假设成绩得分范围为0—100.请编写一个程序,计算并显示下面情况的学生数量。

(a)得分大于80的学生数 (b)得分大于60的学生数

(c)得分大于40的学生数 (d)得分大于或等于40的学生数

(e)得分在80—100的学生数 (f)得分在60—80的学生数

(g)得分在41—60的学生数 (h)得分在0—40的学生数

程序如下:

voidmain()

{

intscore[10];

inti=0;

inta[7]={0};

printf("please enter 10 students' score:\n");

for(;i<10;i++)

{

scanf("%d",&score[i]);

if(score[i]>40)

{

a[2]++;

if(score[i]>60)

{

a[1]++;

if(score[i]>80)

{

a[0]++;

}

elsea[5]++;

}

elsea[6]++;

}

elsea[3]++;

}

a[4]=a[0];

printf("得分大于80的学生数=%d\n",a[0]);

printf("得分大于60的学生数=%d\n",a[1]);

printf("得分大于40的学生数=%d\n",a[2]);

printf("得分等于或小于40的学生数=%d\n",a[3]);

printf("得分在80——100之间的学生数=%d\n",a[4]);

printf("得分在60——80之间的学生数=%d\n",a[5]);

printf("得分在60——41之间的学生数=%d\n",a[6]);

printf("得分在0——40之间的学生数=%d\n",a[3]);

}

运行结果:

blog_8d5918ba01010001.html

5.5某专业课录取的条件如下:

(a)数学成绩>=60

(b)物理成绩>=60

(C)化学成绩>=60

(d)以上三科的总成绩>=200;或数学和物理的总成绩>=150;

给定这三科的成绩得分,请编写一个程序,用于处理合格学生的申请。

程序如下:

voidmain()

{

intm,p,c;

printf("enter the marks\n");

scanf("%d %d %d",&m,&p,&c);

if(m>=60&&p>=50&&c>=40)

{

if(m+p+c>=200||m+p>=150)

printf("yes");

else

printf("no");

}

else

printf("no");

}

运行结果:

blog_8d5918ba01010001.html

5.9请分别使用

(a)嵌套if语句;

(b)else if语句;

(c)条件运算符?:

编写一个程序,读取X的值,并计算如下函数。

1x>0

y={0 x=0

-1 x<0

a程序如下:

voidmain()

{

intx,y;

printf("enter value of x:");

scanf("%d",&x);

if(x>0)

printf("y=1");

if(x<0)

printf("y=-1");

if(x==0)

printf("y=0");

}

a运行结果:

blog_8d5918ba01010001.html

b程序如下:

voidmain()

{

intx,y;

printf("enter value of x:");

scanf("%d",&x);

if(x==0)

printf("y=0");

elseif(x<0)

printf("y=-1");

else

printf("y=1");

}

b运行结果:

blog_8d5918ba01010001.html

C程序如下:

voidmain()

{

intx,y;

printf("enter value of x:");

scanf("%d",&x);

y=(x!=0)?((x>0)?1:-1):0;

printf("y=%d",y);

}

C运行结果:

blog_8d5918ba01010001.html

5.10请编写一个程序,计算下面二元方程的实数根:

ax2+bx+c=0

其中,该方程的两个根为:

x1=-b+√b2-4ac/2a

x2=-b-√b2-4ac/2a

该程序应能请求输出常量a,b,c的值,并显示出X1和X2的值,应用如下规则:

(a)如果a和b的值为零,则没有解。

(b)如果a=0,那么只有一个解(x=-c/b).

(c)如果b2-4ac为负数,则没有实数根。

(d)否则,就有两个根。

请用适当的数据测试你所编写的程序,看看所有的逻辑是否按你设计的运行。请在程序中适当的加入相应的输出消息。

程序如下:

#include

voidmain()

{

inta,b,c;

floatx1,x2,x;

printf("input values of a,b and c\n");

scanf("%d %d %d",&a,&b,&c);

if(a==0&&b==0)

printf("no root");

elseif(a==0)

printf("x=-c/b");

elseif(b*b-4*a*c<0)

printf("no real root");

else

{

x1=-b+sqrt((b*b-4*a*c))/2*a;

x2=-b-sqrt((b*b-4*a*c))/2*a;

printf("x1=%f x2=%f",x1,x2);

}

}

运行结果:

blog_8d5918ba01010001.html

blog_8d5918ba01010001.html

blog_8d5918ba01010001.html

blog_8d5918ba01010001.html

5.11请编写一个程序,从键盘读取3个整数值,并显示输出,说明它们是否是直角三角形的边。

程序如下:

voidmain()

{

inta,b,c;

printf("enter three numbers\n");

scanf("%d %d %d",&a,&b,&c);

printf("a=%d b=%d c=%d",a,b,c);

if(a*a==b*b+c*c)

printf("\nIs a right triangle edge");

elseif(b*b==a*a+c*c)

printf("\nIs a right triangle edge");

elseif(c*c==a*a+b*b)

printf("\nIs a right triangle edge");

else

printf("\nis not a right triangle edge");

}

运行结果:

blog_8d5918ba01010001.html

5.14请编写一个交互式程序,读取一个正整数,判断该数是否为素数并显示相应的输出。

程序如下:

#include

voidmain()

{

intm,k,i;

printf("enter the value of m:");

scanf("%d",&m);

k=(int)sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)

break;

if(i>=k+1)

printf("%d is a prime number!\n",m);

else

printf("%d is not a prime number!\n",m);

}

运行结果:

blog_8d5918ba01010001.html

修改该程序,计算100—200之间的素数个数。

程序如下:

voidmain()

{

inti;

intj;

intnum=0;

for(i=100;i<=200;i++)

{

for(j=2;j

{

if(i%j==0)

{

break;

}

}

if(j>=i)

{

num++;

}

}

printf(" num=%d",num);

}

运行结果:

blog_8d5918ba01010001.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值