1630. 有多少种子

这是一道很水的题,主要的难点在统计种子个数和打印。

如果要统计种子个数,可以开一个数组grade,其中数组下标表示种子种类。输入种子种类后进行遍历,如果输入的数字与数组下标相等则相应种子个数加一。

如果要打印,则可以开一个string数组存种子名称。打印种子个数时,可以开一个char数组存符号‘’,使用一个char 函数打印相应的种子个数(此法略麻烦且耗时)。还有一种方式是在打印时多用一个for循环来打印符号‘*’,这种方法简单且有效,但留给读者自行探索。 现在附上代码

#include <stdio.h> #include <string> #include <iostream> #include <iomanip> using namespace std; char arr[1000];//定义个存‘*’的数组 用全局会方便点 //小麦 大麦 黑麦 燕麦 荞麦 //1 2 3 4 5 char *xin(int n)//一个改变arr数组存的‘*’的函数 { int i; for (i = 0; i < 10; i++)//初始化数组 { arr[i] = '\0'; } for (i = 0; i < n; i++)//存‘*’ { arr[i] = '*'; } return arr; } int main() { int day; string varieties[5] = {"Wheat", "Barley", "Rye", "Oats", "Buckwheat"}; scanf("%d", &day); int grade[11] = {0}, num; int i = 1; int n; for (n = 0; n < day; n++) { scanf("%d", &num); for (i = 1; i <= 5; i++)//遍历进行匹配 { if (num == i) { grade[i]++; } } } cout << setiosflags(ios::left) << setw(16) << "Varieties" << "Seeds\n";//这里是左对齐,详情请百度 for (i = 1; i <= 5; i++) { cout << setiosflags(ios::left) << setw(16) << varieties[i - 1] << setiosflags(ios::left) << setw(16) << xin(grade[i]) << endl; } return 0; }