3.學習筆記_4
習題 4.1
1.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("I love c language best.\n");
system("pause");
return 0;
}
2.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("\"I love C language best.\"\n"); /*第三章學到的跳脫序列用法*/
system("pause");
return 0;
}
3.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("\"Hello C\"\n\"Hello,world\"\n"); /*第三章也有接觸到的跳脫序列用法*/
system("pause");
return 0;
}
4.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("\"100/4=25\"\n");
system("pause");
return 0;
}
5.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("\'30%%的學生來自中部地區,42%%的學生來自南部地區。\'\n");
system("pause");
return 0;
}
6.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float num=28.47f;
printf("num=%07.2f\n",num); /*0表示不滿補0,7表示全部占用7欄位(含點),2表示小數點後有兩位*/
system("pause");
return 0;
}
7.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float num=12.34f;
printf("num=%+08.2f\n",num);
system("pause");
return 0;
}
8.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("There is an old saying, \"Love me, love my dog.\"\n");
system("pause");
return 0;
}
習題 4.2
9.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
scanf("%d",&num); /*少鍵入一個 & */
printf("num=%d\n",num);
system("pause");
return 0;
}
10.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d*%d=%d\n",a,b,a*b);
system("pause");
return 0;
}
11.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int id,age;
printf("輸入學號: ");
scanf("%d",&id);
printf("輸入年齡: ");
scanf("%d",&age);
printf("學號=%d, 年齡=%d\n",id,age);
system("pause");
return 0;
}
12.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char n1[10];
char n2[10];
printf("輸入姓氏: ");
scanf("%s",n1);
printf("輸入名字: ");
scanf("%s",n2);
printf("%s %s\n",n2,n1);
system("pause");
return 0;
}
13.跑不出結果
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[10];
printf("請輸入不包含空白的字串: ");
scanf("%s",str);
fflush(stdin);
printf("\"%s\"\n");
printf("\\%20s\\\n"); /*20即為設定印出時欄寬為20*/
printf("\\%-20s\\\n"); /*負號可讓其靠左印出*/
system("pause");
return 0;
}
14.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
printf("請輸入十進位整數: ");
scanf("%d",&num);
printf("%d的八進位是 %o, ",num,num);
printf("%d十六進位是 %x\n",num,num);
system("pause");
return 0;
}
15.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
printf("請輸入十六進位整數: ");
scanf("%x",&num);
printf("其八進位是 %o, ",num);
printf("其十進位是 %d\n",num);
system("pause");
return 0;
}
習題 4.3
16.
(a)用scanf()輸入字串時不可有空白字元,故只讀到No,後面空白被當作結束,剩的內容被存在緩衝區。
(b)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str1[8];
char str2[8];
char str3[8];
printf("Input a string:");
scanf("%s %s %s",str1,str2,str3);
printf("The string is %s %s %s\n",str1,str2,str3);
system("pause");
return 0;
}
17.
(a)按下Enter被認為是歸位、換行 兩個動作故輸入A按下Enter後,來不及鍵入第二個字元他就先讀取到換行了
(b)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch1,ch2;
printf("請輸入第一個字元:");
scanf("%c",&ch1);
printf("請輸入第二個字元:");
scanf(" %c",&ch2); /*多個空白在%c前*/
printf("ch1=%c, ch2=%c\n",ch1,ch2);
system("pause");
return 0;
}
(c)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch1,ch2;
printf("請輸入第一個字元:");
scanf("%c",&ch1);
fflush(stdin); /*清除緩衝*/
printf("請輸入第二個字元:");
scanf("%c",&ch2);
printf("ch1=%c, ch2=%c\n",ch1,ch2);
system("pause");
return 0;
}
習題 4.4
18.
getchar() 是接收字元,等到按下Enter時結束輸入動作
getche() 是按下每個字元馬上接收,不用等Enter,並回應在螢幕上
getch() 是按下每個字元馬上接收,不用等Enter
19.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
char ch;
printf("請輸入一個整數: ");
scanf("%d",&num);
fflush(stdin); /* 清空緩衝區內的資料 */
printf("請輸入一個字元: ");
ch=getchar();
printf("num=%d, ascii of ch=%d\n",num,ch);
system("pause");
return 0;
}
20.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(void)
{
char ch;
printf("請輸入一個字元: ");
ch=getche();
printf(" 您輸入的字元是: ");
putchar(ch);
printf("\n請輸入一個字元: ");
ch=getch();
printf(" 您輸入的字元是: ");
putchar(ch);
printf("\n");
system("pause");
return 0;
}