版权声明:本文为博主原创文章,未经博主允许不得转载! https://blog.csdn.net/weixin_42839965/article/details/89485504
/*
1、编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数、
和所有其他字符的数量。
*/
#include <stdio.h>
#include<ctype.h>
#define STOP '#'
int main(void)
{
char ch;
int linescount = 0; //换行符数
int spacecount = 0; //空格数
int otherscount = 0; //其他字符的数量
printf("请输入字符:\n");
while((ch = getchar()) != STOP)
{
if (ch==' ')
spacecount++;
if (ch == '\n')
linescount++;
else
otherscount++;
}
printf("spacecount=%d,linescount=%d,otherscount=%d,\n", spacecount, linescount,otherscount);
return 0;
}
/*
2、编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的ASCII码(十进制)。
一行打印8个字符。建议:使用字符计数和求模运算符(%)在每8个循环周期时打印一个换行符。
每行打印8个“字符-ASCII码”组合。
*/
#include <stdio.h>
int main(void)
{
int count = 0;
char ch;
printf("请输入字符(#字符停止):\n");
while ((ch = getchar()) != '#')
{
count++;
printf("%c,%d\t", ch, ch);
if (count % 8 == 0)
{
printf("\n");
count = 0;
}
}
printf("\n");
return 0;
}
/*
3、编写一个程序,读取整数直到用户输入0,。输入结束后,程序应报告用户输入的偶数(不包括0)
个数、这些偶数的平均值、输入的奇数个数及其奇数的平均值。
*/
#include <stdio.h>
int main(void)
{
int index;
int count1 = 0, count2 = 0;
float sum1 = 0, sum2 = 0;
float average1, average2;
printf("请输入整数(0停止):\n");
while (scanf("%d", &index) && index != 0)
{
if (index % 2 == 0)
{
count1++;
sum1 += index;
average1 = sum1 / count1;
}
else
{
count2++;
sum2 += index;
average2 = sum2 / count2;
}
}
if (count1)
printf("偶数的个数是%d,平均值是%.2f\n", count1, average1);
else
printf("未输入偶数!\n");
if (count2)
printf("奇数的个数是%d,平均值是%.2f\n", count2, average2);
else
printf("未输入奇数!\n");
return 0;
}
/*4、使用if else语句编写一个程序读取输入,读到#停止。用感叹号替换句号,
用两个感叹号替换原来的感叹号,最后报告进行了多少次替换。*/
#include <stdio.h>
int main(void)
{
char ch;
int count = 0;
printf("请输入字符(标点为英文输入,#停止):\n");
while ((ch = getchar()) != '#')
{
if (ch == '.' )
{
putchar('!');
count++;
}
else if (ch == '!')
{
putchar('!');
putchar('!');
count++;
}
else
putchar(ch);
}
printf("\n");
printf("替换的次数为count=%d.\n", count);
return 0;
}
/*5、使用switch语句编写一个程序读取输入,读到#停止。用感叹号替换句号,
用两个感叹号替换原来的感叹号,最后报告进行了多少次替换。*/
#include <stdio.h>
int main(void)
{
char ch;
int count = 0;
printf("请输入字符(标点为英文输入,#停止):\n");
while ((ch = getchar()) != '#')
{
switch (ch)
{
case '.':
{
putchar('!');
count++;
break;
}
case '!':
{
putchar('!');
putchar('!');
count++;
break;
}
default:
putchar(ch);
}
}
printf("\n");
printf("替换的次数为count=%d.\n", count);
return 0;
}
/*
6、编写程序读取输入,读到#停止,报告ei出现的次数。
注意:
该程序要记录前一个字符和当前字符,用"Receive your eieio award"这样的输入来测试。
*/
#include<stdio.h>
#define STOP '#'
int main(void)
{
char ch;
int count=0;
printf("请输入字符(#停止):\n");
while ((ch = getchar()) != STOP)
{
if (ch == 'e')
{
ch = getchar();
if (ch == 'i')
count++;
}
}
printf("ei出现的次数是:%d\n",count);
return 0;
}
/*
7、编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金和净收入。
做如下假设:
a.基本工资=10.00美元/小时
b.加班(超过40小时)=1.5倍的时间
c.税率: 前300美元为15%
续150美元为20%
余下的为25%
用#define定义符号常量,不用在意是否符合当前税法。
*/
#include <stdio.h>
#define B_WAGE 10.00 //基本工资
#define OVERTIME 1.5 //加班
#define TAX_RATE1 0.15 //前300美元的税率
#define TAX_RATE2 0.2 //续150美元的的税率
#define TAX_RATE3 0.25 //余下的税率为25%
#define TAX1 45 //前300美元的税金
#define TAX2 75 //前450美元的税金
int main(void)
{
double index;//一周工作的小时数
double tax;//税金
double wage; //工资总额
double income;//净收入
printf("请输入一周工作的小时数(精确到小数点后两位):");
scanf_s("%lf", &index);
if (index <= 40)
{
wage = index*B_WAGE;
if (wage > 300)
tax = (wage - 300)*TAX_RATE2 + TAX1;
else
tax = wage*TAX_RATE1;
}
else
{
wage =400+(index-40)*OVERTIME*B_WAGE;
tax = (wage - 450)*TAX_RATE3 + TAX2;
}
income = wage - tax;
printf("工资总额为:%.2f,净收入:%.2f,税金为:%.2f\n", wage, income, tax);
if (!index)
printf("未工作,因此收入为零!\n");
printf("Done!\n");
return 0;
}
/*
8、修改练习7的假设a,让程序可以给出一个供选择的工资等级菜单。
使用switch完成工资等级选择。运行程序后,显示菜单应该类似这样:
*****************************************************************
Enter the number corresponding to the desired pay rate or action:
1)$8.75/hr 2)$9.33/hr
3)$10.00/hr 4)$11.20/hr
5)quit
*****************************************************************
如果选择1~4其中的一个数字,程序应询问用户工作的小时数。程序要通过循环运行,
除非用户输入5。如果输入1~5之外的数字,程序应提醒用户输入正确的选项,然后
再重复显示菜单提示用户输入。使用#define创建符号常量表示各工资等级和税率。
*/
#include <stdio.h>
#include<stdbool.h>
#define TAX_RATE1 0.15//前300美元的税率
#define TAX_RATE2 0.2//续150美元的税率
#define TAX_RATE3 0.25//超过450美元的税率
#define OVERTIME 1.5//加班(超过40小时)按照1.5倍时间计算
int main(void)
{
int num;//用于输入工资等级
double hours;//用于提示工作小时数
double wage;//工资等级数额
double income;//净收入
double tax;//税金
double money;//工资总额
bool puanduan=false;
printf("*****************************************************************\n");
printf("Enter the number corresponding to the desired pay rate or action:\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");
printf("请根据菜单输入工资号1-4:");
while (scanf_s("%d", &num) == 1 && num != 5)
{
if (1 <= num&&num < 5)
{
puanduan = true;
printf("请输入工作时间(小时数):");
scanf_s("%lf", &hours);
}
switch (num)
{
case 1:
wage = 8.75;
break;
case 2:
wage = 9.33;
break;
case 3:
wage = 10.00;
break;
case 4:
wage = 11.2;
break;
default:
printf("请输入正确选项!\n");
break;
}
printf("*****************************************************************\n");
printf("Enter the number corresponding to the desired pay rate or action:\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");
printf("请根据菜单输入工资号1-4:");
}
if (puanduan)
{
money = (hours > 40) ? (wage * 40 + (hours - 40)*OVERTIME*wage) : (wage*hours);
printf("工资总额是%.3lf\n", money);
if (money <= 300)
tax = money*TAX_RATE1;
else if (300 < money&&money <= 450)
tax = 300 * TAX_RATE1 + (money - 300)*TAX_RATE2;
else
tax = 300 * TAX_RATE1 + 150 * TAX_RATE2 + (money - 450)*TAX_RATE3;
printf("税金是%.3lf\n", tax);
income = money - tax;
printf("净收入是%.3lf\n", income);
}
printf("Done!\n");
return 0;
}
/*
9、 编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数
*/
#include<stdio.h>
#include<stdbool.h>
int main(void)
{
int index;
int i, j;
bool isprime;
printf("请输入正整数:");
while (scanf("%d", &index) == 1)
{
if (index == 1)
printf("这不是素数!\n");
if (index == 2)
printf("这是素数!\n");
for (i = 3; i <= index; i++)
{
for (j = 2, isprime = true; j < i; j++)
if (i%j == 0)
//printf("%d是素数!\n", i);
isprime = false;
if (isprime)
printf("%d是素数!\n", i);
}
printf("请继续输入正整数:");
}
printf("BYB!\n");
return 0;
}
/*
10、1988年的美国联邦税收计划是近代最简单的税收方案。它分为4个类别,每个类别
有两个等级。下面是该税收计划的摘要(美元数应为应征税的收入):
类别 |税金
单身 |17850美元按15%计,超出部分按28%计
户主 |23900美元按15%计,超出部分按28%计
已婚,共有 |29750美元按15%计,超出部分按28%计
已婚,离异 |14875美元按15%计,超出部分按28%计
例如,一位工资为20000美元的单身纳税人,应缴纳税费0.15X17580+(20000-17850)X0.28
美元。编写一个程序,让用户指定缴纳税金的种类和应纳税收入,然后计算税金。
程序应通过循环让用户可以多次输入。
*/
#include <stdio.h>
#define TAX_RATE1 0.15
#define TAX_RATE2 0.28
int main(void)
{
int index;
double money;
double tax;
double tax_money;
printf("类别 税金\n");
printf("1、单身 17850美元按0.15计,超出部分按0.28计\n");
printf("2、户主 23900美元按0.15计,超出部分按0.28计\n");
printf("3、已婚,共有 29750美元按0.15计,超出部分按0.28计\n");
printf("4、已婚,离异 14875美元按0.15计,超出部分按0.28计\n");
printf("请输入应缴纳税金的类别(1-4):");
while (scanf_s("%d", &index) == 1)
{
printf("请输入应纳税收入:");
scanf_s("%lf", &money);
switch (index)
{
case 1:
tax_money = 17850;
break;
case 2:
tax_money = 23900;
break;
case 3:
tax_money = 29750;
break;
default:
tax_money = 14875;
break;
}
tax = (money - tax_money)*TAX_RATE2 + TAX_RATE1*tax_money;
printf("缴纳税金的种类是:%d,应纳税收入是:%.3lf,税金是:%.3lf\n", index, money, tax);
printf("类别 税金\n");
printf("1、单身 17850美元按0.15计,超出部分按0.28计\n");
printf("2、户主 23900美元按0.15计,超出部分按0.28计\n");
printf("3、已婚,共有 29750美元按0.15计,超出部分按0.28计\n");
printf("4、已婚,离异 14875美元按0.15计,超出部分按0.28计\n");
printf("请输入应缴纳税金的类别(1-4):");
}
printf("Done!\n");
return 0;
}
/*
11、ABC邮购杂货店出售的洋蓟售价为2.05美元/磅,甜菜的售价为1.15美元/磅,
胡萝卜的售价为1.09美元/磅。在添加运费之前,超过100美元的订单有5%的打折优惠。
少于或等于5磅的订单收取6.5美元的运费和包装费,5磅~20磅的订单收取14美元的
运费和包装费,超过20磅的订单在14美元的基础上每续重1磅增加0.5美元。编写一个
程序,在循环中用switch语句实现用户输入不同的字母时有不同的响应,即输入a的响应
是让用户输入洋蓟的磅数,b是甜菜的磅数,c是胡萝卜的磅数,q是退出订购。
程序要记录累计的重量。即如果用户输入4磅的甜菜,然后输入5磅的甜菜,程序应
报告9磅的甜菜。然后,该程序要计算货物的总价、折扣(如果有的话)、运费和包装费。
随后,程序应显示所有的购买信息:物品售价、订购的重量(单位:磅)、订购的蔬菜
费用、订单的总费用、折扣(如果有的话)、运费和包装费,以及所有的费用总额。
*/
#include <stdio.h>
int main(void)
{
double artichoke;//洋蓟
double artichoke_w = 0;
double beet;//甜菜
double beet_w = 0;
double carrot;//胡萝卜
double carrot_w = 0;
double money;//所有的费用总额
double weight;//订购的重量
double feiyong;//订购的蔬菜费用
double zongfeiyong;//订单的总费用
double yunfei;//运费和包装费
char ch;
int num;
printf(" 菜单、售价(美元/磅):\n");
printf(" a)洋蓟->2.05 b)甜菜->1.15\n");
printf(" c)胡萝卜->1.09 d)q退出订购\n");
printf("请输入菜单选项(a-c/q):");
while ((ch = getchar()) != 'q')
{
switch (ch)
{
case 'a':
printf("请输入洋蓟的重量(磅):");
scanf_s("%lf", &artichoke);
artichoke_w += artichoke;
break;
case 'b':
printf("请输入甜菜的重量(磅):");
scanf_s("%lf", &beet);
beet_w += beet;
break;
case 'c':
printf("请输入胡萝卜的重量(磅):");
scanf_s("%lf", &carrot);
carrot_w += carrot;
break;
default:
printf("请核对输入选项!\n");
break;
}
printf("请继续输入菜单选项(a-c/q):");
getchar();//将存于缓冲区中的回车符读入,避免在后面作为有效字符读入
}
if (artichoke_w)
printf("订购的洋蓟的重量(磅):%.2lf\n", artichoke_w);
if(beet_w)
printf("订购的甜菜的重量(磅):%.2lf\n", beet_w);
if(carrot_w)
printf("订购的胡萝卜的重量(磅):%.2lf\n", carrot_w);
weight = artichoke_w + beet_w + carrot_w;
printf("订购的总重量是:%.2lf\n", weight);
printf("\n");
printf(" 运费和包装费价格表(美元)\n");
printf("1.少于或等于5磅->6.5 2.5~20磅->14\n");
printf("3.超过20磅,在14美元的基础上每续重1磅增加0.5美元\n");
printf("注:按q键退出!\n");
printf("请根据实际重量输入选项(1-3/q):");
while (scanf("%d", &num) == 1)
{
switch (num)
{
case 1:
yunfei = 6.5;
printf("运费与包装费为%.3lf美元\n", yunfei);
break;
case 2:
yunfei = 14;
printf("运费与包装费为%.3lf美元\n", yunfei);
break;
case 3:
yunfei = 14 + (weight - 20)*0.5;
printf("运费与包装费为%.3lf美元\n",yunfei);
break;
default:
printf("请输入正确选项!\n");
break;
}
printf("请继续输入选项(1-3/q):");
}
if (weight)
{
feiyong = 2.05*artichoke_w + 1.15*beet_w + 1.09*carrot_w;
printf("订购蔬菜的费用为:%.3lf美元\n", feiyong);
if (feiyong >= 100)
{
zongfeiyong = feiyong*0.05;
printf("订单的折扣为5%,订单的总费用为%.3lf美元\n", zongfeiyong);
}
zongfeiyong = feiyong;
printf("订单的总费用为:%.3lf美元\n", zongfeiyong);
money = zongfeiyong + yunfei;
printf("所有的费用总和为%.3lf美元\n", money);
}
else
printf("您还未消费,欢迎选购!\n");
printf("Good Luck!\n");
return 0;
}
感觉很麻烦,可能后期会更改!