网站程序包括数据库和网页程序,学生云服务器,免费浏览网站推广,咨询网站 模板“我是歌手”是成名歌手之间的比赛节目#xff0c;2轮比赛中观众支持率最低者出局。
这里我们假设有n个歌手进行了m轮比赛#xff0c;请求出局者#xff08;m轮总分最低者#xff09;。
输入n个歌手#xff08;编号依次为1#xff0c;2#xff0c;......n#xff09;…“我是歌手”是成名歌手之间的比赛节目2轮比赛中观众支持率最低者出局。
这里我们假设有n个歌手进行了m轮比赛请求出局者m轮总分最低者。
输入n个歌手编号依次为12......nm轮比赛的成绩输出出局者m轮总分b最低者的编号。若有多个歌手的总分都是最低则出局者是编号最小者。
输入格式
输入数据的第一行为一个正整数T1T20表示测试数据的组数。然后是T组测试数据每组测试数据先输入两个正整数nmnm10然后是m行输入每行按次序输入n个歌手在该轮的得分均为非负整数。
输出格式
对于每组测试在一行上输出出局者的编号。
输入样例 1 3 2 91 92 93 98 95 94 输出样例 2 #includestdio.h
#includestring.h
#define MAXN 1005
int t, n, m, a[MAXN];//a[MAXN]表示每个歌手在m轮比赛中的总得分
int main()
{scanf(%d, t);while (t--)
//每次循环表示对于一组数据的处理{memset(a, 0, sizeof a);
//初始化a数组为0以保证累加歌手得分时不产生干扰scanf(%d%d, n, m);for (int i 0; i m; i){
//第一重循环枚举比赛的轮数for (int j 0; j n; j){
//第二重循环枚举歌手的分数int x;
//定义x表示每个歌手的当前比赛得分scanf(%d, x);a[j] x;
//累加每个歌手的总分}}int k 0;
//定义变量k表示出局者的编号以0号歌手为初始值for (int i 1; i n; i)
//循环找出出局者{if (a[i] a[k])k i;}printf(%d\n, k 1);}return 0;
}使用一个数组来存储每个歌手的总分然后扫描这个数组找到总分最低的歌手并输出编号即可。 首先定义一个数组a用于存储每个歌手的总分初始化数组a使用memset函数把数组a的每一个元素都设为0memset 函数是 C 语言中的内存函数功能是用一个指定的字符填充一段内存区域也就是将一段内存区域的内容全部设置为一个字符。 void *memset(void *s, int c, size_t n); 参数
s指向要填充的内存区域的指针c填充的字符n填充的内存区域的大小单位字节
返回值指向 s 的指针也就是填充后的内存区域的首地址。 循环读入m轮比赛的成绩对于每轮的成绩循环读入n个歌手的成绩并把读入的每个歌手的成绩加到对应的数组a的元素上定义一个变量k初始化为0循环扫描数组a从第一个元素开始如果a[i]比a[k]更小则把k设为i最后输出k 1因为数组a是从0开始存储的而歌手的编号是从1开始的。如果不使用memset函数可以通过循环将数组中的每一项赋值为0。 例如 for (int i 0; i n; i) { a[i] 0; } 这样就能达到将数组中的每一项赋值为0的目的与memset函数的作用相同。