
C++问题:*c++=a[i]<b[j]?a[i++]:b[j++];
#include<iostream.h>#include<fstream.h>voidfun(inta[],intn,intb[],intm,int*c){inti,j;...
#include <iostream.h>
#include <fstream.h>
void fun (int a[],int n,int b[],int m,int *c)
{int i,j;
for(i=j=0;i<n&&j<m;)
{
/////////////////// *c++=a[i]<b[j]?a[i++]:b[j++]; ////////////////////////
}
while(i<n)*c++=a[i++];
while(j<m)*c++=b[j++];
}
void rwdat();
void main()
{
int A[]={3,5,7,9,11,18,21};
int B[]={6,15,19,21,39};
int C[25], i;
for(i=0;i<25;i++) C[i] = 0;
cout << "A[]=";
for (i=0; i<7; i++)
cout << A[i] << ',';
cout << endl;
cout << "B[]=";
for (i=0; i<5; i++)
cout << B[i] << ',';
cout << endl;
fun(A,7,B,5,C);
cout << "C[]=";
for (i=0; i<12; i++)
cout << C[i] << ',';
cout << endl;
rwdat();
return;
}
void rwdat()
{
int A[7],B[7];
int C[25],k;
ifstream Inputfile("in.dat");
ofstream Outputfile("out.dat");
for (int i=0;i<7;i++)
{
Inputfile>>A[i];
}
for (int j=0;j<7;j++)
{
Inputfile>>B[j];
}
for(i=0;i<25;i++) C[i] = 0;
Outputfile << "A[]=";
for (i=0; i<7; i++)
Outputfile << A[i] << ',';
Outputfile << endl;
Outputfile << "B[]=";
for (i=0; i<7; i++)
Outputfile << B[i] << ',';
Outputfile << endl;
fun(A,7,B,7,C);
Outputfile << "C[]=";
for (i=0; i<14; i++)
Outputfile << C[i] << ',';
Outputfile << endl;
}
其中
for(i=j=0;i<n&&j<m;)
{
/////////////////// *c++=a[i]<b[j]?a[i++]:b[j++]; ////////////////////////
}
这个for循环可以具体解释一下吗?
解释几步就可以了 展开
#include <fstream.h>
void fun (int a[],int n,int b[],int m,int *c)
{int i,j;
for(i=j=0;i<n&&j<m;)
{
/////////////////// *c++=a[i]<b[j]?a[i++]:b[j++]; ////////////////////////
}
while(i<n)*c++=a[i++];
while(j<m)*c++=b[j++];
}
void rwdat();
void main()
{
int A[]={3,5,7,9,11,18,21};
int B[]={6,15,19,21,39};
int C[25], i;
for(i=0;i<25;i++) C[i] = 0;
cout << "A[]=";
for (i=0; i<7; i++)
cout << A[i] << ',';
cout << endl;
cout << "B[]=";
for (i=0; i<5; i++)
cout << B[i] << ',';
cout << endl;
fun(A,7,B,5,C);
cout << "C[]=";
for (i=0; i<12; i++)
cout << C[i] << ',';
cout << endl;
rwdat();
return;
}
void rwdat()
{
int A[7],B[7];
int C[25],k;
ifstream Inputfile("in.dat");
ofstream Outputfile("out.dat");
for (int i=0;i<7;i++)
{
Inputfile>>A[i];
}
for (int j=0;j<7;j++)
{
Inputfile>>B[j];
}
for(i=0;i<25;i++) C[i] = 0;
Outputfile << "A[]=";
for (i=0; i<7; i++)
Outputfile << A[i] << ',';
Outputfile << endl;
Outputfile << "B[]=";
for (i=0; i<7; i++)
Outputfile << B[i] << ',';
Outputfile << endl;
fun(A,7,B,7,C);
Outputfile << "C[]=";
for (i=0; i<14; i++)
Outputfile << C[i] << ',';
Outputfile << endl;
}
其中
for(i=j=0;i<n&&j<m;)
{
/////////////////// *c++=a[i]<b[j]?a[i++]:b[j++]; ////////////////////////
}
这个for循环可以具体解释一下吗?
解释几步就可以了 展开
展开全部
void fun(int a[], int n, int b[], int m, int *c)
{
int i,j;
for(i=j=0;i<n&&j<m;)
{
*c++=a[i]<b[j]?a[i++]:b[j++];
}
while(i<n)*c++=a[i++];
while(j<m)*c++=b[j++];
}
换成容易懂的写法就是
void fun(int a[], int n, int b[], int m, int *c)
{
int i = 0, j = 0, ci = 0;
while(i < n && j < m)
{
if(a[i] < b[j])
{
c[ci] = a[i];
i++;
} else
{
c[ci] = b[j];
j++;
}
ci++;
}
while(i < n) {
c[ci] = a[i];
i++;
ci++;
}
while(j < m) {
c[ci] = b[j];
j++;
ci++;
}
}
*c++=a[i]<b[j]?a[i++]:b[j++];的理解分为两部分。
等号左边:
c是个int指针,也可理解为数组
c++就是指针自增,用数组来理解就是,让c指针指向数组中下一个位置
*c是指针取值
c++是先返回后自增,++c是先自增在返回
所以*c++就是取c指针当前所指的int,然后让c指针指向下一个位置
等号右边:
a[i]<b[j]?a[i++]:b[j++];是个条件三段式
(条件) ? (符合条件所返回的值) : (不符合条件所返回的值)
展开全部
*c++=a[i]<b[j]?a[i++]:b[j++];//其实这句话应该等价于
if(a[i]<b[j])
{*c=a[i];
c++;
i++;}
else
{*c=b[j];
c++;
j++;
}
if(a[i]<b[j])
{*c=a[i];
c++;
i++;}
else
{*c=b[j];
c++;
j++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*c++=a[i]<b[j]?a[i++]:b[j++];//其实这句话应该等价于
if(a[i]<b[j])
{*c=a[i];
c++;
i++;}
else
{*c=b[j];
c++;
j++;
}
改动之后应该可以看懂了吧
下面这个小程序是验证上面的?:中的++运算符的
#include<iostream>
using namespace std;
int main()
{
int i=1;
int j=2;
int c=i<j?(i++):(j++);
cout<<c<<" "<<i<<" "<<j<<endl;
return 0;
}
if(a[i]<b[j])
{*c=a[i];
c++;
i++;}
else
{*c=b[j];
c++;
j++;
}
改动之后应该可以看懂了吧
下面这个小程序是验证上面的?:中的++运算符的
#include<iostream>
using namespace std;
int main()
{
int i=1;
int j=2;
int c=i<j?(i++):(j++);
cout<<c<<" "<<i<<" "<<j<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询