| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 613 人关注过本帖
标题:【求组】新人写的小代码有点问题
只看楼主 加入收藏
守护墨迫
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-8-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
【求组】新人写的小代码有点问题
题目如下:
编写程序,输入整数n和a,输出S=a+aa+aaa+....aaaa...a(n个a)的结果。如n=5,a=3,则S=3+33+333+3333+3333.

代码如下:

#include <stdio.h>

int sum(int n,int a);

int main()

{

    int n,a;

    printf("please input two number:");

    scanf("%d%d",&n, &a);

    printf("s=%d",sum(n,a));

}

int sum(int n,int a)

{

    int s=0,item,i,t,add;

    for(i=1,t=1; i<=n; i++) {

        add=a*t;

        item+=add;

        s+=item;

        t=t*10;

    }

    return s;

}

运行结果有误:
please input two number :
输入:2 1
S=1594578524
搜索更多相关主题的帖子: add sum int item 代码 
2021-08-29 13:49
不会游泳的虾
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:33
注 册:2021-7-1
收藏
得分:4 
修改如下,供参考:
程序代码:
#include <stdio.h>

int sum(int n,int a);

int main()

{

    int n,a;

    printf("please input two number:");

    scanf("%d%d",&n, &a);

    printf("s=%d",sum(n,a));

    return 0;
}

int sum(int n,int a)

{

    int s=0,item,i,t,add;

    for(i=1,t=0; i<=n; i++) {

        t = t*10+a;

        s += t ;

    }

    return s;
}
2021-08-29 15:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:431
帖 子:8150
专家分:48060
注 册:2011-1-18
收藏
得分:4 
题目有交代 n 的取值范围吗?否则怎么确认可以用 int 存储结果?
2021-08-29 16:05
自由而无用
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
收藏
得分:4 
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

int sum(int n, int a)
{
    if (1 == n) return a;
    
#define PLUS10(_a) (_a << 1) + (_a << 3)    
    return a * n + sum(n - 1, PLUS10(a));
}

int main(int argc, char *argv[])
{
    int n = 5, a = 3;
    
    printf("s = %d", sum(n, a));
    
    return 0;
}
2021-08-29 16:37
自由而无用
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
收藏
得分:0 
/online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

int sum(int n, int a)
{
#define BUG_ON
    if (0 == n) return 0;
    if (1 == n) return a;
    
#define PLUS10(_a) (_a << 1) + (_a << 3)    
    return a * n + sum(n - 1, PLUS10(a));
}

int main(int argc, char *argv[])
{
    int n, a, i;
    unsigned char *p = (unsigned char *)main;

    //test procedure
    for(i = 0; i < 125; i++, p++) {
#define B2HT(_b) ((_b >> 4) & 0xf)
#define B2LT(_b) ((_b) & 0x0f)
        n = B2HT(*p) % 10;
        a = B2LT(*p) % 10;
        printf("src = 0x%02x, n = %d, a = %d  ", *p, n, a);
        printf("[%02d]:sum = %d\n", i + 1, sum(n, a));
    }
    
    return 0;
}
2021-08-30 09:29
自由而无用
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
收藏
得分:0 
src = 0x55, n = 5, a = 5  [01]:sum = 61725
src = 0x48, n = 4, a = 8  [02]:sum = 9872
src = 0x89, n = 8, a = 9  [03]:sum = 111111102
src = 0xe5, n = 4, a = 5  [04]:sum = 6170
src = 0x48, n = 4, a = 8  [05]:sum = 9872
src = 0x83, n = 8, a = 3  [06]:sum = 37037034
src = 0xec, n = 4, a = 2  [07]:sum = 2468
src = 0x30, n = 3, a = 0  [08]:sum = 0
src = 0x89, n = 8, a = 9  [09]:sum = 111111102
src = 0x7d, n = 7, a = 3  [10]:sum = 3703701
src = 0xdc, n = 3, a = 2  [11]:sum = 246
src = 0x48, n = 4, a = 8  [12]:sum = 9872
src = 0x89, n = 8, a = 9  [13]:sum = 111111102
src = 0x75, n = 7, a = 5  [14]:sum = 6172835
src = 0xd0, n = 3, a = 0  [15]:sum = 0
src = 0x48, n = 4, a = 8  [16]:sum = 9872
src = 0xc7, n = 2, a = 7  [17]:sum = 84
src = 0x45, n = 4, a = 5  [18]:sum = 6170
src = 0xf8, n = 5, a = 8  [19]:sum = 98760
src = 0x7c, n = 7, a = 2  [20]:sum = 2469134
src = 0x05, n = 0, a = 5  [21]:sum = 0
src = 0x40, n = 4, a = 0  [22]:sum = 0
src = 0x00, n = 0, a = 0  [23]:sum = 0
src = 0xc7, n = 2, a = 7  [24]:sum = 84
src = 0x45, n = 4, a = 5  [25]:sum = 6170
2021-08-30 09:29
我善治鬼
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:16
帖 子:105
专家分:171
注 册:2015-2-16
收藏
得分:4 
程序代码:

#include <windows.h>

int main()
{
    int n = 5, a = 3, t = 0, s = 0;
    while (n-- > 0) s += (t = t * 10 + a);

    char buf[100] = { 0 };
    wsprintfA(buf, "s=%d", s);
    MessageBoxA(0, buf, buf, MB_OK);
}



Windows 并不提供 stdio.h 头文件, 为什么呢? 因为它的速度实在太慢了, 例如字符串和整数之间的转换, 自己手动实现的都比标准库实现的速度快几十甚至几百倍, Windows有自己IO操作函数, 例如lstrlenA(), lstrcatA(), wsprintfA(),CreateFile(), 等等, 有些已经过期了, 能自己实现的尽量自己实现

[此贴子已经被作者于2021-8-30 15:55编辑过]

2021-08-30 15:43
小菜鸡我最菜
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2020-3-19
收藏
得分:4 
回复 7楼 我善治鬼
最后一行的是什么函数
2021-08-31 11:21
我善治鬼
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:16
帖 子:105
专家分:171
注 册:2015-2-16
收藏
得分:0 
回复 8楼 小菜鸡我最菜
打印显示字符串

程序代码:

#include <windows.h>

int main()
{
    while (MessageBoxA(NULL, "这是正文字符串, 继续显示吗?", "这是标题字符串", MB_YESNO) == IDYES);
    return 0;
}


2021-08-31 15:25
yyangdid
Rank: 1
等 级:新手上路
威 望:1
帖 子:2
专家分:4
注 册:2021-4-24
收藏
得分:4 
程序代码:
#include <stdio.h>

int sum(int n, int a);

int main() {
  int n, a;
  printf("please input two number:");
  scanf("%d%d", &n, &a);
  printf("\b\b= %d\n", sum(n, a));
}

int sum(int n, int a) {
  int s = 0;
  int tmp = a;
  for (int i = 1; i <= n; i++) {
    s += tmp;
    printf("%d + ", tmp);
    tmp = tmp * 10 + a;
  }
  return s;
}


[此贴子已经被作者于2021-9-3 21:25编辑过]

2021-09-03 21:20
快速回复:【求组】新人写的小代码有点问题
数据加载中...
 
   



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

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