3.學習筆記_3
習題 3.1
1.
(a) num為變數,134為常數
(b) sum為變數,76844為常數
(c) value為變數,27.394756為常數
2.
/* prog3_1,變數的使用 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num1=12400;
double num2=5.234;
printf("num1的平方為%d\n",num1*num1);
printf("num2的平方為%f\n",num2*num2);
system("pause");
return 0;
}
習題 3.2
3.
(a)134.45L 13.45是浮點數型態,L不是用
(b)1024 常數不能文字或與數字相混和
(c)a2048 數字前不能有文字或特殊符號
4.
(a)124.23 倍精度浮點數型態
(b)3.23E12F 指數浮點數型態
(c)2.436F 浮點數型態
(d)311980L 長整數型態
(e)1024 整數型態
5.
(a)-96.43 → -9.643000e+001
(b)1974.56 → 1.974560e+003
(c)0.01234 → 1.234000e-002
(d)0.000432 → 4.320000e-004
6.
(a)-9.5e-4 → -0.00095
(b)3.78e+5 → 378000
(c)5.12e-2 → 0.0512
(d)6.1732e+12 → 6173200000000
7.
(a) \b 倒退一格
(b) \n 換行
(c) \t 跳格
(d) \a 警告音
8.
int 4位元組 -2147483648~2147483648
char 1位元組 0~256
float 4位元組 1.2-38~3.4e38
double 8位元組 2.2e308~1.8e308
9.
unsigned型態用在無負數情況下,此時能用的正數範圍變成2倍
10.
(a) bool flag=true; 沒見過這種寫法
(b) int num=40; 可接受
(c) double float sum=5.04; 多打float
(d) long value=47828L; 可接受
11.
(a) int
(b) short?
(c) double
(d) short or float
(e) float
(f) short?
(g) double
(h) short?
(i) long
12.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch='\7';
printf("%c",ch);
system("pause");
return 0;
}
13.
char ch=312; /*將字元變數ch設為312*/
printf("%c\n",ch); /*結果印出8*/
因為char只有一個位元組的大小(8bit,0~255),312大於255,換成二進位為100111000,發生溢位
所以只被取到後面8位元00111000,為10進位的56,ASCII碼56為字元8
14.
(a) unsigned short範圍為0~65535,共65536位元,80000溢位所以只擷取到後面,故80000-65536=14464
(b) 將unsigned short 改為unsigned int 就可以顯示80000了
15.
(a)
(b) float 只有8個數字的精度30000.1004有9個數字,故無法得到此結果
(c)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double num1=30000.1; /*將float改為double*/
double num2=0.0004; /*同上來獲得更多空間最多16的數字*/
printf("%.4f\n",num1+num2); /*%.4f2的.4指能控制小數點後顯示4位*/
system("pause");
return 0;
}
習題 3.3
16.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned int num1;
unsigned short int num2;
printf("sizeof(num1)=%d\n",sizeof(num1));
printf("sizeof(double)=%d\n",sizeof(double));
printf("sizeof(num2)=%d\n",sizeof(num2));
system("pause");
return 0;
}
(a) unsigned int 佔4位元組
(b) double 佔8位元組
(c) unsigned short int 佔2位元組
17.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("sizeof(578)=%d\n",sizeof(578));
printf("sizeof(784000000)=%d\n",sizeof(784000000));
printf("sizeof(6.78f)=%d\n",sizeof(6.78f));
printf("sizeof(718.26)=%d\n",sizeof(718.26));
printf("sizeof(6.42e127)=%d\n",sizeof(6.42e127));
system("pause");
return 0;
}
(a) 578 佔4位元組
(b) 784000000 佔4位元組
(c) 6.78f 佔4位元組
(d) 718.26 佔8位元組
(e) 6.42e127 佔8位元組
習題 3.4
18.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float num1=123.39f;
float num2=3.8e5f;
printf("(int)num1=%d\n",(int)num1);
printf("(int)num2=%d\n",(int)num2);
system("pause");
return 0;
}
19.
(a) 因為5/8=0...5,商數是0
(b)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num1=5,num2=8;
printf("%f\n",(float)num1/(float)num2);
system("pause");
return 0;
}