无标题文章

by admin on 2020年1月28日

3.11  编程练习 1. /*有关溢出问题*/ #include int main(void) { int
a=32767; int c=10; unsigned int b=65535; float toobig1=111111.111;
double toobig2=2222222222222.222222222; float toosmall=0.1234e-10/c;
printf(“%d %d %dn”,a, a+1,a+2); printf(“%u %u %un”,b,b+1,b+2);
printf(“%f %f %en”,toobig1,toobig2,toosmall); return 0; } 输出结果:

5.11   编程练习

include <stdio.h>

int main ()
{
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
printf(“请输入五个数:n”);
scanf(“%d%d%d%d%d”,&a,&b,&c,&d,&e);
printf(“输出五个数:%d %d %d %d %d”,a,b,c,d,e);
return 0;
}
作业二:输出小数

这是TC里的显示结果

1.

include <stdio.h>

int main ()
{
double A=0;
double E=0;
double C=0;
printf(“请输入三个数:n”);
scanf(“%lf%lf%lf”,&A,&E,&C);
printf(“输出的三个数:%f %f %f”,A,E,C);
return 0;
}
作业三:求正方形的面积

这是在VC里的显示结果

/*计算多个分钟对应的小时*/

include <stdio.h>

int main ()
{
int length=6;
int square=66;
printf(“正方形的面积为:%d”,6
6);
return 0;
澳门新葡亰网址下载 ,}
作业四:求正方形的面积(2)

当把a,b改为a=2147483647,b=4294967295时,在VC里的显示结果为

#include <stdio.h>

include <stdio.h>

int main ()
{
double length=0;
double square=0.0;
printf(“请输入正方形的边长:n”);
scanf(“%lf”,&length);
square=length*length;
printf(“正方形的面积为:%f”,square);
return 0;
}
作业五:求三个数的平均值

注:分析如下

#define a 60  /*一小时60分钟*/

include <stdio.h>

int main ()
{
double a=0;
double b=0;
double c=0;
double average=(0+0+0)/3;
printf(“请输入三个数:n”);
scanf(“%lf%lf%lf”,&a,&b,&c);
average=(a+b+c)/3;
printf(“平均值为:%f”,average);
return 0;
}

(1)整数溢出:

int main(void)

无符号整数b就像一个汽车里程指示表,当达到最大值时,它将溢出到起始点.整数a也是同样.他们的主要区别是unsigned int变量b的起始点是0(正像里程表那样),而int变量a的起始点是-2147483648.

