C++的题目
答案:2 悬赏:40
解决时间 2021-04-28 21:01
- 提问者网友:优雅ぉ小姐
- 2021-04-28 01:04
题目2:09年春C04
【程序功能】
用一组整数验证命题:“任意一个百位数字与个位数字不同的三位正整数n1在经过以下操作后一定会变换到1089:将n1的百位数字与个位数字交换得到n2;求n1与n2差的绝对值得到n3;将n3的百位数字与个位数字交换得到n4;求n3与n4的和得到n5,n5一定是1089。若n1、n3是一位数或两位数,则在高位补0使其称为三位数。”
例如:n1:123,n2:321,n3:198(321-123),n4:891,n5:1089(198+891)
【编程要求】
(1)编写函数int fun(int a[],int b[],int n),其功能是用a指向数组的前n个整数验证上述命题,将所有符合命题的整数所在数组元素的下标依次保存到b指向的数组中,函数返回b数组中数据的个数。
(2)编写main函数,声明a数组并用测试数据初始化,用a数组作为实参调用fun函数,将a数组中所有符合命题的整数输出到屏幕及结果文件2.out中。最后将本人的学号字符串也保存到结果文件2.out中。
【测试数据与运行结果】
测试数据:123 765 1 45 121 1345 131 67 696 3589
运行结果:123 765 1 45 67
【要求】
(1).将源程序文件取名为2.c,输出结果文件取名为2.out。
(2).数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
最佳答案
- 二级知识专家网友:萌萌哒小可爱
- 2021-04-28 02:01
#include<stdio.h>
int fun(int a[],int b[],int n){
int hundred,unit,n2,n3,n4,n5;
int index_b=0;
for(int i=0;i<n;i++)
{
hundred = a[i]/100%10;
unit = a[i]%10;
if(a[i] < 1000 && hundred != unit)
{
b[index_b++]=a[i];
continue;
}
n2 = unit*100+hundred+a[i]/10%10+a[i]/1000*1000;
n3 = (n2-a[i])>0?(n2-a[i]):(a[i]-n2);
hundred = n3/100%10;
unit = n3%10;
n4 = unit*100+hundred+n3/10%10+n3/1000*1000;
n5 = n3 +n4;
if(n5 == 1089)
b[index_b++]=a[i];
}
return index_b;
}
int main(){
int testarraya[]={123,765,1,45,121,1345,131,67,696,3589};
int testarrayb[10]={0};
int count=fun(testarraya,testarrayb,10);
printf("Before funned:");
for(int i=0;i<10;i++)
printf("%d ",testarraya[i]);
printf("\n");
printf("After funned:");
for( i=0;i<count;i++)
printf("%d ",testarrayb[i]);
printf("\n");
FILE *fp;
fp= fopen("2.out","w");
for(i=0;i<count;i++)
fprintf(fp,"%d ",testarrayb[i]);
fclose(fp);
printf("Done.\n");
return 0;
}
全部回答
- 1楼网友:木子香沫兮
- 2021-04-28 02:11
#include<stdio.h>
#include<math.h>
int fun(int a[],int b[],int n)
{
int i,j,n1,n2,n3,n4,n5,x,y,z,c;
j=0;
for(i=0;i<n;i++)
{n1=a;
x=n1/100;
y=n1/10%10;
z=n1%10;
n2=100*z+10*y+x;
n3=fabs(n1-n2);
x=n3/100;
y=n3/10%10;
z=n3%10;
n4=100*z+10*y+x;
n5=n3+n4;
if(n5==1089) c=1;
else c=0;
if(c)
{b[j]=i;
j++;}
return c;
}
}
main()
{int a[10]={123,765,1,45,121,1345,131,67,696,3589};
int i,n=10,b[10];
for(i=0;i<n;i++)
if(a[i]<1000)
{if(fun(a[i],b,n))
printf("%d ",a[i]);}
}
文件写入部分,你就只能看书或者笔记了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息