2018年11月30日学习总结

7-22 查询水果价格

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit

用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:
输入在一行中给出用户连续输入的若干个编号。

输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:

3 -1 0 2

输出样例1:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00

输入样例2:

1 2 3 3 4 4 5 6 7 8

输出样例2:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20

编辑方法主要有两种

方案一(利用数组)

#include<stdio.h>
int main(void)
{
	int i=0,j,a[100];
	printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
	do
	{
		scanf("%d",&a[i++]);
	}while (getchar()!='\n');
	for(j=0;j<=4&&j<i;j++)
	{
			if(a[j]==0) break;
		switch(a[j])
		{
			case 1: printf("price = 3.00\n");break;
			case 2: printf("price = 2.50\n");break;
			case 3: printf("price = 4.10\n");break;
			case 4: printf("price = 10.20\n");break;
			default:printf("price = 0.00\n");break;
		}
	}
	return 0;
}

方案二(利用for循环结构反复执行子程序)

#include<stdio.h>
int main(void)
{
    int choice;
    double price;
    int i;
    printf("[1]apple\n");
    printf("[2]pear\n");
    printf("[3]orange\n");
    printf("[4]grape\n");
    printf("[0]exit\n");
    for(i=1;i<=5;i++)
    {
        scanf("%d",&choice);
    switch(choice)
    {
    case 0:break;
    case 1:price=3.00;break;
    case 2:price=2.50;break;
    case 3:price=4.10;break;
    case 4:price=10.20;break;
    default:price=0.00;break;
    }
    if(choice==0)
        break;
    printf("%.2f",price);
}
    return 0;
}

作者:一只想当程序员的小辣鸡
来源:CSDN
原文:https://blog.csdn.net/bokaicao/article/details/78070231

拓展:

通过循环结构,反复执行c程序
例如:

#include<stdio.h>
int main(void)
{
	char c;
	c = getchar();
	while(c!=' ')//输入空格退出
	{
		printf("%c", c);//这里改成你需要的那个函数做相应的工作就可以了
		c = getchar();
	}
	return 0;
}

可以对模板程序进行修改,完成不同的功能。如本题中可以按照输入的数值匹配价格输出。

7-19 三天打鱼两天晒网

利用函数的嵌套解决

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入格式:
输入在一行中给出一个不超过1000的正整数N。

输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。

输入样例1:

103

输出样例1:

Fishing in day 103

输入样例2:

34

输出样例2:

Drying in day 34

#include <stdio.h>
int main()
{
	void print_day(int x,int y);
	int day=0,a=0;
	scanf("%d",&day);
	a=day;
	print_day(a,day);
	return 0;
}
void print_day(int x,int y)
{
	if(x<=5)
	{
		if(x<=3&&x>0)
			printf("Fishing in day %d\n",y);
		else
			printf("Drying in day %d\n",y);
	}
	else print_day(x%5,y);
}

你可能感兴趣的:(c语言学习经验)