![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言编程,求解 在线等~
程序按如下规则产生一个数列的前10项,并将这10项数据按其奇偶数性存放在数组的两端,奇数在数组的前端,偶数在数组的后端。数列生成规则:1、数列的前两项分别为1、4;2、从...
程序按如下规则产生一个数列的前10项,并将这10项数据按其奇偶数性存放在数组的两端,奇数在数组的前端,
偶数在数组的后端。
数列生成规则:
1、数列的前两项分别为1、4;
2、从第三项起,由数列前两项产生后一项或后两项,规则如下:前两项之积再加3,如果其和为一位数,则该数就是数列的
当前项;如果为两位数,且为奇数,则该数的十位数为数列的当前项,个位数为数列的后一项;如果为两位数,且为偶数,
则该数的个位数为数列的当前项,十位数为数列的后一项。
编写程序:
1、编写void gen(int a[])函数,该函数产生数列的前10项,保存在数组a中。
2、编写void split(int a[])函数,该函数按数据奇偶性调整数组a中元素的位置,奇数放在数组a的前端,偶数放在数组a的
后端。调整中不允许使用其他辅助数组。
结果为:1 7 7 3 1 5 9 6 4 8
*/
#include<stdio.h>
#include<stdlib.h>
void gen(int a[]){
/**********Program**********/
/********** End **********/
}
void split(int a[]){
/**********Program**********/
/********** End **********/
}
int main()
{
int a[10]={1,4},i;
FILE *fp;
gen(a);
split(a);
if((fp=fopen("DATA.TXT","w"))==NULL){
printf("File open error\n");
exit(0);
}
for(i=0;i<10;i++){
printf("%4d\t",a[i]);
fprintf(fp,"%4d\t",a[i]);
}
fclose(fp);
return 0;
} 展开
偶数在数组的后端。
数列生成规则:
1、数列的前两项分别为1、4;
2、从第三项起,由数列前两项产生后一项或后两项,规则如下:前两项之积再加3,如果其和为一位数,则该数就是数列的
当前项;如果为两位数,且为奇数,则该数的十位数为数列的当前项,个位数为数列的后一项;如果为两位数,且为偶数,
则该数的个位数为数列的当前项,十位数为数列的后一项。
编写程序:
1、编写void gen(int a[])函数,该函数产生数列的前10项,保存在数组a中。
2、编写void split(int a[])函数,该函数按数据奇偶性调整数组a中元素的位置,奇数放在数组a的前端,偶数放在数组a的
后端。调整中不允许使用其他辅助数组。
结果为:1 7 7 3 1 5 9 6 4 8
*/
#include<stdio.h>
#include<stdlib.h>
void gen(int a[]){
/**********Program**********/
/********** End **********/
}
void split(int a[]){
/**********Program**********/
/********** End **********/
}
int main()
{
int a[10]={1,4},i;
FILE *fp;
gen(a);
split(a);
if((fp=fopen("DATA.TXT","w"))==NULL){
printf("File open error\n");
exit(0);
}
for(i=0;i<10;i++){
printf("%4d\t",a[i]);
fprintf(fp,"%4d\t",a[i]);
}
fclose(fp);
return 0;
} 展开
2个回答
展开全部
根据题意可得如下代码:
#include<stdio.h>
#include<stdlib.h>
void gen(int a[]){
/**********Program**********/
int i, t;
for (i = 2; i < 10;){
t = a[i-1]*a[i-2]+3;
if (t < 10){
a[i] = t;
i++;
}
else if (t % 2 == 1){
a[i] = t/10;
a[i+1] = t%10;
i+=2;
}
else {
a[i] = t%10;
a[i+1] = t/10;
i+=2;
}
}
/********** End **********/
}
void split(int a[]){
/**********Program**********/
int i = 0, j = 9, t;
while (i < j){
while (a[i]%2==1){
i++;
}
while (a[j]%2==0){
j--;
}
if (i < j){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
/********** End **********/
}
int main()
{
int a[10]={1,4},i;
FILE *fp;
gen(a);
split(a);
if((fp=fopen("DATA.TXT","w"))==NULL){
printf("File open error\n");
exit(0);
}
for(i=0;i<10;i++){
printf("%4d\t",a[i]);
fprintf(fp,"%4d\t",a[i]);
}
fclose(fp);
return 0;
}
展开全部
void gen(int a[]){
/**********Program**********/
int i;
for(i=2;i<10;i++){
a[i]=a[i-2]*a[i-1]+3;
if(a[i]>9){
if(a[i]%2==0){
if(i<9) a[i+1]=a[i]/10;
a[i]%=10;
}else{
if(i<9) a[i+1]=a[i]%10;
a[i]/=10;
}
i++;
}
}
/********** End **********/
}
void split(int a[]){
/**********Program**********/
int i=0,j=9,k;
for(;i<j;){
if(a[i]%2==0){
k=a[i];
a[i]=a[j];
a[j]=k;
j--;
}else i++;
/********** End **********/
}
/**********Program**********/
int i;
for(i=2;i<10;i++){
a[i]=a[i-2]*a[i-1]+3;
if(a[i]>9){
if(a[i]%2==0){
if(i<9) a[i+1]=a[i]/10;
a[i]%=10;
}else{
if(i<9) a[i+1]=a[i]%10;
a[i]/=10;
}
i++;
}
}
/********** End **********/
}
void split(int a[]){
/**********Program**********/
int i=0,j=9,k;
for(;i<j;){
if(a[i]%2==0){
k=a[i];
a[i]=a[j];
a[j]=k;
j--;
}else i++;
/********** End **********/
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询