作者samsandy (阿母跑很快)
看板C_and_CPP
标题[问题]数值无法放入阵列
时间Fri Nov 22 20:21:28 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
OS
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Xcode
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
为什麽输入n,m无法读入阵列
喂入的资料(Input):
18 6
预期的正确结果(Expected Output):
18 things is taken 6 at a time is 18564 exactly
错误结果(Wrong Output):
18564 things is taken 18564 at a time is 18564 exactly
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
//
// main.cpp
// sam
//
// Created by sam on 2019/9/3.
// Copyright ꤠ2019 sam. All rights reserved.
//
#include<iostream>
#include <stdio.h>
using namespace std;
long int lev(long int num){
long int a=1;
for(int i=1;i<=num;i++){
a=a*i;
}
return a;
}
int main(){
int i=0,count=0;
int n,m,k[i],l[i];
long int s[i];
long int num=1;
while(cin>>n>>m){
if(n==0||m==0){
break;
}
k[i]=n;
l[i]=m;
if(m<(n/2)){
m=n-m;
}
for(long int i=n;i>m;i--){
num=num*i;
}
m=n-m;
long int c=num/(lev(m));
s[i]=c;
i++;
count++;
}
for(int i=0;i<count;i++){
printf("%d things taken %d at a time is %ld exactly.\n",l[i],l[i],s[i]);
}
}
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.237.61.190 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1574425290.A.84F.html
1F:→ Lipraxde: 你在宣告阵列的时候 i = 0,然後输出是不是有一个要是 11/22 20:34
2F:→ Lipraxde: k[i] 啊? 11/22 20:34
3F:→ zo6596001: int i =0; 然後下一行又 k[i]; 11/23 00:45
4F:→ zo6596001: 仔细看一下 i 好像又重复宣告... 11/23 01:42
5F:推 LPH66: 拿变数宣告阵列大小时变数的值会使用当下的值 11/23 02:23
6F:→ LPH66: 而不会随着後续更新而更新 11/23 02:23
7F:→ LPH66: 比较简单的解法是估计最大可能阵列大小先行留空 11/23 02:24
8F:→ zo6596001: C语言记忆体的大小全部都要自己宣告 11/23 08:53
9F:→ zo6596001: k[i]的意思其实是 宣告0个记忆体位置给k 11/23 08:54
10F:→ zo6596001: 至於为什麽编得过、跑得了,就要去看产生的指令码了 11/23 08:58
11F:→ Lipraxde: num 这个变数看起来也怪怪的,是不是该放在 while 里? 11/23 13:59