| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1128 人关注过本帖, 1 人收藏
标题:自学的C,晚上做了一张试卷。有挺多不懂
只看楼主 加入收藏
qq23826868
Rank: 2
等 级:论坛游民
帖 子:57
专家分:94
注 册:2013-4-7
结帖率:85.71%
收藏(1)
已结贴  问题点数:20 回复次数:14 
自学的C,晚上做了一张试卷。有挺多不懂
#include "stdio.h"
void main()
{
    int k,p,s;
    printf("输入里程:\n");
    scanf("%d",&k);
    s=k/500;
    switch(s)
    {
    case 0:p=19*(k/50);break;
    case 1:p=190+12*((k-500)/50);break;
    case 2:
    case 3:p=310+8*((k-1000)/50);break;
    case 4:
    case 5:p=470+4*((k-2000)/50);break;
    }
    printf("票价=%d",p);

}
//一次就写出来了。虽然很简单,但对我才学1个礼拜的C来说,觉得不错了。调试后结果是对。顿时自信爆棚了。



试卷最后一道题,想了半天还是不懂。发大家参考下。
题目:任何一个自然数m的立方均可以写成m个连续奇数之和。例如
pow (1,3) =1
pow(2,3)=3+5
pow(3,3)=7+9+11
pow(4,3)=13+15+17+19
写一个程序实现:输入自然数n,求出组成pow(n,3)的n个连续奇数.
//我的思路是这样的:使用for循环。
int a,n,b,t,sum;
a=1,n=1;
for(n=2;n<=99;n++)
sum=a+b;a=a+2;b=a+2
这样求不出来连续的n个数,只能求一个数。
怎么样的算法比较好。谢谢


[ 本帖最后由 qq23826868 于 2013-4-26 01:18 编辑 ]
搜索更多相关主题的帖子: include 
2013-04-26 01:06
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:3 
1.假设连续的n个奇数之和是:(2k+1)+(2k+3)+(2k+5)+...+(2k+2n-1)=2nk+n*n,因为n的立方等于连续的n个奇数之和,所以2nk+n*n=n*n*n,k=n*(n-1)/2,所以输入一个n,计算出k,然后输出2k+1开始的n个连续奇数即可。
2.采用试探的方法,输入一个n,对于从1 开始的每一个奇数k,计算从k开始的连续n个奇数之和s,如果s==n*n*n则找到k
2013-04-26 06:49
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:3 
连续等差数列的求和公式,那个什么首数加尾数乘以个数除以2那个...
带入平方公式,求n和首项...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-26 06:50
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
收藏
得分:3 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,k,n,sum=0,count=0;
    scanf("%d",&n);
    for(i=pow(n,3),k=1;;k+=2)
    {
        for(sum=0,j=k,count=0;count<n;j+=2,count++)
        {
            sum+=j;
        }
        if(sum==i)
            break;
    }
    printf("pow(%d,3)=",n);
    for(i=0;i<n;i++,k+=2)
        printf("+%d",k);
}

有问题一起探讨,一起进步。
2013-04-26 09:13
小小的C
Rank: 2
等 级:论坛游民
帖 子:31
专家分:22
注 册:2013-4-19
收藏
得分:3 
#include<stdio.h>
#include<math.h>
void main()
{
    int n,a,i;
    scanf("%d",&n);
    a=pow(n,2);
    if(n%2==0)
    {
        a=a-n+1;
    }
    else
    {
        a=a-n+1;
    }
    for(i=0;i<n;i++)
            printf("%d ",a+2*i);
}

新手发言,勿怪。
2013-04-26 15:55
zc1992312
Rank: 2
等 级:论坛游民
帖 子:43
专家分:12
注 册:2013-3-20
收藏
得分:3 
jia you
2013-04-26 17:35
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:3 
话说
自学的都是有心人啊
2013-04-27 09:15
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:3 
好像满足如下规律:1,奇数个数刚好是n;奇数系列中间数(n如果是奇数则中间数刚好是n的平方数,如果n为偶数则中间两位数是n的平方减1和加1)。

www.qunxingw.wang
2013-04-27 11:02
qq23826868
Rank: 2
等 级:论坛游民
帖 子:57
专家分:94
注 册:2013-4-7
收藏
得分:0 
回复 5楼 小小的C
很棒。谢谢了
2013-04-27 11:17
不眠的夜
Rank: 2
等 级:论坛游民
帖 子:63
专家分:96
注 册:2013-3-12
收藏
得分:0 
#include <stdio.h>
void main()
{
  int i,x,a[100],sum=0;
 
  a[0]=1;
  for(i=1;i<100;i++)
      a[i]=a[i-1]+2;

  printf("请输入一整数:");
  scanf("%d",&x);
for(i=0;i<x;i++){sum=sum+i;}

for(i=0;i<x;i++)
 {printf("%d",a[sum+i]);
    if(i<x-1)
    printf("+");}
   printf("\n");
}
2013-04-27 17:45
快速回复:自学的C,晚上做了一张试卷。有挺多不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026216 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved