大家来帮帮忙,看看这3道题,自学中,多谢大家了

大家来帮帮忙,看看这3道题,自学中,谢谢大家了!
在下不才,自学C,新手上路啊,有3道题没弄明白       大家帮忙看看     ,给点提示或答案参考参考   ,我买那书课后题不带答案啊,谢谢大家了!
1.   例子:3569584输出各位上的数字。例如输出百位数字是5。并且可以让任意两个数字组合成新的数。如,百位和个位组成的数字54。然后将组合而成的两位数字比较大小,打印输出,统计有多少个数字。  
2.   一个二维数组的题。将某行的平均值求出,输出时候将平均值按照从大到小的顺序输出。  
3.填空:   一个数组  
main()  
{char   a[10]  
fun(a,10)  
}  
fun(char   *p,int   n)   |*输入子函数对一维数组进行操作*|  
{for   (i=0;i <10;i++)  
If__________.  
*p_______  
}  


------解决方案--------------------
1。太那个了,思路是不断%10获得位置上的数
例如:
i = 94564369;
while (i!=0)
{
a[k++] = i%10;
i/=10;
}
a[]里面存储的就是不同位上的数字
然后组合(循环)
2.做一个sort函数排序,可以选择快排,偷懒的话可以是冒泡
然后:
for (i=0;i <列数 ;++i)
{
for (j=0;j <行数 ;++j)
sum = sum + a[i][j];
average[i] = sum/行数;
}
然后排序average[]输出
3。不懂要干吗,程序中还有语法错误~