c语言数组问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言数组问题相关的知识,希望对你有一定的参考价值。
给定一系列整数,对每个整数的每一位数字统计0~9各个数字的出现次数,求出现次数最多的数字。
输入:
有两行,第一行是整数n(1<=n<=100),表示有n个整数;第二行是n个整数值
输出:
出现次数最多的数字d(如果d不唯一,要列出全部)及其出现的次数
输入样例:
1
1233
输出样例:
出现次数最多的是3,出现了2次
我的程序:
#include<stdio.h>
int main()
int num[100],cmp[100][100]=0,number[9]=0;
int i,j,n,k,max,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
for(i=0;i<n&&i<100;i++)
temp=num[i];
for(j=0;temp!=0;j++)
cmp[i][j]=(temp%10);
temp/=10;
n++;
for(k=0;k<9;k++)
for(i=0;i<n&&i<100;i++)
for(j=0;cmp[i][j]!=0&&j<100;j++)
if(cmp[i][j]==(k+1))
number[k]++;
max=number[0];
for(k=0;k<9;k++)
max=max>number[k]?max:number[k];
printf("出现次数最多%d次的数字是",max);
for(k=0;k<9;k++)
if(number[k]==max)
printf(" %d",k+1);
printf("\n");
测试中输入1 1233
结果出现的是“1出现的次数最多,出现了40次”
为什么会这样??
用的是g.c-3.3
int main()
int num[100],number[9]=0;
int i,max,temp,n;
printf("please enter n:");
scanf("%d",&n);
printf("please enter num:");
for(i=0;i<n;i++)
scanf("%d",&num[i]);
for(i=0;i<n&&i<100;i++)
temp=num[i];
while(temp)
number[temp%10] +=1; //number[i]表示数字i出现的次数
temp /=10;
max=number[0];
for(i=0;i<9;i++)
max=max>number[i]?max:number[i]; //找出最多出现了几次
for(i=0;i<9;i++)
if(number[i]==max)
printf("%d appear %d times\\n",i ,max);
参考技术A
我在DEV-C++的编译器中执行你的代码,测试中输入 1 1233,出现的结果是正确的,但是你的代码有其他的问题。我把我的代码贴出来:
#include<stdio.h>int main()
int num[100],cmp[100][100]=0,number[10]=0;
int i,j,n,k,max,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
for(i=0;i<n;i++)
if (0 == num[i]) //整数为0的情况
cmp[i][0] = 0;
cmp[i][1] = -1;//表示第i个整数的所有数字已经算完了,用-1代表结束,后面要用到
continue;
temp=num[i];
for(j=0;temp!=0;j++)
cmp[i][j]=(temp%10);
temp/=10;
cmp[i][j] = -1; //表示第i个整数的所有数字已经算完了,用-1代表结束,后面要用到
for(i=0;i<n;i++)
for(j=0;cmp[i][j]!=-1;j++)
number[ cmp[i][j] ]++; //统计0,1,2,...,8,9各个数字出现的次数
max=number[0];
for(k=0;k<9;k++)
max=max>number[k]?max:number[k];
printf("出现次数最多%d次的数字是",max);
for(k=0;k<10;k++)
if(number[k]==max)
printf(" %d",k);
printf("\\n");
C语言三维数组问题
int p[3][4][5];
int *q=(int *)p;
int(*s)[5]=&p[1][0];
int i;
for(i=0;i<60;i++)
q[i]=i;
//printf("%d\n",p[1][7][1]);
//printf("%d\n",(*(s+1))[3]);
printf("%d\n",p[1][7][1]*(*(s+1))[3]);
这个怎么理解定义int p[3][4][5];引用的时候p[1][7][1]没有超出范围吗?大神给个详细的指点
上面数组和指针一节关于这些讲得很清楚。
以上是关于c语言数组问题的主要内容,如果未能解决你的问题,请参考以下文章