C PRIMER PLUS第六版 第七章编程练习

1.

#include <stdio.h>
#include <ctype.h>

int main(void)
{
	char ch;
	int blanks,lines,words;
	blanks = lines = words = 0;
	
	printf("Enter a sentence:\n");
	
	while((ch = getchar()) != '#')
	{
		if (ch == ' ')
			blanks++;
		else if (ch == '\n')
			lines++;
		else
			words++;
	}
	
	printf("blanks = %d\nlines = %d\nwords = %d",blanks,lines,words);
	
	return 0;
	 
 } 

2.

#include <stdio.h>
#include <ctype.h>

int main(void)
{
	char ch;
	int count = 0;
	
	printf("Enter a sentence:");
	
	while ((ch = getchar()) != '#')
	{
		printf("%c-%d\t",ch,ch);
		count++;
		if (count % 8 == 0)
		{
			printf("\n");
			count = 0;
		}
	}
	return 0;
 } 

3.

#include <stdio.h>
#include <ctype.h>

int main(void)
{
	int inputs;
	int sum_of_evens,sum_of_odds;
	int evens,odds;
	float average_of_evens,average_of_odds;
	sum_of_evens = sum_of_odds = 0;
	evens = odds = 0;
	
	printf("Please enter first number,0 to quit:");
	
	while ((scanf("%d",&inputs) == 1) && (inputs != 0))
	{
		if (inputs % 2 == 0)
		{
			sum_of_evens += inputs;
			evens++;
		}
		else
		{
			sum_of_odds += inputs;
			odds++;
		}
		printf("Please enter next number, 0 to quit:");
	}
	
	
	if (evens > 0)
		average_of_evens = (float)sum_of_evens / (float)evens;
	if (odds > 0)
		average_of_odds = (float)sum_of_odds / (float)odds;
	
	printf("The sum of evens is %d, and the average of them is %.2f\n",sum_of_evens,average_of_evens);
	printf("The sum of odds is %d, and the average of them is %.2f\n",sum_of_odds,average_of_odds);
	
	return 0;
 }
 

4.

#include <stdio.h>

int main(void)
{
	int a,b,s;
	char ch,oh;
	a = b = s = 0;
	oh = '!';
	
	printf("Enter some words or numbers:");
	
	while ((ch = getchar()) != '#')
	{
		if (ch == '.')
		{
			putchar(oh);
			a++;
		}
		else if (ch == '!')
		{
			putchar('!');
			putchar('!');
			b++;
		}
		else
			putchar(ch);
	}
	
	s = a + b;
	printf("\n");
	printf("Totally there %s %d %s\n", (s > 1)?"are":"is", s , (s > 1)?"replacements":"replacement");
	
	return 0;
}

5.

#include <stdio.h>

int main(void)
{
	int a,b,s;
	char ch,oh;
	a = b = s = 0;
	oh = '!';
	
	printf("Enter some words or numbers:");
	
	while ((ch = getchar()) != '#')
	{
		switch(ch)
		{
		case '.':
			putchar(oh);
			a++;
			break;
		
		case '!':
			putchar('!');
			putchar('!');
			b++;
			break;
		
		default:
			putchar(ch);
		}
	}
	
	s = a + b;
	printf("\n");
	printf("Totally there %s %d %s\n", (s > 1)?"are":"is", s , (s > 1)?"replacements":"replacement");
	
	return 0;
}

6.

#include <stdio.h>

int main(void)
{
	char ch,prev,now;
	int times = 0;
	
	while((ch = getchar()) != '#')
	{
		if(ch == 'e')
		{
			prev = ch;
			continue;
		}
		if(ch == 'i')
		{
			now = ch;
			if(prev == 'e' && now == 'i')
				times++;
			now = 'a'; //初始化now的值,下同
			prev = 'a';
			continue;
		}
		continue;
	}
	printf("There %s %d ei.\n",(times > 1)?"are":"is",times);
	
	return 0; 
}

7.

#include <stdio.h>
#define BASE 10.0
#define RATE_1 0.15
#define RATE_2 0.2
#define RATE_3 0.25

