前言:今天是咱们第七期刷牛客网上的题目。
目标:可以掌握循环嵌套,逻辑思维更加清晰,对循环知识掌握熟练。
鸡汤:城市人潮拥挤,别走丢了自己。先干为敬,大家随意。
🚩第一题
我这里采用循环的形式来解决,有点大材小用,但是技多不压身。
#include<stdio.h> 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<stdio.h> 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 <stdio.h> 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 <math.h> 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 <iostream> #include <iomanip> 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 <stdio.h> int main() { //初始化 int a; float taxi; //输入 scanf("%d", &a); //计算打车时间 taxi = a / 10.0 + 10; //打印 printf("%c\n", a < taxi ? 'w' : 'v'); return 0; }
🚩第七题
其实这道题还是比较基础的,可别写着写着就搞混啦。
#include <stdio.h> 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 <stdio.h> 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 <stdio.h> 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<stdio.h> 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; }
结束语
今天的刷题内容就到这里啦,如果上面的题目你有更优的解法,请打在下面的评论区中,独乐乐不如众乐乐。