(7)巩固一下C语言基础知识,谁动手,谁收获

来源:互联网 发布:针式打印机模板软件 编辑:程序博客网 时间:2024/05/18 11:45
问题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实现代码:
view plainprint?
  1. <span style="font-size:18px;">/* author:宋金时 */  
  2. /* date:2011/11/05 */  
  3.   
  4. #include "Stdio.h"  
  5. #include "Conio.h"  
  6.   
  7. int main(void)  
  8. {  
  9.  int i,j,num,num2,e,arr[4];  
  10.   for(i=1000;i<10000;i++)  
  11.   {  
  12.     num = i;  
  13.     for(j=0;j<4;j++)  
  14.     {  
  15.       arr[j] = num%10;  
  16.       num/=10;  
  17.     }  
  18.     num2 = (arr[3]+arr[2]*10+arr[1]*100+arr[0]*1000);  
  19.     for(j=1;j<10;j++)  
  20.     {  
  21.        e = j;  
  22.        if(i*e==num2)  
  23.        {  
  24.        printf("%d*%d=%d\t",i,e,num2);  
  25.        }  
  26.     }  
  27.   }  
  28.   getch();  
  29.   return 0;  
  30. }</span>  


问题24实现代码:
view plainprint?
  1. <span style="font-size:18px;">/* author:宋金时 */  
  2. /* date:2011/11/05 */  
  3.   
  4. #include "Stdio.h"  
  5. #include "Conio.h"  
  6.   
  7. int main(void)  
  8. {  
  9.   char str[] = "92081346718538",*s_p,*end_str,*temp;  
  10.   int n=10,len;  
  11.   s_p = str;  
  12.   len = strlen(str);  
  13.   end_str = str+len-1;  
  14.   while(*s_p!='\0'&&n>0)  
  15.   {  
  16.      if(*s_p<'8')  
  17.         {  
  18.             printf("%c,",*s_p);  
  19.            temp = s_p;  
  20.             while(temp<end_str)  
  21.             {  
  22.                 *temp=*(temp+1);  
  23.                 temp++;  
  24.             }  
  25.             *end_str = '\0';  
  26.             end_str--;  
  27.             n--;  
  28.         }  
  29.         else  
  30.             s_p++;  
  31.   }  
  32.   printf("%d\n",atoi(str));  
  33.   getch();  
  34.   return 0;  
  35. }</span>  

问题25实现代码:
view plainprint?
  1. <span style="font-size:18px;">/* author:宋金时 */  
  2. /* date:2011/11/05 */  
  3.   
  4. #include "Stdio.h"  
  5. #include "Conio.h"  
  6.   
  7. #define N (1000-100)  
  8.   
  9. int main(void)  
  10. {  
  11.  /* 此处添加你自己的代码 */  
  12.  int num[N],i,j,k,cha,pos=0,count=0,count_temp=0,*max,*max_temp;  
  13.  for(i=100;i<1000;i++)  
  14.  {  
  15.     for(j=2;j<i;j++)  
  16.     {  
  17.         if(i%j==0)  
  18.             break;  
  19.     }  
  20.     if(j==i)  
  21.     {  
  22.         num[pos++]=i;  
  23.     }  
  24.  }  
  25.  for(i=0;i<pos;i++)  
  26.  {  
  27.     printf("%d\t",num[i]);  
  28.  }  
  29.  printf("\n===========================================\n");  
  30.   
  31.   
  32.  max=(int*)malloc(pos*sizeof(int));  
  33.  max_temp=(int*)malloc(pos*sizeof(int));  
  34.  memset(max,0,pos*sizeof(int));  
  35.  memset(max_temp,0,pos*sizeof(int));  
  36.  /*******************************************************/  
  37.  /* 找到一组最大的等差数列,并得到最大数列的个数 */  
  38.  for(i=0;i<pos;i++)  
  39.  {  
  40.     for(j=i+1;j<pos;j++)  
  41.     {  
  42.         count_temp=0;  
  43.         max_temp[count_temp++]=num[i];  
  44.         max_temp[count_temp++]=num[j];  
  45.         cha=max_temp[0]-max_temp[1];  
  46.         for(k=j+1;k<pos;k++)  
  47.         {  
  48.            if(cha==(max_temp[count_temp-1]-num[k]))  
  49.            {  
  50.             max_temp[count_temp++]=num[k];  
  51.            }  
  52.         }  
  53.       if(count<=count_temp)  
  54.       {  
  55.         count=count_temp;  
  56.         for(k=0;k<count;k++)  
  57.         {  
  58.             max[k]=max_temp[k];  
  59.         }  
  60.       }  
  61.     }  
  62.  }  
  63.  for(i=0;i<count;i++)  
  64.  {  
  65.     printf("%d\t",max[i]);  
  66.  }  
  67.  printf("\n===========================================\n");  
  68.  /**********************************************************/  
  69.  /* 打印出所有最大数列 */  
  70.  for(i=0;i<pos;i++)  
  71.  {  
  72.     for(j=i+1;j<pos;j++)  
  73.     {  
  74.         count_temp=0;  
  75.         max_temp[count_temp++]=num[i];  
  76.         max_temp[count_temp++]=num[j];  
  77.         cha=max_temp[0]-max_temp[1];  
  78.         for(k=j+1;k<pos;k++)  
  79.         {  
  80.            if(cha==(max_temp[count_temp-1]-num[k]))  
  81.            {  
  82.             max_temp[count_temp++]=num[k];  
  83.            }  
  84.         }  
  85.       if(count_temp==count)  
  86.       {  
  87.         for(k=0;k<count;k++)  
  88.         {  
  89.             printf("%d\t",max_temp[k]);  
  90.         }  
  91.         printf("\n");  
  92.       }  
  93.     }  
  94.  }  
  95.  /*******************************************************/  
  96.  free(max);  
  97.  free(max_temp);  
  98.  max=NULL;  
  99.  max_temp=NULL;  
  100.   getch();  
  101.   return 0;  
  102. }</span>  
原创粉丝点击