求助,哪里有问题?
查看原帖
求助,哪里有问题?
470881
郭亮20510507027楼主2022/2/21 19:47
#include <stdio.h>
#include <stdlib.h>

int compare(const void* p1,const void* p2)
{
    return (*(int*)p1)-(*(int*)p2);
}
void reward(int p[][7],int *result,int n)
{
    int i;
    qsort(p[0],7,sizeof(int),compare);//先对中奖号码递增排序
    for(i=1;i<n+1;i++)
    {
    	int l=0,r=0,cnt=0;
        qsort(p[i],7,sizeof(int),compare);//对每张彩票递增排序
        //l指针指向中奖号码,r指针指向彩票
        //如果l、r指针指向的值不相同,谁指向的值小,谁的指针向后移动
		//如果l、r指针指向的值相同,都向后移动 
        while(l<7&&r<7) 
        {
        	if(p[0][l]!=p[i][r])
	        {
	        	if(p[0][l]>p[i][r])
	        		r++;
	        	else
	        		l++;
			}
			else
			{
				l++;
				r++;
				cnt++;//统计每张彩票已经中奖的号码个数 
			}
		}
		if(cnt>0)//根据已经的中奖号码的个数来记录奖项 
			result[7-i]++;
    }
}

int main()
{
    int n,i,j;
    scanf("%d",&n);
    int num[n+1][7],result[7]={0};
    for(i=0;i<n+1;i++)//输入
        for(j=0;j<7;j++)
            scanf("%d",&num[i][j]);
    reward(num,result,n);
    for(i=0;i<7;i++)//输出
        printf("%d ",result[i]);
    return 0;
}
2022/2/21 19:47
加载中...