int main(void)
{
	int hours;
	float base_salary;
	float rate;
	float income;
	const regular_hours = 40;
	
	printf("Enter your working hours per week:");
	scanf("%d",&hours);
	
	if (hours > regular_hours)
	{
		base_salary = BASE * regular_hours + (hours - regular_hours) * 15;
		if (base_salary >= 300 && base_salary <= 450)
			rate = 300*0.15 + (base_salary-300)*0.2;
		if (base_salary >= 450)
			rate = 300*0.15 + 150*0.2 + (base_salary-450)*0.25;
		income = base_salary - rate;	
	}
	else
	{
		base_salary = BASE * hours;
		if (base_salary >= 300 && base_salary <= 450)
			rate = 300*0.15 + (base_salary-300)*0.2;
		if (base_salary >= 450)
			rate = 300*0.15 + 150*0.2 + (base_salary-450)*0.25;
		if (base_salary < 300)
			rate = 0;
		income = base_salary - rate;
	}
	
	printf("Your salary is $%.2f, income is $%.2f, tax is $%.2f\n",base_salary,income,rate);
	
	return 0;
}

8.

#include <stdio.h>
#define RATE_1 0.15
#define RATE_2 0.2
#define RATE_3 0.25
 
int main(void)
{
	int hours;
	int num;
	float BASE;
	float base_salary;
	float rate;
	float income;
	const regular_hours = 40;
	char ch;
	
	printf("Enter s to start, # to terminate:");
	
	
	while((ch = getchar()) != '#')
	{
		printf("You could choose the level of salary first:\n");
		printf("%-25s%-25s\n%-25s%-25s\n%-25s\nYour choice is:","1) $8.75/r","2) $9.33/hr","3) $10.00/hr","4) $11.20/hr","5) quit"); 
		scanf("%d",&num);
		
		switch(num)
		{
			case 1:
				BASE = 8.75;
				break;
			case 2:
				BASE = 9.33;
				break;
			case 3:
				BASE = 10.00;
				break;
			case 4:
				BASE = 11.20;
				break;
			case 5:
				break;
			default:
				printf("Please enter number 1 to 5:");
				continue;
		}

	
		printf("Enter your working hours per week:");
		scanf("%d",&hours);
	
		if (hours > regular_hours)
		{
			base_salary = BASE * regular_hours + (hours - regular_hours) * 15;
			if (base_salary >= 300 && base_salary <= 450)
				rate = 300*0.15 + (base_salary-300)*0.2;
			if (base_salary >= 450)
				rate = 300*0.15 + 150*0.2 + (base_salary-450)*0.25;
			income = base_salary - rate;	
		}
		else
		{
			base_salary = BASE * hours;
			if (base_salary >= 300 && base_salary <= 450)
				rate = 300*0.15 + (base_salary-300)*0.2;
			if (base_salary >= 450)
				rate = 300*0.15 + 150*0.2 + (base_salary-450)*0.25;
			if (base_salary < 300)
				rate = 0;
			income = base_salary - rate;
		}
		
		printf("Your salary is $%.2f, income is $%.2f, tax is $%.2f\n\n",base_salary,income,rate);
	

	}
	
	return 0;
}

9.

#include <stdio.h>
#include <stdbool.h>

int main(void)
{
	int num;
	int i;
	int min = 1;
	bool isPrime;
	
	printf("Enter a integer:");
	scanf("%d",&num);
	
	while(min < num)
	{
		for(i=2, isPrime=true; (i*i) <= min; i++)
		{
			if(min % i == 0)
			{
				isPrime = false;
				break;
			}
		}
	if(isPrime)
	{
		printf("%d is a prime which is smaller than your number.\n",min);
	}
	min++;
	}
	
	return 0;
}

10. 思路同8

11.

#include <stdio.h>

int main(void)
{
	char ch = 0;
	char choice;
	float a,b,c;
	float sum_a,sum_b,sum_c; 
	sum_a = sum_b = sum_c = 0;

	
	while(ch != 'q')
	{
		printf("Tell me the things you want to buy, q to quit:\n");
		printf("%-15s%-15s%-15s%-15s\n","a)artichoke","b)beta","c)carota","q)quit");
		
		ch = getchar();
		
		switch(ch)
		{
			case 'a':
				printf("Enter the pounds of artichoke:");
				scanf("%f",&a);
				sum_a += a;
				break;
			case 'b':
				printf("Enter the pounds of beta:");
				scanf("%f",&b);
				sum_b += b;
				break;
			case 'c':
				printf("Enter the pounds of carota:");
				scanf("%f",&c);
				sum_c += c;
				break;
			case 'q':
				continue;
			default:
				printf("That is invalid, Please enter again.\n");
				break;
		}
		while(getchar() != '\n')
			continue;
	}
 } 

猜你喜欢

转载自blog.csdn.net/o707191418/article/details/81226274
今日推荐