C primer plus 7.12
7.12.1
#include<stdio.h>
int main(void)
{
int i=0;//空格数
int j=0;//换行符数
int n=0;//其他字符数
char ch;//用户输入
char space;
printf("请输入一些字符:");
printf("按“#”结束输入\n");
ch=getchar();
space=' ';
while(ch!='#')
{
if(ch==space)
{
i++;
}
else if(ch=='\n')
{
j++;
}
else
n++;
ch=getchar();
space=' ';
}
printf("空格数:%d",i);
printf("换行符数:%d",j);
printf("其他字符数:%d",n);
return 0;
}
7.12.2
#include<stdio.h>
int main(void)
{
char ch;//输入字符
int i;//字符计数
printf("请输入若干字符,按#结束\n");
ch=getchar();
while(ch!='#')
{
for(i=0;i<8;i++)
{
printf("%c-%d",ch,ch);
ch=getchar();
}
printf("\n");
}
return 0;
}
7.12.3
#include<stdio.h>
int main(void)
{
int num[200];//用户输入
int i;//数组位置
int p;//偶数个数
int sum_p;//偶数总和
int q;//偶数平均值
int m;//奇数个数
int sum_m;//奇数总和
int n; // 奇数平均值
i=0;
p=0;
sum_p=0;
m=0;
sum_m=0;
printf("请输入若干整数\n");
scanf("%d",&num[i]);
while(num[i]!=0)
{
if(num[i]%2==0)
{
p++;
sum_p=sum_p+num[i];
q=sum_p/p;
}
else
{
m++;
sum_m=sum_m+num[i];
n=sum_m/m;
}
i++;
scanf("%d",&num[i]);
}
printf("偶数的个数为:%d\n",p);
printf("偶数的平均值为:%d\n",q);
printf("奇数的个数为:%d\n",m);
printf("奇数的平均值为:%d\n",n);
return 0;
}
7.12.4
#include<stdio.h>
int main(void)
{
int i;//替换计数
char ch; //用户输入
printf("请输入若干字符,按“#”停止\n");
ch=getchar();
i=0;
while(ch!='#')
{
if(ch=='.')
{
ch='!';
i++;
}else if(ch='!')
{
ch='!!';
i++;
}
ch=getchar();
}
printf("程序进行了%d次替换",i);
return 0;
}
7.12.5
#include<stdio.h>
int main(void)
{
int i;//替换计数
char ch; //用户输入
printf("请输入若干字符,按“#”停止\n");
ch=getchar();
i=0;
while(ch!='#')
{
switch(ch)
{
case '.':
ch='!';
i++;
break;
case '!':
ch='!!';
i++;
break;
}
ch=getchar();
}
printf("程序进行了%d次替换",i);
return 0;
}
7.12.6
#include<stdio.h>
int main(void)
{
char ch;//用户输入
char ar;//用户输入
int n;//计数器
printf("请输入若干字符,按“#”停止输入\n");
ch=getchar();
n=0;
while(ch!='#')
{
if(ch=='e')
{
ar=getchar();
if(ar=='i')
{
n++;
}
}
ch=getchar();
}
printf("“ei”出现了%d次",n);
return 0;
}
7.12.7
#include<stdio.h>
#define a 10.00
#define b 1.5*10.00
#define c1 0.15
#define c2 0.2
#define c3 0.25
int main(void)
{
float hour;//用户输入值
float total_wage;//小时数
float taxes;//税金
float net_income;//净收入
printf("请输入您一周工作的小时数:\n");
scanf("%f",&hour);
if(hour<40)
{
total_wage=hour*a;
}
else
{
total_wage=40*a+(hour-40)*b;
}
if(total_wage<=300)
{
taxes=total_wage*c1;
}
else if(total_wage<=450)
{
taxes=300*c1+(total_wage-300)*c2;
}
else
{
taxes=300*c1+150*c2+(total_wage-450)*c3;
}
net_income=total_wage-taxes;
printf("工资总额:%f\n",total_wage);
printf("税金:%f\n",taxes);
printf("净收入:%f\n",net_income);
return 0;
}
7.12.8
#include<stdio.h>
#define A 8.75//薪资等级1
#define B 9.33//薪资等级2
#define C 10.00//薪资等级3
#define D 11.20//薪资等级4
#define b 1.5
#define c1 0.15
#define c2 0.2
#define c3 0.25
int main(void)
{
int n;//用户选择12345
float level;//薪资等级
float hour;//用户输入值,小时数
float total_wage;//工资总额
float taxes;//税金
float net_income;//小时数
printf("****************************************************************\n");
printf("请选择您的薪资等级:\n");
printf("1) $8.75/hr 2) $9.33/hr \n");
printf("3) $10.00/hr 4) $11.20/hr \n");
printf("5)quit \n");
printf("****************************************************************\n");
scanf("%d",&n);
while(n!=5)
{
switch(n)
{
case 1:
level=A;
break;
case 2:
level=B;
break;
case 3:
level=C;
break;
case 4:
level=D;
break;
}
printf("请输入您一周工作的小时数:");
scanf("%f",&hour);
if(hour<40)
{
total_wage=hour*level;
}
else
{
total_wage=40*level+(hour-40)*b*level;
}
if(total_wage<=300)
{
taxes=total_wage*c1;
}
else if(total_wage<=450)
{
taxes=300*c1+(total_wage-300)*c2;
}
else
{
taxes=300*c1+150*c2+(total_wage-450)*c3;
}
net_income=total_wage-taxes;
printf("工资总额:%f\n",total_wage);
printf("税金:%f\n",taxes);
printf("净收入:%f\n\n\n",net_income);
printf("****************************************************************\n");
printf("请选择您的薪资等级:\n");
printf("1) $8.75/hr 2) $9.33/hr \n");
printf("3) $10.00/hr 4) $11.20/hr \n");
printf("5)quit \n");
printf("****************************************************************\n");
scanf("%d",&n);
}
return 0;
}
7.12.9
#include<stdio.h>
int main(void)
{
unsigned int n;//用户输入
int i;//递增被除数
int j;//递增除数
int k;//余数
int p;//标记,素数判断
printf("请输入一个正整数:\n");
while(scanf("%u",&n)==1)
{
for(i=2;i<=n;i++)
{
p=1;
for(j=2;j*j<=i;j++)
{
k=i%j;
if(k==0)
{
p=0;
}
}
if(p==1)
{
printf("%d ",i);
}
}
printf("\n");
printf("请输入一个正整数\n");
}
return 0;
}
7.12.10
#include<stdio.h>
int main(void)
{
int m=0;//用户选择等级
float n=0;//用户应纳税收入
int i=0;//基础缴纳税金
float j=0;//税金
printf("|**********|******************类别******************|******************税金******************|\n");
printf("| 1) | 单身 | 17850美元按15%计,超出部分按28%计 |\n");
printf("| 2) | 户主 | 23900美元按15%计,超出部分按28%计 |\n");
printf("| 3) | 已婚,共有 | 29750美元按15%计,超出部分按28%计 |\n");
printf("| 4) | 已婚,离弃 | 14875美元按15%计,超出部分按28%计 |\n");
printf("|**********|****************************************|****************************************|\n");
printf("| 按0退出 |\n");
printf("请选择您的缴纳税金的种类:\n");
scanf("%d",&m);
printf("请输入您的应纳税收入:\n");
scanf("%f",&n);
while(m!=0)
{
switch(m)
{
case 1:
i=17850;
break;
case 2:
i=23900;
break;
case 3:
i=29750;
break;
case 4:
i=14875;
break;
}
if(n<=i)
{
j=n*0.15;
}
else
{
j=i*0.15+(n-i)*0.28;
}
printf("您应缴纳的税金为:%f\n",j);
printf("|**********|******************类别******************|******************税金******************|\n");
printf("| 1) | 单身 | 17850美元按15%计,超出部分按28%计 |\n");
printf("| 2) | 户主 | 23900美元按15%计,超出部分按28%计 |\n");
printf("| 3) | 已婚,共有 | 29750美元按15%计,超出部分按28%计 |\n");
printf("| 4) | 已婚,离弃 | 14875美元按15%计,超出部分按28%计 |\n");
printf("|**********|****************************************|****************************************|\n");
printf("| 按0退出 |\n");
printf("请选择您的缴纳税金的种类:\n");
scanf("%d",&m);
printf("请输入您的应纳税收入:\n");
scanf("%f",&n);
}
return 0;
}
7.12.11
#include<stdio.h>
int main(void)
{
char ch;//用户选择abc
float m;//用户输入重量
float A=0;//洋蓟总重量
float B=0;//甜菜总重量
float C=0;//胡萝卜总重量
float sum_money;//货物总价
float discount;//折扣
float real_sum_money;//折扣后价格
float sum_ABC;//所有蔬菜总重量
float freight;//运费和包装费
float sums;//所有费用总额
printf("|********************************************************************************************|\n");
printf("|**********|* 种类 *|* 价格 *|\n");
printf("|* a *| 洋蓟 | $2.05/磅 |\n");
printf("|* b *| 甜菜 | $1.15/磅 |\n");
printf("|* c *| 胡萝卜 | $1.09/磅 |\n");
printf("|**********|****************************************|****************************************|\n");
printf("| 按p结束购买 按q退出 |\n");
printf("|********************************************************************************************|\n");
printf("现在请您开始购买");
printf("请选择您要购买的品种\n");
scanf("%c",&ch);
getchar();
if(ch=='q')
{
return 0;
}
while(ch!='p')
{
printf("请输入您要购买的数量\n");
scanf("%f",&m);
getchar();
switch(ch)
{
case 'a':
A=A+m;
break;
case 'b':
B=B+m;
break;
case 'c':
C=C+m;
break;
}
printf("请选择您要购买的品种\n");
scanf("%c",&ch);
getchar();
if(ch=='q')
{
return 0;
}
}
printf("您已购买结束"!\n");
sum_money=A*2.05+B*1.15+C*1.09;
if(sum_money<100)
{
discount=0;
real_sum_money=sum_money;
}
else
{
discount=sum_money*0.15;
real_sum_money=sum_money*(1-0.15);
}
sum_ABC=A+B+C;
if(sum_ABC<=5)
{
freight=6.5;
}else if(sum_ABC<=20)
{
freight=14;
}
else
{
freight=14+(sum_ABC-14)*0.5;
}
sums=real_sum_money+freight;
printf("|**************|****************|****************|****************|\n");
printf("|**************|* 物品售价 *|* 订购重量 *|* 蔬菜费用 *|\n");
printf("|* 洋蓟 *| $2.05/磅 | % 8.2f | % 8.2f |\n",A,A*2.05);
printf("|* 甜菜 *| $1.15/磅 | % 8.2f | % 8.2f |\n",B,B*1.15);
printf("|* 胡萝卜 *| $1.09/磅 | % 8.2f | % 8.2f |\n",C,C*1.09);
printf("|**************|****************|****************|****************|\n");
printf("|* 订单费用 *|****************|****************| % 8.2f |\n",sum_money);
printf("|* 折扣 *|****************|****************| % 8.2f |\n",discount);
printf("|*运费和包装费*|****************|****************| % 8.2f |\n",freight);
printf("|* 总费用 *|****************|****************| % 8.2f |\n",sums);
printf("|**************|****************|****************|****************|\n");
return 0;
}
完