问题23:
编程解决如下问题(50 分) 。 有一个数学等式:ABCD*E= DCBA,式中的一个字母代表一位数字,试找出所有符合上述 要求的乘积式并打印输出。
问题24:
编程解决如下问题(50 分) 。 请在整数 n=92081346718538 中删除 10个数字, 使得余下的数字按原次序组成的新数最 大。要求如下: (1)整数 n和删除数字的个数“10”在源程序中完成赋值,程序直接输出运行结果; (2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最大数。 (提示:整数 n 可以以字符数组的方式定义、赋值和处理)
问题25:
编程解决如下问题(50 分) 。 在小于 10 的素数中有 3、5、7 组成的等差数列,在小于 30 的素数中有 11、17、23、 29 组成的等差数列。试找出区间[100,1000]内的素数构成的最大等差数列(即等差数列包 含的素数个数最多)并打印输出。
问题23实现代码:
/* author:宋金时 */ /* date:2011/11/05 */ #include "Stdio.h" #include "Conio.h" int main(void) { int i,j,num,num2,e,arr[4]; for(i=1000;i<10000;i++) { num = i; for(j=0;j<4;j++) { arr[j] = num%10; num/=10; } num2 = (arr[3]+arr[2]*10+arr[1]*100+arr[0]*1000); for(j=1;j<10;j++) { e = j; if(i*e==num2) { printf("%d*%d=%d\t",i,e,num2); } } } getch(); return 0; }
问题24实现代码:
/* author:宋金时 */ /* date:2011/11/05 */ #include "Stdio.h" #include "Conio.h" int main(void) { char str[] = "92081346718538",*s_p,*end_str,*temp; int n=10,len; s_p = str; len = strlen(str); end_str = str+len-1; while(*s_p!='\0'&&n>0) { if(*s_p<'8') { printf("%c,",*s_p); temp = s_p; while(temp<end_str) { *temp=*(temp+1); temp++; } *end_str = '\0'; end_str--; n--; } else s_p++; } printf("%d\n",atoi(str)); getch(); return 0; }
问题25实现代码:
/* author:宋金时 */ /* date:2011/11/05 */ #include "Stdio.h" #include "Conio.h" #define N (1000-100) int main(void) { /* 此处添加你自己的代码 */ int num[N],i,j,k,cha,pos=0,count=0,count_temp=0,*max,*max_temp; for(i=100;i<1000;i++) { for(j=2;j<i;j++) { if(i%j==0) break; } if(j==i) { num[pos++]=i; } } for(i=0;i<pos;i++) { printf("%d\t",num[i]); } printf("\n===========================================\n"); max=(int*)malloc(pos*sizeof(int)); max_temp=(int*)malloc(pos*sizeof(int)); memset(max,0,pos*sizeof(int)); memset(max_temp,0,pos*sizeof(int)); /*******************************************************/ /* 找到一组最大的等差数列,并得到最大数列的个数 */ for(i=0;i<pos;i++) { for(j=i+1;j<pos;j++) { count_temp=0; max_temp[count_temp++]=num[i]; max_temp[count_temp++]=num[j]; cha=max_temp[0]-max_temp[1]; for(k=j+1;k<pos;k++) { if(cha==(max_temp[count_temp-1]-num[k])) { max_temp[count_temp++]=num[k]; } } if(count<=count_temp) { count=count_temp; for(k=0;k<count;k++) { max[k]=max_temp[k]; } } } } for(i=0;i<count;i++) { printf("%d\t",max[i]); } printf("\n===========================================\n"); /**********************************************************/ /* 打印出所有最大数列 */ for(i=0;i<pos;i++) { for(j=i+1;j<pos;j++) { count_temp=0; max_temp[count_temp++]=num[i]; max_temp[count_temp++]=num[j]; cha=max_temp[0]-max_temp[1]; for(k=j+1;k<pos;k++) { if(cha==(max_temp[count_temp-1]-num[k])) { max_temp[count_temp++]=num[k]; } } if(count_temp==count) { for(k=0;k<count;k++) { printf("%d\t",max_temp[k]); } printf("\n"); } } } /*******************************************************/ free(max); free(max_temp); max=NULL; max_temp=NULL; getch(); return 0; }
时间: 2024-07-28 16:56:02