1.
#include <stdio.h>
int main(){
char ch;
int ct = 0 ;
while ((ch=getchar()) != EOF)
ct++;
printf ("%d characters read." , ct);
return 0 ;
}
2.
#include <stdio.h>
int main(){
char ch;
int ct = 0 ;
while ((ch = getchar()) != EOF)
{
if (ch >= 32 ){
putchar (ch);
printf ("/%d " ,ch);
ct++;
}
else if (ch == '\n' ){
printf ("\\n" );
putchar (ch);
ct = 0 ;
}
else if (ch == '\t' ){
printf ("\\t" );
ct++;
}
else
{
putchar ('^' );
putchar (ch + 64 );
printf ("/%d " , ch);
}
if (ct == 10 ){
printf ("\n" );
ct = 0 ;
}
}
return 0 ;
}
3.
#include <stdio.h>
#include <ctype.h>
int main(){
char ch;
int a,b,c;
a = b = c = 0 ;
while ((ch = getchar()) != '#' )
{
if (isupper (ch))
a++;
else if (islower (ch))
b++;
else c++;
}
printf ("capital:%d lower case:%d other:%d" , a, b, c);
return 0 ;
}
4.
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
int main(){
char ch;
bool inword = false ;
int n_chars = 0 ;
int n_words = 0 ;
int value;
while ((ch = getchar()) != '#' )
{
if (isalpha (ch))
n_chars++;
if (!isspace (ch) && !inword)
{
inword = true ;
n_words++;
}
if (isspace (ch) && inword)
inword = false ;
}
value = n_chars / n_words ;
printf ("chars : %d\n" , n_chars);
printf ("words : %d\n" , n_words);
printf ("average value : %d" , value);
return 0 ;
}
5 .
//如果50 太大,则50 变为最大值。反之则为最小值。
int main(){
char ch;
int guess = 50 , MAX = 100 , MIN = 0 ;
printf ("Uh...is your number is %d \n" ,guess);
while ((ch = getchar()) != 'y' )
{
if (ch == 'b' ) {
MAX = guess;
guess = (guess + MIN) / 2 ;
printf ("Well, then, is it %d \n" ,guess);
}
else if (ch == 'l' ) {
MIN = guess;
guess = (guess + MAX) / 2 ;
printf ("Well, then, is it %d \n" ,guess);
}
else printf ("Sorry, I understand only big , less , yes.\n" );
while ((ch = getchar()) != '\n' )
continue ;
}
printf ("I konw i could do it" );
return 0 ;
}
6.
char get_first(void ){
char ch;
while ((ch = getchar()) == '\n' )
continue ;
while (getchar() != '\n' )
continue ;
return ch;
}
7.
#include <stdio.h>
char get_choice(void );
char get_first(void );
#define WORK_OVERTIME 40
#define RATE1 0.15
#define RATE2 0.20
#define RATE3 0.25
#define BREAK1 300.0
#define BREAK2 450.0
#define BASE1 (BREAK1 * RATE1)
#define BASE2 (BASE1 + ((BREAK2 - BREAK1) * RATE2))
int main(void ) {
int hr;
char choice;
double wage,income,tax,wage2;
printf ("------------------------------------------------------------------------\n" );
printf ("Enter the number number corresponding to the desired pay rate or action:\n" );
printf ("a) $8.15/hr b) $9.33/hr\n" );
printf ("c) $10.00/hr d) $11.20/hr\n" );
printf ("q) quit\n" );
printf ("------------------------------------------------------------------------\n" );
printf ("Please enter your choise:" );
while (choice = get_choice() ){
if (choice == 'q' )
break ;
switch (choice){
case 'a' : wage2 = 8.75 ;
break ;
case 'b' : wage2 = 9.33 ;
break ;
case 'c' : wage2 = 10.00 ;
break ;
case 'd' : wage2 = 11.20 ;
break ;
}
printf ("Please enter the hours:" );
scanf ("%d" ,&hr);
if (hr <= WORK_OVERTIME)
wage = hr * wage2;
else wage = WORK_OVERTIME * wage2 +((hr - WORK_OVERTIME) * wage2 * 1.5 );
if (wage <= BREAK1){
tax = wage * RATE1;
}
else if (wage > 300 && wage <= 450 ){
tax = BASE1 + (wage - BREAK1) * RATE2;
}
else tax = BASE2 + (wage - BREAK2) * RATE3;
income = wage - tax;
printf ("The wage: %.2f income:%.2lf tax:%.2lf\n" , wage, income, tax);
printf ("------------------------------------------------------------------------\n" );
printf ("Enter the number number corresponding to the desired pay rate or action:\n" );
printf ("1) $8.15/hr 2) $9.33/hr\n" );
printf ("3) $10.00/hr 4) $11.20/hr\n" );
printf ("5) quit\n" );
printf ("------------------------------------------------------------------------\n" );
printf ("Please enter your choise:" );
}
return 0 ;
}
char get_choice(void ){
char ch;
ch = get_first();
while (ch != 'q' && (ch < 'a' || ch > 'd' )){
printf ("Please enter the : a b c d q\n" );
printf ("Please enter your choise:" );
ch = get_first();
}
return ch;
}
char get_first(void ){
int ch;
ch = getchar();
while (getchar() != '\n' )
continue ;
return ch;
}
8.
#include <stdio.h>
char get_choice(void );
char get_first(void );
double get_number(void );
int main(void ){
char choice;
double num1,num2,result;
while ((choice = get_choice()) != 'q' ){
printf ("Enter the first number:" );
num1 = get_number();
printf ("Enter the second number:" );
num2 = get_number();
if (choice == 'a' ) {
result = num1 + num2;
printf ("%.1lf + %.1lf = %.1lf\n" , num1, num2, result);
}
if (choice == 's' ) {
result = num1 - num2;
printf ("%.1f - %.1f = %.1f\n" , num1, num2, result);
}
if (choice == 'm' ) {
result = num1 * num2;
printf ("%.1f * %.1f = %.1f\n" , num1, num2, result);
}
if (choice == 'd' ) {
if (num2 == 0 ) {
printf ("Enter a number other than 0: " );
num2 = get_number();
result = num1 / num2;
printf ("%.1f / %.1f = %.1f\n" , num1, num2, result);
} else
printf ("%.1f / %.1f = %.1f\n" , num1, num2, result);
}
}
return 0 ;
}
char get_choice(void ){
char ch;
printf ("Enter the operation of your choice:\n" );
printf ("a. add s. subtract\n" );
printf ("m. multiply d. divide\n" );
printf ("q. quit\n" );
ch = get_first();
while ((ch != 'a' ) && (ch != 's' ) && (ch != 'm' ) && (ch != 'd' ) && (ch != 'q' )){
printf ("Please choice such as a s m d q:" );
ch = get_first();
}
return ch;
}
char get_first(void ){
char ch;
while ((ch = getchar()) == '\n' )
continue ;
while (getchar() != '\n' )
continue ;
return ch;
}
double get_number(void ){
double num;
char ch;
while (scanf ("%lf" , &num) != 1 ){
while ((ch = getchar()) != '\n' )
putchar (ch);
printf ("is not an number.\n" );
printf ("Please enter a number , such as 2.5, -1.78E8, or 3:" );
}
return num;
}