小白求助~~ C语言基础题目~~

小丫么小菜鸡 2018-11-21 10:36:54
题目:输入两个整数a和n,求a+aa+aaa+aaaa+aaaaa........(n个a之和)
以下是我的代码:
------------------------------------------------------------------------------

#include<stdio.h>
#include<math.h>
int fn(int a,int n);
int main(){
int a,n;
scanf("%d",&a);
scanf("%d",&n);

printf("%d",fn(a,n));
}
int fn(int a,int n){
int t,b,sum,result=0;
for(int i=n;i>=1;i--){
t = pow(10,i);
sum = 0;
while(t!=0){
b = t*a;
sum = sum +b;
t = t/10;
}
result = sum + result;
}
return result;

---------------------------------------------------------
我输入a=8 n=5 得出987640 但是答案却是98760,求大神帮忙看看我哪错了,谢谢啦
...全文
1413 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
深海龙虾 2018-12-05
  • 打赏
  • 举报
回复
t = pow(10,i);改成t = pow(10,i-1);就可以了
qq_42077455 2018-12-03
  • 打赏
  • 举报
回复
可以试着用单步调试和设断点调试找出问题。
阿茶大人 2018-11-26
  • 打赏
  • 举报
回复
#include<stdio.h> void main() { int a,n; printf("请分别输入a和n的值:\n"); scanf("%d %d",&a,&n); int i,r=0, d=1; for(i=n;i>0;i--) { r=r+a*i*d; d=d*10; } printf("a+aa+aaa+...+aa...a=%d\n",r); }可以看一下我写的,比较简单
xuansr 2018-11-26
  • 打赏
  • 举报
回复
引用 26 楼 weixin_43775585的回复:
我用JAVA做出来的,前段时间我弟才问的我这个题……用了两个for循环,等我拿出电脑给你发源码
表示没学过c,直接学的JAVA。。
大苟姬 2018-11-25
  • 打赏
  • 举报
回复
引用 5 楼 xueyu人生的回复:
int fn(int a,int n){
int t,b,sum,result=0;
for(int i=n;i>=1;i--){
t = pow(10,i);//很明显这里错误,假如输入5和1,那么你的答案是5*10+5=55,修改为:pow(10,i-1)就可以了
sum = 0;
while(t!=0){
b = t*a;
sum = sum +b;
t = t/10;
}
result = sum + result;
}
return result;
说的没错,指数大了1的。
Csdn技术大神 2018-11-24
  • 打赏
  • 举报
回复
自己调试然后慢慢成长
阿惹一号 2018-11-24
  • 打赏
  • 举报
回复
我做的这样#include<stdio.h> int main() { int n,a,j,i,sum=0; scanf("%d%d",&a,&n); for( i=1;i<=n;i++) { for(j=1;j<i;j++) { a=a*10+a; } sum=sum+a; } printf("%d\n",sum); return 0; }
阿惹一号 2018-11-24
  • 打赏
  • 举报
回复
我觉得可以用循环结构
qq_43587493 2018-11-23
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
int main()
{
int a,n,m,s=0,i;
scanf("%d %d",&a,&n);
m=a;
for(i=1;i<=n;i++)
{
s=s+a;
a=a+m*pow(10,i);}
printf("%d",s);
return 0;

}
qq_41967025 2018-11-23
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师的回复:
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
受益匪浅 非常感谢。
baidu_41935004 2018-11-23
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。[quothttps://blog.csdn.net/vivien1997/article/details/78681508[/quote]
I`m 德古拉 2018-11-22
  • 打赏
  • 举报
回复
引用 9 楼 niiiloc的回复:
请在几个关键点加上printf,以后这类问题你再也不用到论坛上问
做一个硬件软件能够把 (某种情况下自动输入的数据发送到指定用户的手机上) 第一种…短信方式 第二种…关注的公众号上 譬如产品(共享纸巾机的工作)
I`m 德古拉 2018-11-22
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
进击的cxy 2018-11-22
  • 打赏
  • 举报
回复
这个你可以尝试下另n和a都取个较小的值,然后和人工计算对比验证,看看是否正确,不正确的话,可以逐步调试,看看哪一步和自己想的不一致。 我也是个新手,归根结底码代码自己动手收获更大些。
636f6c696e 2018-11-22
  • 打赏
  • 举报
回复
请在几个关键点加上printf,以后这类问题你再也不用到论坛上问
@风轻云淡_ 2018-11-22
  • 打赏
  • 举报
回复
这种问题,需要自己找到问题,你才能成长。编译器找错误---->调试找错误---->打日志(包括但不限于输出到屏幕)找错误---->演算思考找逻辑错误
慢慢`` 2018-11-22
  • 打赏
  • 举报
回复
#include <iostream> #include<math.h> using namespace std; void f(int n,int a,int *p) { int i; if(n==1) *p=a; else {*p=a; for(i=1;i<n;i++) { *(p+i)=*(p+i-1)+(int)(a*pow(10.0,i)); } } } int main() { int a1,n1,i; long sum=0; int *p; p=(long*)malloc(n1*sizeof(long)); cin>>a1>>n1; f(n1,a1,p); for(i=0;i<n1;i++) cout<<p[i]<<'\t'; cout<<endl; for(i=0;i<n1;i++) sum+=p[i]; cout<<sum<<endl; }
赵4老师 2018-11-21
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
自信男孩 2018-11-21
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>

int fn(int a,int n);

int main()
{
int a,n;
scanf("%d",&a);
scanf("%d",&n);

if (a > 9 && a < 0)
return 0;
if (a == 0) {
printf("%d\n", 0);

return 0;
}

printf("%d\n",fn(a,n));
}
int fn(int a,int n)
{
#if 0
int t,b,sum, result=0;

for(int i = n;i>=1;i--) {
t = pow(10,i);
sum = 0;
while(t!=0){
b = t*a;
sum = sum +b;
t = t/10;
}
result = sum + result;
}
#else
int i, tmp, result;

tmp = a;
result = 0;

for (i = 0; i < n; i++) {
result = result + a;
a = (10 * a) + tmp;
}

#endif
return result;
}

参考一下吧
黑袍甘道夫 2018-11-21
  • 打赏
  • 举报
回复
勒索木马是用这个语言写的吗
加载更多回复(5)

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