刚学c语言不久,好多不会,求解
1111111111111111111111111
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int findRepeatNumber(int *nums, int *b, int numsSize);
int
main(int argc, char *argv[]) {
int n; // 班级一共几个人,最大30
while(scanf("%d",&n)!=EOF) {
int a[n]; // 班级人数投票结果的最大可能
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int len = sizeof(a) / sizeof(a[0]);
int *b = (int *) calloc(len, sizeof(int));
memset(b, -1, len);
int blen = findRepeatNumber(a, b, len);
for (int i = 0; i < blen; i++) {
printf("%d ", b[i]);
}
printf("\n");
}
return 0;
}
int findRepeatNumber(int *nums, int *b, int numsSize) {
int blen = 0;
for (int i = 0; i < numsSize; i++) {
b[blen] = -1;
for (int j = 0; j < numsSize && i != j; j++) {
if (nums[i] == nums[j]) { //找到重复选号
int has = 0;
for (int k = 0; k < blen; k++) { //从b中找这个数字
if (nums[i] == b[k]) {
has = 1;
break;
}
}
if (has == 0) {
b[blen++] = nums[i];
}
}
}
}
return blen;
}
多组循环输入输出问题
借助循环遍历找出最大值,对最大的值,进行统计记录,记录下其编号;
之后进行输出即可。
如果有多个,就建立一个辅助数组存储起来,之后按编号从小到大输出。
#include <stdio.h>
int main()
{
int n;//n个同学
while(scanf("%d",&n)!=EOF)
{
int a[105] = {0};
for(int i=1;i<=n;i++)
{
int t;
scanf("%d",&t);
a[t]++;
}
int temp = a[1];
int no = 1;//代表最多票数的同学
int num = 0;//代表有多个
for(int i=2;i<=n;i++)
{
if(temp<a[i])
{
temp = a[i];
no = i;
num = 1;
}else if(temp==a[i]){
num++;
}
}
if(num == 1)
{
printf("%d\n",no);
}else{
for(int i=1;i<=n;i++)
{
if(a[i]==temp)
{
printf("%d ",i);
}
}
printf("\n");
}
}
return 0;
return 0;
}
如果对您有帮助,记得采纳呐!