C语言程序解析

2025-06-26 20:51:44
推荐回答(5个)
回答1:

#include
const int c=2009;
int main()
{
int n,p,s,i,j,t;
scanf("%d%d",&n,&p);//输入2个数字11和2,存入变量n和p中.
s=0;t=1;//t的初始值为1
for(i=1;i<=n;i++)//循环1,循环运算 t=t*p%c运算式 n遍.
{
t=t*p%c; //t乘以p的积,对2009求余.并将得到的值赋给t.//注:求余的意思就是只取余数位.比如10%3,则求余就得到的是1.
for(j=1;j<=i;j++)//循环2,循环运算( s=(s+t)%c)
s=(s+t)%c;
}
printf("%d\n",s);
return 0;
}
//当i=1时,t=1*2%2009,得t=2.然后进入循环2循环1次,得到s=(0+2)%2009,得s=2;
//当i=2时,t=2*2%2009,得t=4,然后进入循环2循环2次:第一次得到s=(2+4)%2009,即s=6;第二次s=(6+4)%2009,得s=10;
//当i=3时,t=4*2%2009,得t=8,然后进入循环2循环3次...
//...以此类推执行n次循环1,即11次.循环2执行了(1+2+3+..+11)次,最后得到s.

回答2:

 

 

 类似代码如下,

对于先取整再求和  与 先求和再取整 是一样的

 t = 1; s = 0;

 for (i = 1; i <= n; i++)

 {

      t = t*p%c;

      s = s+i*t;

 }

 s = s%c;

 printf("%d\n",s);

回答3:

楼主给的东西不是很完整啊,看看是不是你要的结果。
void
Init()
{
int
gd=DETECT,gm;
/*
定义变量,gd有了初值
*/
initgraph(&gd,&gm,"d:\\tc");
/*
初始化图形设备,准备画图的工作
*/
cleardevice();
/*
清理设备(缓存啊,屏幕之类)
*/
setcolor(YELLOW);
/*
设置颜色为黄色
*/
outtextxy(250,10,"anykey
to
continue");
/*
在输出设备上的250,10处写上“anykey
to
continue”字符(字体颜色就是上句设置的黄色)
*/
setcolor(RED);
/*
设置颜色为红色
*/
outtextxy(20,300,"preorder");
/*
在(20,300)处写上“preorder”字符(红色)
*/
outtextxy(20,350,"midorder");
/*
在(20,350)处写上“midorder”字符(红色)
*/
outtextxy(20,400,"posorder");
/*
在(20,400)处写上“midorder”字符(红色)
*/
getch();
/*用来接收标准输入设备输入的一个字符或按键
*/
}
/*遍历时显示每个结点的过程*/
void
DrawNode(Tree
*t,int
color)
{
setcolor(YELLOW);
/*
设置颜色为黄色
*/
setfillstyle(SOLID_FILL,YELLOW);
/*
设置填充的类型和颜色
*/
fillellipse(t->x,t->y,10,10);
/*
在(t->x,t->y),处画一个10,10的椭圆
*/
setcolor(RED);
/*
设置颜色为红色
*/
sprintf(str,"%c",t->data);/*将内容转换成字符串输出*/
/*将t->data里的数据存到了str中*/
outtextxy(t->x-3,t->y-2,str);
/*
在(t->x-3,t->y-2)处写str里的字符(红色)
*/
setcolor(color);
/*
设置颜色为给定的颜色color
*/
outtextxy(s.x,s.y,str);
/*
在(s.x,s.y)处写str里的字符(color)
*/
setcolor(RED);
/*
设置颜色为红色
*/
sprintf(str,"%d",s.num);/*将遍历次序用数字显示在树的结点上*/
outtextxy(t->x-3,t->y-20,str);
/*
在(t->x-3,t->y-2)处写str里的字符(红色)
*/
s.num++;
/*
遍历到下个节点
*/
sleep(1);
/*
延迟1秒
*/
}

回答4:

  1.  t=t*p%c; %号优先级最高,

    i = 1 时 t = t * 2 %2009 = 1*2 =2

  2. s=(s+t)%c; ()优先级最高

    以此类推

    所以结果如下:

    11 2

    i=1 t=2

    j=1 s=2

     

    i=2 t=4j=1 s=6   j=2 s=10

    i=3 t=8j=1 s=18   j=2 s=26   j=3 s=34

    i=4 t=16j=1 s=50   j=2 s=66   j=3 s=82   j=4 s=98

    i=5 t=32j=1 s=130   j=2 s=162   j=3 s=194   j=4 s=226   j=5 s=258

    i=6 t=64j=1 s=322   j=2 s=386   j=3 s=450   j=4 s=514   j=5 s=578   j=6 s=642

    i=7 t=128

    j=1 s=770   j=2 s=898   j=3 s=1026   j=4 s=1154   j=5 s=1282   j=6 s=1410   j=7

    s=1538

     

    i=8 t=256

    j=1 s=1794   j=2 s=41   j=3 s=297   j=4 s=553   j=5 s=809   j=6 s=1065   j=7 s=1

    321   j=8 s=1577

     

    i=9 t=512

    j=1 s=80   j=2 s=592   j=3 s=1104   j=4 s=1616   j=5 s=119   j=6 s=631   j=7 s=1

    143   j=8 s=1655   j=9 s=158

     

    i=10 t=1024

    j=1 s=1182   j=2 s=197   j=3 s=1221   j=4 s=236   j=5 s=1260   j=6 s=275   j=7 s

    =1299   j=8 s=314   j=9 s=1338   j=10 s=353

     

    i=11 t=39

    j=1 s=392   j=2 s=431   j=3 s=470   j=4 s=509   j=5 s=548   j=6 s=587   j=7 s=62

    6   j=8 s=665   j=9 s=704   j=10 s=743   j=11 s=782   782

     

     

     

     

回答5:

算法是这样的