作业一(zm)
1.输出 “Hello World!” 语句
#include <stdio.h>
int main()
{
printf("hello world!");
return 0;
}
2.
#include <stdio.h>
void main()
{
int a=1;
float b=2.5;
char c='A';
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%c\n",c);
printf("真帅\n");//输出字符串
}
#include <stdio.h>
int main()
{
printf("Date type Number of bytes\n");
printf("---------- ----------\n");
printf("char=%d\n",sizeof(char));
printf("int=%d\n",sizeof(int));
printf("short=%d\n",sizeof(short));
printf("long=%d\n",sizeof(long));
printf("float=%d\n",sizeof(float));
printf("double=%d\n",sizeof(double));
printf("long double=%d\n",sizeof(long double));
return 0;
}
错误:
#include <stdio.h>
int main()
{
double temC,temF;//tenC为摄氏度,temF为华氏度
printf("请输入华氏度:");
scanf("%lf",&temF);
temC=5*(temF-32)/9;
printf("华氏温度%5.2f对应的摄氏温度为%5.2f\n",temF,temC);
return 0;
}
#include <stdio.h>
int main()
{
int a=5,b=12,c=13;
int triC;
triC=a+b+c;
printf("三角形的周长是:%d\n",triC);
return 0;
}
6.溢出问题:
short short_value = 32767; // short占2个字节,最大值32767;
short_value += 1;
printf(“%d”, short_value);
上述结果输出值为:short_value = -32768, 请分析这个值是怎么得到的?
C语言的储存格式是按照其补码的形式存放的,short 类型的取值范围是 -215 ~ 215 -1,即"-32768 ~ 32767",又最大值的二进制为0111 1111 1111 1111,此时再加1,所有数往前进位,得到1000 0000 0000 0000,最高位数表示符号位,1 表示负数,按照求补码的方式,先减1 得到 0111 1111 1111 1111,然后取反得1000 0000 0000 0000。
所以有 short_value = -32768
7.求值:
(a)-30 * 3 + 21 / 6
(b) -30 + 3 * 21 / 6
© 30 / 3 * 21 % 6
(d) -30 / 3 * 21 % 4
(a)-87;(b)-20;©0;(d)-2
8.假设i,j, k 都是整数,说明表达式 i != j < k的含义。
首先因为“<”的优先级高于"!=" ,所以当 j<k 成立返回值 1 ,反之则返回 0 ,然后i不等于1,或者不等于0。
9.赋值完毕,i, d 的值分别为多少?
int i ; double d;
(a) d = i = 3.5;
(b) i = d = 3.5;
(a)3.5赋值给i,i=3,再把i的值赋值给d,d为3.0
(b)把3.5赋值给d,d为3.5,再把d的值赋值给i,i为3
10.请查询资料了解「条件运算符」的语法、例子等。
例子:
#include <stdio.h>
int main()
{
int a=1,b=2,d;
d=a>b?a:b;
printf("d=%d",d);
return 0;
}
11.假设有如下定义:
char cval;
int ival;
unsigned int ui;
float fval;
double dval;
请回答下列表达式是否又发生类型转换。请将有发生的情况指出来。
(a) cval = ‘a’ + 3;
(b) fval = ui – ival * 1.0;
(c) dval = ui * fval;
(d) cval = ival + fval + dval;
(a)结果为int型
(b)结果为float型
©结果为double型
(d)结果为double型