//8.1
#include<stdio.h>
int main(void)
{
char ch;
int count = 0;
while ((ch = getchar()) != EOF)
count++;
printf("%d",count);//重定向符號不算的話就是count -1;
return 0;
}
//8.2
#include<stdio.h>
int main(void)
{
int i = 0;
char ch;
while ((ch = getchar()) != EOF)
{
if (ch == '\n')
{
putchar('\\');
putchar('n');
printf(" %d\t",ch);
i = 0;
}
else if (ch == '\t')
{
putchar('\\');
putchar('t');
printf(" %d\t",ch);
}
else if(ch < ' ')
{
putchar('^');
putchar(ch + 64);
printf("%d\t",ch);
}
else
printf("%c %d\t",ch,ch);
if (i++ == 10)
{
printf("\n");
i = 0;
}
}
return 0;
}
//8.3
#include<stdio.h>
int main(void)
{
int count_big = 0;
int count_small = 0;
char ch;
while ((ch = getchar()) != EOF && ch != '#')
{
if (ch >= 'a' && ch <= 'z')
count_small++;
else if (ch >= 'A' && ch <= 'Z')
count_big++;
}
printf("%d\n",count_big);
printf("%d\n",count_small);
return 0;
}
//8.4
#include<stdio.h>
#include<ctype.h>
int main(void)
{
int ch;
int words = 0, sign = 0, count = 0;
double average;
while((ch = getchar()) != EOF)
{
if (!isspace(ch) && !sign)//書183頁,庫函數
{
words++;
sign = 1;
}
if (isalpha(ch))
count++;
if (isspace(ch) && sign)
sign = 0;
}
average = (double)count / (double)words;
printf("%d 個單詞,評價每個單詞有 %lf 個字母。\n",average);
return 0;
}
//8.6
#include<stdio.h>
char get_first(void);
int main(void)
{
char ch;
ch = get_first();
printf("%c",ch);
return 0;
}
char get_first(void)
{
int ch;
while((ch = getchar()) == '\n' || ch == ' ' || ch == '\t')
;
return ch;
}
//8.7
#include<stdio.h>
#define NON_OVERTIME 40.00
#define BASIC 10.00
#define FIRST_HOUR 300.00
#define NEXT_HOUR 450.00
#define FIRST_RATE 0.15
#define NEXT_RATE 0.20
#define LAST_RATE 0.25
void interface(void);
char star(void);
char get_char(void);
int main(void)
{
int x = 1;
char num;
float hour,sum,tax,gain,perhour;
star();
interface();
star();
scanf("%c",&num);
while (x)
{
switch (num)
{
case 'a':
perhour = 8.75;
x = 0;
break;
case 'b':
perhour = 9.33;
x = 0;
break;
case 'c':
perhour = 10.00;
x = 0;
break;
case 'd':
perhour = 11.20;
x = 0;
break;
case 'q':
return 0;
break;
default:
printf("please input Letters from a to d(input q to quit): \n");
continue;
}
printf("you have select $%.2lf\n",perhour);
printf("Please enter you work hour a week.\n");
scanf("%f",&hour);
if (hour > NON_OVERTIME)
hour = NON_OVERTIME + (hour - NON_OVERTIME) * 1.5;
sum = perhour * hour;
if (sum <= FIRST_HOUR)
{
tax = sum * 0.15;
gain = sum - tax;
}
else if (sum > FIRST_HOUR && sum <= NEXT_HOUR)
{
tax = FIRST_HOUR * 0.15 + (sum - FIRST_HOUR) * 0.20;
gain = sum - tax;
}
else
{
tax = FIRST_HOUR * 0.15 + 150 * 0.2 + (hour - 450) * 0.25;
gain = sum - tax;
}
printf("real hour:%.f perhour:%.2f tax:%.2f gain:%.2f", hour, perhour, tax, gain);
x = 1;
}
return 0;
}
void interface(void)
{
printf("Enter the number corresponding to the desired pay rate or action:\n");
printf("a) $8.75/hr b) $9.33/hr\n");
printf("c) $10.00/hr d) $11.20/hr\n");
printf("q) quit\n");
}
char star(void)
{
int i = 1;
for (i;i < 100;i++)
printf("*");
printf("\n");
}
char get_char(void)
{
int ch;
ch = getchar();
while((ch = getchar()) != '\n')
continue;
return ch;
}
//8.8
#include<stdio.h>
char get_choice(void);
float first_input(void);
float last_input(void);
float add(void);
float subtract(void);
float multipy(void);
float divide(void);
int main(void)
{
char choice;
while ((choice = get_choice()) != 'q')
{
switch(choice)
{
case 'a':add();
break;
case 's':subtract();
break;
case 'm':multipy();
break;
case 'd':divide();
break;
default :printf("Please input a right word.\n");
continue;
}
}
printf("Done!\n");
return 0;
}
char get_choice(void)
{
char choice;
printf("Enter the operation of your choice:\n");
printf("a. add s. subtract\n");
printf("m. multiply d. divide\n");
printf("q. quit\n");
choice = getchar();
while (getchar() != '\n')
continue;
return choice;
}
float first_input(void)
{
float input;
char ch;
printf("Enter first number: \n");
while (scanf("%f",&input) == 0)
{
while((ch = getchar()) != '\n')
putchar(ch);
printf(" is not a number.\n");
printf("Please enter a number, such as 2.5, -1.78E8, or 3: \n");
}
while (getchar() != '\n')
continue;
return input;
}
float last_input(void)
{
float input;
char ch;
printf("Enter second number: \n");
while (scanf("%f",&input) == 0)
{
while((ch = getchar()) != '\n')
putchar(ch);
printf(" is not a number.\n");
printf("Please enter a number, such as 2.5, -1.78E8, or 3: \n");
}
while (getchar() != '\n')
continue;
return input;
}
float add(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
result = first_num + last_num;
printf("%.1f + %.1f = %.1f\n",first_num, last_num, result);
return result;
}
float subtract(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
result = first_num - last_num;
printf("%.1f - %.1f = %.1f\n",first_num, last_num, result);
return result;
}
float multipy(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
result = first_num * last_num;
printf("%.1f * %.1f = %.1f\n",first_num, last_num, result);
return result;
}
float divide(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
if (last_num == 0)
{
printf("Enter a number other than 0: \n");
last_num = last_input();
}
result = first_num / last_num;
printf("%.1f / %.1f = %.1f\n",first_num, last_num, result);
return result;
}
//8.6
#include<stdio.h>
char get_first(void);
int main(void)
{
char ch;
ch = get_first();
printf("%c",ch);
return 0;
}
char get_first(void)
{
int ch;
while((ch = getchar()) == '\n' || ch == ' ' || ch == '\t')
;
return ch;
}
//8.7
#include<stdio.h>
#define NON_OVERTIME 40.00
#define BASIC 10.00
#define FIRST_HOUR 300.00
#define NEXT_HOUR 450.00
#define FIRST_RATE 0.15
#define NEXT_RATE 0.20
#define LAST_RATE 0.25
void interface(void);
char star(void);
char get_char(void);
int main(void)
{
int x = 1;
char num;
float hour,sum,tax,gain,perhour;
star();
interface();
star();
scanf("%c",&num);
while (x)
{
switch (num)
{
case 'a':
perhour = 8.75;
x = 0;
break;
case 'b':
perhour = 9.33;
x = 0;
break;
case 'c':
perhour = 10.00;
x = 0;
break;
case 'd':
perhour = 11.20;
x = 0;
break;
case 'q':
return 0;
break;
default:
printf("please input Letters from a to d(input q to quit): \n");
continue;
}
printf("you have select $%.2lf\n",perhour);
printf("Please enter you work hour a week.\n");
scanf("%f",&hour);
if (hour > NON_OVERTIME)
hour = NON_OVERTIME + (hour - NON_OVERTIME) * 1.5;
sum = perhour * hour;
if (sum <= FIRST_HOUR)
{
tax = sum * 0.15;
gain = sum - tax;
}
else if (sum > FIRST_HOUR && sum <= NEXT_HOUR)
{
tax = FIRST_HOUR * 0.15 + (sum - FIRST_HOUR) * 0.20;
gain = sum - tax;
}
else
{
tax = FIRST_HOUR * 0.15 + 150 * 0.2 + (hour - 450) * 0.25;
gain = sum - tax;
}
printf("real hour:%.f perhour:%.2f tax:%.2f gain:%.2f", hour, perhour, tax, gain);
x = 1;
}
return 0;
}
void interface(void)
{
printf("Enter the number corresponding to the desired pay rate or action:\n");
printf("a) $8.75/hr b) $9.33/hr\n");
printf("c) $10.00/hr d) $11.20/hr\n");
printf("q) quit\n");
}
char star(void)
{
int i = 1;
for (i;i < 100;i++)
printf("*");
printf("\n");
}
char get_char(void)
{
int ch;
ch = getchar();
while((ch = getchar()) != '\n')
continue;
return ch;
}
//8.8
#include<stdio.h>
char get_choice(void);
float first_input(void);
float last_input(void);
float add(void);
float subtract(void);
float multipy(void);
float divide(void);
int main(void)
{
char choice;
while ((choice = get_choice()) != 'q')
{
switch(choice)
{
case 'a':add();
break;
case 's':subtract();
break;
case 'm':multipy();
break;
case 'd':divide();
break;
default :printf("Please input a right word.\n");
continue;
}
}
printf("Done!\n");
return 0;
}
char get_choice(void)
{
char choice;
printf("Enter the operation of your choice:\n");
printf("a. add s. subtract\n");
printf("m. multiply d. divide\n");
printf("q. quit\n");
choice = getchar();
while (getchar() != '\n')
continue;
return choice;
}
float first_input(void)
{
float input;
char ch;
printf("Enter first number: \n");
while (scanf("%f",&input) == 0)
{
while((ch = getchar()) != '\n')
putchar(ch);
printf(" is not a number.\n");
printf("Please enter a number, such as 2.5, -1.78E8, or 3: \n");
}
while (getchar() != '\n')
continue;
return input;
}
float last_input(void)
{
float input;
char ch;
printf("Enter second number: \n");
while (scanf("%f",&input) == 0)
{
while((ch = getchar()) != '\n')
putchar(ch);
printf(" is not a number.\n");
printf("Please enter a number, such as 2.5, -1.78E8, or 3: \n");
}
while (getchar() != '\n')
continue;
return input;
}
float add(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
result = first_num + last_num;
printf("%.1f + %.1f = %.1f\n",first_num, last_num, result);
return result;
}
float subtract(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
result = first_num - last_num;
printf("%.1f - %.1f = %.1f\n",first_num, last_num, result);
return result;
}
float multipy(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
result = first_num * last_num;
printf("%.1f * %.1f = %.1f\n",first_num, last_num, result);
return result;
}
float divide(void)
{
float first_num, last_num;
float result;
first_num = first_input();
last_num = last_input();
if (last_num == 0)
{
printf("Enter a number other than 0: \n");
last_num = last_input();
}
result = first_num / last_num;
printf("%.1f / %.1f = %.1f\n",first_num, last_num, result);
return result;
}