您的位置:首页 > 编程语言

ACM_编程与调试重点记录(七)

2010-03-10 21:01 246 查看
四十二.航电1005解题报告<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

(1) /*#include<stdio.h>
int main(void)
{
    int i,f1,f2,f3,b,a1,t,num;
    __int64 n;
    while(scanf("%d%d%I64d",&a1,&b,&n),a1||b||n)
    {
        int a[7][7]={0};
        f1=1;
        f2=1;f3=1;
        for(i=3;i<=n;i++)
        if(a[f1][f2])
        {
            t=i-a[f1][f2];
            num=(n-a[f1][f2])%t;
            for(i=0;i<=num;i++)
            {
                f3=(a1*f2+b*f1)%7;
                f1=f2;
                f2=f3;
            }
            break;
        }
        else
        {
            a[f1][f2]=i;
            f3=(a1*f2+b*f1)%7;
            f1=f2;
            f2=f3;
        }
        printf("%d/n",f3);
}
}
 

*/
 

(2)//为什么不行呢?????
#include"stdio.h"
int main(void)
{
    int A,B;
    __int64 n,f[100000001],i;
    while(scanf("%d%d%I64d",&A,&B,&n),A||B||n)
    {
           f[1]=f[2]=1;
           for(i=0;i<n;i++)
           {
                  f
=(A%7*f[n-1]%7)%7+(B%7*f[n-1]%7)%7;
              }
              printf("%I64d",f
);
       }
       return 0;
}
四十三.浮点参数压栈的规则:float(4 字节)类型扩展成double(8 字节)入栈。
    所以在输入时,需要区分float(%f)与double(%lf),而在输出时,用%f即可。
    printf函数将按照double型的规则对压入堆栈的float(已扩展成double)和double型数据进行输出。

四十四./*题目:C语言课本P77 NO.13 */
#include"stdio.h"
void print_jisuan(int n)//顺三角形,即上小下大
{
       int i,j;
       for(i=1;i<=n;i=i+2)
       {
              for(j=1;j<=n-i;j=j+1)
              {
                     printf(" ");
              }
              for(j=1;j<=i;j=j+1)
              {
                     printf("* ");
              }
              printf("/n");//每行空格和星号输出后就换行
       }
}
 

void print_jsdao(int x)//倒三角形,即上小下大
{
       int i,j;
       for(i=1;i<=x;i=i+2)
       {
           for(j=i;j<=2*i;j=j+1)//如何让每趟循环输出的空格数相差2[微软用户1] 
              {
                     printf(" ");
              }
              for(j=x;j>=i;j=j-1)
              {
                     printf("* ");
              }
             
              printf("/n");
       }
}
 

int main()
{
       int n,x;
       scanf("%d",&n);
       print_jisuan(n);
       x=n-2;
       print_jsdao(x);
       return 0;
}
算法:通过程序可以看出我是采用顺三角形和倒三角形拼起来题目要求的图形。编程实现过程中难点在于实现倒三角形。时间复杂度O(n2)。
四十五.#include"stdio.h"
int main()
{
           int r,h;
           r=1.5;//此时r=1[微软用户2] 
           h=1.5;//此时h=1     
           printf("%d/n",r*h);//输出结果1,而不是2,更不是2.5
}
结论:int只定义整型变量,如当给整型变量r赋值1.5,编译器会忽略0.5,只取1;
      同理,h只取1。最后1*1=1
 

 

 [微软用户1]思考的关键之处——我想了好久!2010-1-20

 [微软用户2]2010-1-23
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息