1.数据类型实验
实验A1:表达式11111*11111的值是多少?把5个1改成6个1呢?9个1呢?
实验A2:把实验A1中的所有数换成浮点数,结果如何?
实验A3:表达式sqrt(-10)的值是多少?尝试用各种方式输出。在计算的过程中系统会报错吗?
实验A4:表达式1.0/0.0、0.0/0.0的值是多少?尝试用各种方式输出。在计算的过程中系统会报错吗?
实验A5:表达式1.0/0.0的值是多少?在计算的过程中系统会报错吗?
源代码:
#include
#include
#include
int main()
{
printf("------实验A1------");
printf("11111*11111 = %d\n", 11111 * 11111);
printf("111111*111111 = %d\n", 111111 * 111111);
printf("111111111*111111111 = %d\t结果类型:%s\n", 111111111 * 111111111, typeid(111111111 * 111111111).name());
printf("\n------实验A2------\n");
printf("11111.0 * 11111.0 = %f\n", 11111.0 * 11111.0);
printf("111111.0 * 111111.0 = %f\n", 111111.0 * 111111.0);
printf("111111111.0 * 111111111.0 = %f\t结果类型:%s\n", 111111111.0 * 111111111.0, typeid(111111111.0 * 111111111.0).name());
printf("11111.0 * 11111.0 = %lf\n", 11111.0 * 11111.0);
printf("111111.0 * 111111.0 = %lf\n", 111111.0 * 111111.0);
printf("111111111.0 * 111111111.0 = %lf\t结果类型:%s\n", 111111111.0 * 111111111.0, typeid(111111111.0 * 111111111.0).name());
printf("\n------实验A3------\n");
printf("sqrt(-10) = %f\n", sqrt(-10));
printf("\n------实验A4------\n");
printf("1.0/0.0 = %f\n", 1.0/0.0);
printf("\n------实验A5------\n");
printf("1/0 = %f\n", 1/0);
return 0;
}
在C语言中,整型常量默认的类型是int,浮点型常量默认的类型是double。在程序中我通过typeid(常量/变量).name()将数据类型输出了出来,i代表int,d代表double。然后关于数据的溢出也在其中显示了出来。
最后,如果进行整除/的时候,分母为整数0,那么程序无法输出相应的结果,但是如果分母是0.0,虽然也会输出结果,但必然是错误的。
2.输入输出实验
实验B1:在同一行中输入12和2,并以空格分隔,是否得到了预期的结果?
实验B2:在不同的两行中输入12和2,是否得到了预期的结果?
实验B3:在实验B1和B2中,在12和2的前面和后面加入大量的空格或者水平制表符(TAB),甚至插入一些空行。
实验B4:把2换成字符s,重复实验B1~B3。
#include
int main()
{
int a, b;
char s;
printf("------实验B1------\n");
scanf("%d%d", &a, &b);
printf("%d %d\n", a, b);
printf("------实验B2------\n");
scanf("%d%d", &a, &b);
printf("%d %d\n", a, b);
printf("------实验B3------\n");
scanf("%d%d", &a, &b);
printf("%d %d\n", a, b);
printf("------实验B4.1------\n");
scanf("%d %c", &a, &s); //由于换成读入字符,因此输入中一定注意加没加空格
printf("%d %c\n", a, s); //空格也会被当为一个字符读入的!!!
printf("------实验B4.2------\n");
scanf("%d %c", &a, &s);
printf("%d %c\n", a, s);
printf("------实验B4.3------\n");
scanf("%d %c", &a, &s);
printf("%d %c\n", a, s);
return 0;
}
关于输出 ‘’+'n’和 ‘%’+‘d’:
#include
int main()
{
printf("\n"); //直接输出\n,转义为换行
printf("\\n"); //通过\\来表示这是输出一个'\'
printf("\n========\n");
printf("%d", 1); //这是输出一个整型数据
printf("\n========\n");
printf("%%d");
return 0;
}
输入3个整数,输出它们的平均值,保留3位小数。
#include
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%d,%d,%d的平均数是:%.3f\n",a, b, c, (a + b + c) / 3.0 );
return 0;
}
输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。
#include
int main()
{
double f, c;
scanf("%lf", &f);
printf("%.3lf\n", 5 * (f - 32) / 9);
return 0;
}
输入正整数n,输出1+2+···+n的值。提示:目标是解决问题,而不是练习编程。
#include
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", n * (n + 1) / 2);
return 0;
}
输入正整数n(n<360),输出n度的正弦、余弦函数值。提示:使用数学函数。
#include
#include //使用数学函数需包含的头文件
int main()
{
int n;
scanf("%d", &n);
printf("%f\t%f\n", sin(n), cos(n)); //函数默认的形参是double类型
//这里编译器自动进行了类型转换
return 0;
}
一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。
#include
int main()
{
int n;
scanf("%d", &n);
if(n < 0)
printf("Error n !\n");
else if(95 * n >= 300)
printf("%.2lf\n", 0.85 * n * 95);
else
printf("%.2lf\n", 95.0 * n); //注意别用95 * n
return 0;
}
输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。如果可以,则输出yes,如果不能,则输出no。如果根本无法构成三角形,则输出not a triangle。
#include
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if(a+b > c && a+c > b && b+c > a)
if(a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b)
printf("yes\n");
else
printf("no\n");
else
printf("not a triangle\n");
return 0;
}
输入年份,判断是否为闰年。如果是,则输出yes,否则输出no。(简单地判断除以4的余数是不够的)
闰年的判定方法:
1.能被4整除而不能被100整除
2.能被100整除也能被400整除
#include
int main()
{
int year;
scanf("%d", &year);
if( (year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0))
printf("yes\n");
else
printf("no\n");
return 0;
}