c语言的问题,比较急

1.有一个数组,内放10个整数,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
2.求数组int a[n]中奇数的个数和平均值,以及偶数个数和平均值。
3.求出数组 int a[M][N]每行元素的平均值和平均值最大的行号
4.输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 9 2 4 6 8 10。(编程提示:可利用2个数组变量,一个用来存放输入的整数,输入后,对这个数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。

/*首先声明一点,我是用VC++6.0编译的,自然用的是C++语言,别急,除了标准输入和输出我是用C++的(比C的scanf ,printf 方便点,呵呵,所以你运行的时候还得自己改过来了就是把所有cin和cout 的行改成scanf和printf),其他都是C里面的.祝你好运,_^_偶写得好辛苦呀_^_*/
#include<iostream.h>/*可能你的编译器在这里会提示着不头文件,那么你就把这行去掉,这是VC里面的*/
#include<stdio.h>
#include<stdlib.h>
#define LENGTH 10
#define M 3
#define N 3
void py_1(int a[]){
int j=1;
int i;
a[0]=a[1]; /*0好元素不用,只用用来装当前最大的元素*/
for(i=1;i<LENGTH+1;i++){
if(a[0]>a[i]) {
a[0]=a[i];
j=i;
}
}
int temp=a[1];
a[1]=a[j];
a[j]=temp;
cout<<"最小元素的下标是 :"<<j-1<<endl;
}
void py_2(int a[]){
int sum_1=0,sum_2=0;
double p_1,p_2;
int num=0;
int i;
for(i=0;i<LENGTH;i++){
if(a[i]%2!=0){
sum_1+=a[i];
num++;
}
else sum_2+=a[i];
}
p_1=(double)sum_1/num;
p_2=(double)sum_2/(LENGTH-num);
cout<<"奇数的个数是 :"<<num<<" 偶数的个数是 :"<<LENGTH-num<<endl;
cout<<"奇数的平均是 :"<<p_1<<" 偶数的平均是 :"<<p_2<<endl;
}
void py_3(int a[][N]){/*这里第2维一定要规定,什么原因,我现在还不知道.很郁闷,谁知道欢迎去百度知道回答我的问题.*/
int sum=0;
int i;
int j=0;
int b[M];
for(i=0;i<M;i++){
for(j=0;j<N;j++){
sum+=a[i][j];
}
b[i]=sum;
sum=0;
cout<<"第 "<<i<<" 行的平均是 :"<<(double)b[i]/N<<endl;
}
int max=b[0];
for(i=0,j=0;i<M;i++)
if(b[i]>max){
max=b[i];
j++;
}
cout<<"平均值最大的行号是 :"<<j<<endl;
}
void bubble(int a[],int n){/*冒泡排序*/
int i;
int temp;
for(i=1;i<n;i++)
if(a[i-1]>a[i]){
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}
}
void sort(int a[],int n){/*循环调用冒泡排序*/
while(n>0){/*每次n减1,并使次大的元素排到后面去,循环结束时,数组为升序*/
bubble(a,n);
n--;
}
}
void py_4(int a[]){
int i;
int j=0;
sort(a,10);
int b[10];
for(i=0;i<10;i++)
if(a[i]%2==1) {
b[j]=a[i];
j++;
}
for(i=0;i<10;i++)
if(a[i]%2==0) {
b[j]=a[i];
j++;
}
cout<<"处理后数组如下:"<<endl;
for(j=0;j<10;j++) cout<<b[j]<<" ";
cout<<endl;
}
int main(){
int py1[LENGTH+1];
int py2[LENGTH];
int py3[M][N];
int py4[10];
int i;
cout<<"请输入诶第一题的数组 "<<endl;
for(i=1;i<LENGTH+1;i++) cin>>py1[i];/*0号不用*/
py_1(py1);
cout<<"输入第2题是数组 "<<endl;
for(i=0;i<LENGTH;i++) cin>>py2[i];
py_2(py2);
cout<<"输入第3题的2维数组,以行为主序存储 "<<endl;
int j;
for(i=0;i<M;i++){
for(j=0;j<N;j++)
cin>>py3[i][j];
}
py_3(py3);
cout<<"输入第4题的数组 :"<<endl;
for(i=0;i<10;i++) cin>>py4[i];
py_4(py4);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-10
1、
main(){
int k,min,j,a[10]={2,3,4,1,5,6,7,8,9,10};
min=a[0];k=0;
for(j=1;j<10;j++)
{ if(a[j]<min)
{min=a[j]; k=j+1;}
}
printf("\n\n\n%d,%d",min,k);
}

2、main(){
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i,o=0,j=0,sun_o=0,sun_j=0;
for(i=0;i<10;i++)
{if(a[i]%2==0){
o++;
sun_o+=a[i];
}
else {j++;sun_j+=a[i];}
}
printf("%d,%d,%d,%d"o,sun_o,j,sun_j);
}

3、
main()
{
int a[10][8];
int i,j,sun[10]={0},sun_max,k;
for(i=0;i<10;i++)
for(j=0;j<8;j++)
scanf("%d,",&a[i][j]);
for(i=0;i<10;i++)
for(j=0;j<8;j++)
sun[i]+=a[i][j];
for(i=1;i<10;i++)
{ sun_max=sun[0];
if(sun_max<sun[i])
{sun_max=sun[i];
k=i+1;
}
}
printf("\n\n\n\n");
for(i=0;i<10;i++)
printf("%d;",sun[i]);
printf("\n\n\n%d\n\n\n",k);
}

4、
main(){
int a[10],b[10],i,j,k=0;
for(i=0;i<10;i++)
scanf("%d,",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]%2!=0)
b[k++]=a[i];
}
for(i=0;i<10;i++)
{
if(a[i]%2==0)
b[k++]=a[i];
}
for(i=0;i<10;i++)
printf("%d",b[i]);
}

回家 修改了一下,编译了一下,可以了100%对本回答被提问者采纳
相似回答