程序1-3
#include <stdio.h>
#include <math.h>
int main() {
//输出宽度为6位右对齐,保留3位小数的浮点数
printf("%6.3f\n",8.0/5);
//输出保留两位小数,sqrt()计算平方根,需要包含头文件 math.h
printf("%.2f", 1+sqrt(3));
return 0;
}
输出结果:
不要使用头文件 conio.h, 包括 getch() , clrscr() 等函数。
尽量使用关键字const申明常数。
例题1-1 圆柱体表面积
#include <stdio.h>
#include <math.h>
int main() {
const double pi = acos(-1);\\使用关键字const申明常数
double r, h, s1, s2, s;
scanf("%lf%lf", &r, &h);\\输入使用%lf
s1 = pi*r*r;
s2 = 2*pi*r*h;
s = s1*2 + s2;
printf("Area = %.3f\n",s);
\\输出使用%f,而不是%lf,因为在C99标准中,double的输入必须为%lf,输出必须为%f,而C++中都可以用%lf;
return 0;
}
例1-2 三位数反转
#include <stdio.h>
int main() {
int n, m;
scanf("%d",&n);
m = (n%10)*100 + (n/10%10)*10 + n/100;
printf("%03d",m);//不足3位用0补齐
return 0;
}
例1-4 鸡兔同笼
已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目。如果无解,则输出No answer。
#include <stdio.h>
int main() {
int a, b, n, m;
scanf("%d%d",&n,&m);
if((m%2==0)&&(a>=0)&&(b>=0))//c语言采取短路策略,一但能够确定整个表达式的值,就不再继续运算
{
a = 2*n - m/2;
b = n-a;
printf("%d %d",a,b);
}
else
{
printf("No answer");
}
return 0;
}
数据类型实验
实验A1-A5:
#include <stdio.h>
#include <math.h>
int main() {
printf("A1\n%d\n",11111*11111);
printf("%d\n",111111*111111);
printf("A2\n%f\n",111111.0*111111.0);
printf("A3\n%.2d\n", 1+sqrt(-10));//输出73896,且与负数具体数值无关
printf("%.2f\n", 1+sqrt(-10));//输出nan
printf("A4\n%d\n",1.0/0/0);//输出73896
printf("%f\n",1.0/0.0);//输出inf
printf("%d\n",0.0/0.0);//输出73896
printf("%f\n",0.0/0.0);//输出nan
printf("A5\n%d\n",1/0);
printf("%f\n",1/0);
return 0;
}
输入格式实验
#include <stdio.h>
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%d %d\n",a,b);
for(int i=0;i<10;i++)
printf("%%d\n");//输出10次%d
return 0;
}
习题1-1 平均数(average)
输入3个整数,输出它们的平均值,保留3位小数。
#include <stdio.h>
int main() {
double a, b, c;
scanf("%lf%lf%lf",&a, &b, &c);
a = (a+b+c)/3;
printf("%.3f",a);
return 0;
}
习题1-2 温度(temperature)
输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。
#include<stdio.h>
int main(){
double c,f;
scanf("%lf",&f);
c = 5*(f-32)/9;
printf("%.3f",c);
return 0;
}
习题1-3 连续和(sum)
输入正整数n,输出1+2+…+n的值。提示:目标是解决问题,而不是练习编程。
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
printf("%d",(1+n)*n/2);
return 0;
}
习题1-4 正弦和余弦(sin和cos)
输入正整数n(n<360),输出n度的正弦、余弦函数值。提示:使用数学函数。
#include <stdio.h>
#include <math.h>
int main() {
double const pi = acos(-1.0);
double sin_n, cos_n, n;
scanf("%lf",&n);
n = n/180*pi;
sin_n = sin(n);
cos_n = cos(n);
printf("%f\n%f",sin_n,cos_n);
return 0;
}
习题1-5 打折 (discount)
一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。
#include <stdio.h>
int main() {
int n;
double sum;
scanf("%d",&n);
if(n<=3){
sum = n*95.0;
}
else{
sum = n*95*0.85;
}
printf("%.2f",sum);
return 0;
}
习题1-6 三角形(triangle)
输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。如果可以,则输出yes,如果不能,则输出no。如果根本无法构成三角形,则输出not a triangle。
#include <stdio.h>
int main() {
int a,b,c,temp;
scanf("%d%d%d", &a, &b,&c);
if(a>b){
temp = a;
a = b;
b = temp;
}
if(b>c){
temp = c;
c = b;
b = temp;
}
if((a*a+b*b)==(c*c))
printf("yes");
else if(a+b<c)
printf("not a triangle");
else
printf("no");
return 0;
}
习题1-7 年份(year)
输入年份,判断是否为闰年。如果是,则输出yes,否则输出no。
#include <stdio.h>
int main() {
int n,tag = 0;
scanf("%d",&n);
if(n%4==0){
if(n%100==0){
if(n%400==0)
tag = 1;
}
else
tag = 1;
}
if(tag == 1)
printf("yes");
else
printf("no");
return 0;
}
问题1:int型整数的最小值和最大值是多少(需要精确值)?
最小:-2147483648
最大:2147483647
#include <stdio.h>
int main() {
int i = 2147483638,j=1;
while(j){
if(j%100000000==0){
i = i+1;
printf("%d\n",i);
}
j++;
}
return 0;
}
问题2:double型浮点数能精确到多少位小数?或者,这个问题本身值得商榷?
与非0第一位位置有关;
#include <stdio.h>
int main() {
double i = 1;
printf("%.30f\n",i/3.0);
i = i/100;
printf("%.30f\n",i/3.0);
return 0;
}
结果:
问题3:double型浮点数最大正数值和最小正数值分别是多少(不必特别精确)?
#include <stdio.h>
int main() {
double i = 9007199254740986;
int j=1;
while(j){
if(j%500000000==0){
i = i+1;
printf("%f\n",i);
}
j++;
}
return 0;
}