前言:今天是咱们第七期刷牛客网上的题目。
目标:可以掌握循环嵌套,逻辑思维更加清晰,对循环知识掌握熟练。
鸡汤:城市人潮拥挤,别走丢了自己。先干为敬,大家随意。
我这里采用循环的形式来解决,有点大材小用,但是技多不压身。
#include
int main()
{
//初始化
int n = 0;
int arr[3] = { 2,3,7 };//定义被除数
int i = 0;
int count = 0;//计入次数
//输入
scanf("%d", &n);
//判断
for (i = 0; i < 3; i++)
{
if (n % arr[i] == 0)
{
printf("%d ", arr[i]);
}
else
{
count++;
}
}
//如果 2 3 7都不能除尽
if (count == 3)
{
printf("n\n");
}
return 0;
}
可别忘了 0 既不是正数也不是负数
#include
int main()
{
//定义数组
int arr[10] = { 0 };
int i = 0;
int positive_num = 0;
int minus = 0;
//输入十个数字,并且判断
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
//统计负数
if (arr[i] < 0)
{
minus++;
}
//统计正数
if (arr[i] > 0)
{
positive_num++;
}
}
printf("positive:%d\n", positive_num);
printf("negative:%d\n", minus);
return 0;
}
我可能做的有点笨,但是思路清晰,对不对
#include
int main()
{
//初始化
double val = 0;
int month = 0;
int day = 0;
int roll = 0;
double money = 0;
//输入
scanf("%lf %d %d %d", &val, &month, &day, &roll);
//判断
//不是双12也不是双11
if ((month != 12 || day != 12) || (month != 11 || day != 11))
{
if (roll == 1)
{
//金钱数小于50
if (money < 50)
{
money = 0;
}
//金钱数大于等于50
else
{
money = money - 50;
}
}
}
//是双11
if (month == 11 && day == 11)
{
money = val * 0.7;
if (roll == 1)
{
if (money < 50)
{
money = 0;
}
else
{
money = money - 50;
}
}
}
//是双12
if (month == 12 && day == 12)
{
money = val * 0.8;
if (roll == 1)
{
if (money < 50)
{
money = 0;
}
else
{
money = money - 50;
}
}
}
printf("%0.2lf", money);
return 0;
}
#include
int main()
{
//定义变量
float a;
char b;
int money = 20;
//输入
scanf("%f %c", &a, &b);
//判断
//当包裹大于 0 并且小于 1
if (a > 0 && a <= 1)
{
//判断是否需要快送
if (b == 'y')
printf("25");
else
printf("20");
}
//当包裹大于 1
if (a > 1)
{
money = money + ceil(a - 1);
//判断是否需要快送
if (b == 'y')
printf("%d", money + 5);
else
printf("%d", money);
}
}
这里出现一道c++的题目,但是写起来没问题的。
#include
#include
using namespace std;
int main() {
double price;
cin >> price;
double cost = 0.0;
// write your code here.......
if(price>=100&&price<500)
cost=price*0.9;
else if(price>=500&&price<2000)
cost=price*0.8;
else if(price>=2000&&price<5000)
cost=price*0.7;
else if(price>=5000)
cost=price*0.6;
cout << setiosflags(ios::fixed) << setprecision(1) << cost << endl;
return 0;
}
这里我用了三目操作符,不知道大家还记不记得。
#include
int main()
{
//初始化
int a;
float taxi;
//输入
scanf("%d", &a);
//计算打车时间
taxi = a / 10.0 + 10;
//打印
printf("%c\n", a < taxi ? 'w' : 'v');
return 0;
}
其实这道题还是比较基础的,可别写着写着就搞混啦。
#include
int main()
{
//定义变量
int x, y, x1, y1;
//输入
scanf("%d %d\n%d %d", &x, &y, &x1, &y1);
//判断
if (x1 - x == 0 && y1 > y)
printf("u");
else if (x1 - x == 0 && y1 < y)
printf("d");
else if (x1 > x && y1 - y1 == 0)
printf("r");
else if (x1 < x && y1 - y1 == 0)
printf("l");
return 0;
}
这里有更好的解法,我写成下面的代码的样子,目的是让大家再巩固巩固switch语句。大家有更好的解法,留言给大家看看
#include
int main()
{
//初始化
int a = 0;
//输入
scanf("%d", &a);
switch (a)
{
case 1:
printf("Monday"); break;
case 2:
printf("Tuesday"); break;
case 3:
printf("Wednesday"); break;
case 4:
printf("Thursday"); break;
case 5:
printf("Friday"); break;
case 6:
printf("Saturday"); break;
case 7:
printf("Sunday");break;
}
return 0;
}
多组输入别忘了要吸收 \n
**~scanf(“%d”, &a)这里和scanf(“%d”,&a) != EOF**是一样的。
#include
int main()
{
//初始化
int a = 0;
//实现多组输入
while (~scanf("%d", &a))
{
//吸收 \n
getchar();
switch (a)
{
case 200:
printf("OK\n"); break;
case 202:
printf("Accepted\n"); break;
case 400:
printf("Bad Request\n"); break;
case 403:
printf("Forbidden\n"); break;
case 404:
printf("Not Found\n"); break;
case 500:
printf("Internal Server Error\n"); break;
case 502:
printf("Bad Gateway\n");
}
}
return 0;
}
其实上面的几道题都是相似的。
#include
int main()
{
//初始化
int a = 0;
//多组输入
while (scanf("%d", &a) != EOF)
{
//判断
if (a > 0)
printf("1\n");
else if (a == 0)
printf("0.5\n");
else
printf("0\n");
}
return 0;
}
今天的刷题内容就到这里啦,如果上面的题目你有更优的解法,请打在下面的评论区中,独乐乐不如众乐乐。麻烦大家举起自己的小手,给博主三连,有你们的支持就是我最大的动力。预知后事如何,且听下回分解。