{

(2)浮点数溢出:

float time,hour; /*声明语句*/

请看第4小题的分析

while(scanf(“%f”,&time)==1&&time>0)/*可以允许用户重复输入,

2. 

并且当键入的值<=0的时间的时候时终止*/

#include <stdio.h>

{

int main(void)

hour=time/a;

{

printf(“The input is %f and %fn”,time,hour);

int m;

}

scanf(“%d”,&m);

return 0;

printf(“%d %cn”,m,m);

2.

return 0;

/*计算多个分钟对应的小时—- while循环*/

}

#include <stdio.h>

显示结果:

int main(void)

3.

{

/*报警字符功能地的演示*/

int i=0; /*变量初始化initialize*/

#include <stdio.h>

int a;

int main(void)

scanf(“%d”,&a);

{

while(i++<=10)/*11次循环*/

printf(“aStartled by the sudden sound,a”);

{

printf(“aSally shouted,”By the Great Pumpkin,what
was that!”an”);

printf(“%d “,a);

return 0;

a++;

}

}

结果显示:能够听到噔的一声L(声音取决于个人计算机的硬件)

return 0;

4.

}

/*一个浮点数以小数和指数的形式输出*/

/*计算多个分钟对应的小时—- for循环*/

#include <stdio.h>

#include <stdio.h>

int main(void)

int main(void)

{

{

float a;

int i,a;

scanf(“%f”,&a);

scanf(“%d”,&a);

printf(“The input is %f or %e.n”,a,a);

for(i=0;i<=10;i++)/* while 循环开始,11次循环*/

return 0;

{                 /*代码块开始*/

}

printf(“%d “,a);

结果显示:

a++;

分析:结果出来应该是: The
input is21.290000or 2.129000e+001

}               
/*代码块开始*/

因为(1)根据一般系统规定,e格式符以指数形式输出实数,在没有指定数据输出所占得宽度和数字部分的小数位数时,c编译系统自动指定给出6位小数,指数部分占5位,但是不同系统略有不同像我用的这个,其显示是2.12900e+01.

return 0;

(2)%f,不指定字段宽度,系统自动指定,使整数部分全部如数输出,并输出6位小数.但要注意的是并非全部的数字都是有效数字.此处我用的是单精度实数输出,而单精度实数的有效位数一般为7,故输出的是21.290001,最后一位不是有效数字,是系统随机给的.对于双精度的也可以用%f格式输出,它的有效数字一般为16位,给出小数6位.

}

不过在VC编译器里的结果显示是The input is21.290001or 2.129000e+001

结果显示:

5.

3.

#include <stdio.h>

/*weeks and days*/

int main(void)

#include <stdio.h>

{

#define he 7   
/*一周有7天*/

double sec;

int main(void)

float a=3.156e7;

{

float age;

int a; /*声明语句*/

scanf(“%f”,&age);

while(scanf(“%d”,&a)==1&&a>=0)/*while
循环开始*/

sec=age*a;

printf(“%d days are %d weeks,%d
days.n”,a,a/he,a%he);/*语句*/

printf(“a=%e sec=%en”,a,sec);

return 0;

return 0;

}

}

显示结果:

注:
此程序在编写的时候把scanf(“%f”,&age);写成了scanf(“my age
%f”,&age);结果sec不论输入什么数都是-3.388729e+015,后来在scanf(“my age
%f”,&age);语句后添加prntf(“%f”,age),发现age的输出值不正确,这里可以肯定的是这里出错,但没有注意到scanf()函数的用法,致使错误百思不得其解,我也是在无意中修改了scanf(“my age %f”,&age);去掉my
age发现结果正确了,这才恍然大悟:原来我把printf()函数和scanf()函数搞混了,他们的具体用法请参考C Primer Plus (第四版)中文版第四章字符串和格式化输入/输出

4.

6.

/*addemup.c*/

#include <stdio.h>

#include <stdio.h>

int main(void)

int main(void)  
/*计算整数的和*/

{

{

double num;

int count,sum,a;/*声明语句*/

float a=3.0e-23;

count=0;    /*赋值语句*/

float b=950;

sum=0;      /*同上*/

num=b*a;

scanf(“%d”,&a); 
/*输入函数*/

printf(“a=%ennum=%en”,a,num);

printf(“a=%dn”,a); /*输出函数*/

return 0;

while(count++<a)/*用一个变量a来告诉程序在何处结束*/

}

sum=sum+count;/*语句*/

显示结

printf(“sum=%dn”,sum);/*函数语句*/

7.

return 0;

/*以centimerter表示成inche*/

}

#include <stdio.h>

注:在调试这个程序的时候发现,直接有输入语句scanf(“%d”,&a);,不输出在下一句while(count++<a)使用输入的数据,不起作用,只有输出了,数据才能生效,被后面的语句使用.

int main(void)

5.

{

/*addemup.c*/

double inches;

#include <stdio.h>

float a=2.54;

int main(void)  
/*计算整数的平方和*/

float b;

{

scanf(“%f”,&b);

int count,sum,a;/*声明语句*/

inches=b*a;

count=0;    /*赋值语句*/

printf(“a=%fninches=%fn”,a,inches);

sum=0;      /*同上*/

return 0;

scanf(“%d”,&a); 
/*输入函数*/

}

printf(“a=%dn”,a);

显示结果:

while(count++<a)/*用一个变量a来告诉程序在何处结束*/

果:

sum=sum+count*count;/*语句*/

printf(“sum=%dn”,sum);/*函数语句*/

return 0;

}

结果显示:

6.

/*定义一个带有参数的函数*/

#include <stdio.h>

void cubic(float n);/*ISO/ANSI C函数原型*/

int main(void)  
/*求一个数的立方*/

{

float a;

scanf(“%f”,&a); /*输入一个float型参数*/

cubic(a);     /*函数调用*/

return 0;

}

void cubic(float n)/*函数定义的开始*/

{                 
/*说明该函数接受了一个float参数*/

double b;

b=n*n*n;    /*计算并打印该值的立方*/

printf(“b=%fn”,b);

}

7.

/*温度的三种表示法之间的换算*/

#include <stdio.h>

#define a 1.8  /**/

#define b 32.0

#define c 273.16

void Temperatures(double n);/*ANSI风格的原型*/

int main(void)

{

double Fahrenheit;  
/*声明语句*/

while(scanf(“%lf”,&Fahrenheit)==1)/*可以允许用户重复输入,%lf是double类型的说明符*/

Temperatures(Fahrenheit);/*函数调用*/

return 0;

}

void Temperatures(double n) 
/*说明该函数接受一个double参数*/

{

double Celsius,Kelvin; 
/*声明语句*/

Celsius=a*n+b;      
/*华氏温度和摄氏温度的转换*/

Kelvin=Celsius+c;   
/*摄氏温度和绝对温度的转换*/

printf(“n=%.2fnCelsius=%.2enKelvin=%.2en”,n,Celsius,Kelvin);/*三种温度的输出*/

}结果显示:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图