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
(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
相关文章推荐
- ACM_编程与调试重点记录(四)
- ACM_编程与调试重点记录(十七)
- ACM_编程与调试重点记录(五)
- ACM_编程与调试重点记录(十四)
- ACM_编程与调试重点记录(六)
- ACM_编程与调试重点记录(十二)
- ACM_编程与调试重点记录(十七).doc
- ACM_编程与调试重点记录(八)
- ACM_编程与调试重点记录(十三)
- ACM_编程与调试重点记录(九)
- ACM_编程与调试重点记录(十六)
- ACM_编程与调试重点记录(一)
- ACM_编程与调试重点记录(二)
- ACM_编程与调试重点记录(十一)
- ACM_编程与调试重点记录(三)
- GPU(CUDA)学习日记(六)------ vector,动态数组,引用,编程调试经验总结等一些比较琐碎的记录
- GPU(CUDA)学习日记(六)------ vector,动态数组,引用,编程调试经验总结等一些比较琐碎的记录
- 嵌入式编程中调试问题全记录
- 编程调试记录之一
- hdu 1875 基础kruskal + 预处理出所有边 (记录第一次用调试解决ACM..!!)