编写程序:从键盘输入n(0<n<100)个整数,计算并输出其中出现次数最多且数值最大的元素及其出现次数。
这个程序查询结果是不是可以理解为:先计算次数出现最多的,在出现次数相等的情况下,数值最大的? 因为这个问题是有矛盾的,出现次数最多的不一定数值最大 用c++写的,思路都在,vb很久没有用了。不想去看了。希望思路对你有用 #include<iostream.h> void main() { int a[100],b[100]={0}; //数组a中存放输入的整数,数组b中存放对应整数出现的次数(a[i]中整数出现的次数放在b[i]中 int m=0,n,x,k,maxa,maxb; cout<<"请输入整数个数:"<<endl; cin>>n; for(int i=0;i<n;i++) //该循环将输入n 个整数 { cin>>x; for(int j=0;j<m;j++) //每输入一个数与当前a[i]数组进行比较,看该数是否存在,若存在则对应b[i]累加。并且跳出循环 { if(a[j]==x) { b[j]++; break; } } if(j==m)//当j=m表名当前输入的数据a中不存在,所以将其插入数组a中,并接对应b[i] 计数; { m++; a[m]=x; b[j]++; } } maxa=a[0];maxb=b[0]; for( i=1;i<m;i++) //该循环求数组a,b中最大值得到最后结果 { if(a[i]>maxa)maxa=a[i]; if(b[i]>maxb){maxb=b[i];k=i;} } cout<<"n个数中出现次数最多的数是"<<a[k]<<"出现的次数为:"<<b[k]<<endl; cout<<"n个数中最大的数是"<<maxa<<endl; }
1:次数最多
2:在次数最多的基础上,数值最大
_______________________________________________以下为程序:
#include
// 设置最大值
#define MAX 100
typedef struct record
{
int number[MAX];
int counter[MAX];
}record;
int isExist(int array[], int index, record rd)
{
int i;
int flag = -1;
bool finish = true;
for (i = 0; i < index && finish; i++)
{
if (array[index] == rd.number[i])
{
flag = i;
finish = false;
}
}
return flag;
}
int findMaxNumber(record rd, int index)
{
int i = 0;
int flag = 0;
int maxNumber = rd.number[0];
int maxCounter = rd.counter[0];
while (i < index)
{
if (rd.counter[i] > maxCounter)
{
flag = i;
maxNumber = rd.number[i];
maxCounter = rd.counter[i];
}
else if (rd.counter[i] == maxCounter)
{
if (rd.number[i] > maxNumber)
{
flag = i;
maxNumber = rd.number[i];
maxCounter = rd.counter[i];
}
}
i++;
}
return flag;
}
int main()
{
int i;
int N;
int arr[MAX];
record rd;
int ct;
int find;
// 初始化结构体
for (i = 0; i < MAX; i++)
{
rd.counter[i] = 0;
rd.number[i] = 0;
}
// 输入整数的个数N
printf("Enter N (0<N<100): ");
scanf("%d", &N);
// 采用数组记录输入的整数
printf("Enter %d number : ", N);
for (i = 0; i < N; i++)
{
scanf("%d", &arr[i]);
}
ct = 0;
i = 0;
while (i < N)
{
int tempFlag;
tempFlag = isExist(arr, i, rd);
if (tempFlag == -1)
{
rd.number[ct] = arr[i];
rd.counter[ct]++;
ct++;
}
else
{
rd.counter[tempFlag]++;
}
i++;
}
find = findMaxNumber(rd, ct);
printf("Max Number: %d, Max Counter: %d
", rd.number[find], rd.counter[find]);
return 0;
}
——————————————————————————————
因为这个问题是有矛盾的,出现次数最多的不一定数值最大
用c++写的,思路都在,vb很久没有用了。不想去看了。希望思路对你有用
#include<iostream.h>
void main()
{
int a[100],b[100]={0}; //数组a中存放输入的整数,数组b中存放对应整数出现的次数(a[i]中整数出现的次数放在b[i]中
int m=0,n,x,k,maxa,maxb;
cout<<"请输入整数个数:"<<endl;
cin>>n;
for(int i=0;i<n;i++) //该循环将输入n 个整数
{
cin>>x;
for(int j=0;j<m;j++) //每输入一个数与当前a[i]数组进行比较,看该数是否存在,若存在则对应b[i]累加。并且跳出循环
{
if(a[j]==x)
{
b[j]++;
break;
}
}
if(j==m)//当j=m表名当前输入的数据a中不存在,所以将其插入数组a中,并接对应b[i] 计数;
{
m++;
a[m]=x;
b[j]++;
}
}
maxa=a[0];maxb=b[0];
for( i=1;i<m;i++) //该循环求数组a,b中最大值得到最后结果
{
if(a[i]>maxa)maxa=a[i];
if(b[i]>maxb){maxb=b[i];k=i;}
}
cout<<"n个数中出现次数最多的数是"<<a[k]<<"出现的次数为:"<<b[k]<<endl;
cout<<"n个数中最大的数是"<<maxa<<endl;
}
编写程序:从键盘输入n(0<n<100)个整数,计算并输出其中出现次数最多且...
{ int a[100],b[100]={0}; \/\/数组a中存放输入的整数,数组b中存放对应整数出现的次数(a[i]中整数出现的次数放在b[i]中 int m=0,n,x,k,maxa,maxb;cout<<"请输入整数个数:"<<endl;cin>>n;for(int i=0;i<n;i++) \/\/该循环将输入n 个整数 { cin>>x;for(int j=0;j<m...
用C语言编写一个程序:从键盘输入n(0<N<100)个整数,计算并输出其中出现...
int arr[MAX];record rd;int ct;int find;\/\/ 初始化结构体 for (i = 0; i < MAX; i++){ rd.counter[i] = 0;rd.number[i] = 0;} \/\/ 输入整数的个数N printf("Enter N (0<N<100): ");scanf("%d", &N);\/\/ 采用数组记录输入的整数 printf("Enter %d number : ", N...
...从键盘输入一个整数n(0<n<=20),然后输入n个整数,实现把奇数_百度知 ...
define M 20 int main(void){ int i,a[M],j=0;for(i=0;i<M;i++)scanf("%d",a+i);for(i=0;i<M;i++)if(a[i]%2!=0){ int t;t=a[j];a[j]=a[i];a[i]=t;j++;} for(i=0;i<M;i++)printf("%2d",a[i]);printf("\\n");return 0;} 缩短数组长度测试了...
从键盘任意输入n个数(以0结束),统计正负数个数,并分别计算所有正数和...
int n,sz=0,sf=0,pz,pf;\/\/f代表要输入的数,sz,sf,pz,pf分别代表正负数的个数,正数和负数的平均值 int xz=0,xf=0;\/\/正数和负数的和 scanf("%d",&n);while(n!=0) \/\/输入n个数,以0结束 { if(n>0){ sz++;xz+=n;} else if(n<0){ sf++;xf+=n;} scanf("%d",&n...
从键盘输入n个学生的成绩(n的值由键盘输入,0<n<20),计算平均分,并输出...
void main(){ int n,i=0;float sum=0,average;printf("输入学生的数目:");while(n<0||n>20)scanf("%d",&n);float str[30];while(i<n){ scanf("%f",&str[i]);i++;} for(int i=0;i<n;i++)sum+=str[i];average=sum\/n;printf("平均成绩为:%.2f\\n",average);printf(...
题目内容: 从键盘输入一个int型的正整数n(已知:0<n<10000),编写程序判 ...
j=0;while (i){ i\/=10;j++;} return j-1;} int main(){ int n;printf("Please enter the number:\\n");scanf("%d",&n);if (n < 0||n > 10000) {printf("error!\\n");return 0;} printf("%d: %d-%d\\n",n,po(nu(n)),po(nu(n)+1)-1);return 0;} 这是网上找到...
从键盘输入一个整数N(N>=0),然后再输入N个整数, 按从小到大的顺序输出...
printf("enter %dth number:",i+1);scanf("%d",&a[i]);} for(i=0;i<n-1;i++)for(j=0;j<n-i;j++)if(a[j]<a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<n;i++)printf("%d\\t",a[i]);printf("\\n");return 0;}已经给出程序啦,希望采纳 ...
编写完整的汇编语言程序,要求从键盘输入一个数N,如果N
mov N, al lea dx, crlf mov ah,9 int 21h mov al, N mov ah,0eh ; output N int 10h ; jmp exiterr: lea dx, ermsg mov ah,9 int 21h jmp againexit: mov ax, 4c00h int 21h ends end start ...
从键盘上输入整数n如果n<0提示输入错误否则求1!+2!+...+n!并输出...
return (n-1?n*fac(n-1):1);} \/ \/\/上面的函数看不懂话可以这样写:\/\/也是计算阶乘 思路:n!=n*(n-1)*(n-2)*…*1 int fac_another(int n) { int c=1,i;for(i=1;i<=n;i++) c*=i;return c;} \/ void main() { int n=-1,sum=0;while(n<=0) {\/\/直至输入一...
键盘输入小于10的正整数n,若输入超出范围,则重新输入,直到符合,计算并...
输入 n, 如果 0 <= n < 10 输出 阶乘值 n! , 否则 要求 重新输入。程序如下:include<stdio.h> int main(){ int n,i,r=1;Lab:printf("input n, which 0<=n<10\\n");scanf("%d",&n);if ( (n>=0) && (n<10) ) { if (n==0 || n==1){ printf("n!=1\\n");...