鱼C论坛

 找回密码
 立即注册
查看: 960|回复: 2

[已解决]写入数组时的访问权限冲突

[复制链接]
发表于 2021-1-6 23:17:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
int  n, S, lc, ls = 0;
int i;
void xxx(int a[],int b[],int c[],int i) {
        int k = 1, flag, ll = 1;
        flag = i;
        do {
                a[k] = i % 10;
                flag = flag / 10;
                k++;
                ll++;
        } while (!flag);
        ll--;
        for (int j = 1; j <= i; j++)
        {
                b[j] = a[j];
        }
        lc = ll + ll;
        for (k = 1; k <= ll; k++)
        {
                for (int j = 1; j <= ll; j++)
                {
                        c[k + j - 1] += a[k] * b[j];
                        c[k + j] += a[k] * b[j] / 10;
                        c[k + j - 1] = a[k] * b[j] % 10;
                }
        }

}
void addd(int sum[], int a[], int b[], int c[]) {
        for (int k = 1; sum[k] != 0; k++)
        {
                ls++;
        }
        for (int j = 1; j <= lc; j++)
        {
                b[j] = c[j];
        }
        for (int k = 1; k <= ls; k++)
        {
                b[k] = sum[k];
        }
        ls = max(lc, ls) + 1;
        for (int j = 1; j <= ls; j++)
        {
                sum[j] += a[j] + b[j];

                sum[j + 1] = sum[j] / 10;
                sum[j] = sum[j] % 10;
        }
}
int main() {
        int a[100], b[100], c[100], sum[100];
       
        cin >> n;
        a[1] = 1;
        sum[1] = 1;
        for (i = 1; i <= n; i++)
        {
                xxx(a,b,c,i);
                addd(sum,a,b,c);
        }
        if (sum[ls] == 0 && ls > 0)ls--;
        for (i = ls; ls > 0; ls--)
        {
                cout << sum[i];
        }
        return 0;
}





执行到                a[k] = i % 10;这条语句时发生访问权限冲突,求大神指导,脑袋想不出来啦
最佳答案
2021-1-7 08:54:57
错误1:
xxx()函数里
   do {
                a[k] = i % 10;
                flag = flag / 10;
                k++;
                ll++;
        } while (!flag); //循环条件错误,当flag 初值小于10时,是个死循环,因此,循环结束条件应该是 while(flag)

错误2:
main()函数里
int a[100], b[100], c[100], sum[100];  数组没有初始化就使用。
应该写成
int a[100]={0}, b[100]={0}, c[100]={0}, sum[100]={0};
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-7 08:54:57 | 显示全部楼层    本楼为最佳答案   
错误1:
xxx()函数里
   do {
                a[k] = i % 10;
                flag = flag / 10;
                k++;
                ll++;
        } while (!flag); //循环条件错误,当flag 初值小于10时,是个死循环,因此,循环结束条件应该是 while(flag)

错误2:
main()函数里
int a[100], b[100], c[100], sum[100];  数组没有初始化就使用。
应该写成
int a[100]={0}, b[100]={0}, c[100]={0}, sum[100]={0};
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-7 10:42:17 | 显示全部楼层
xieglt 发表于 2021-1-7 08:54
错误1:
xxx()函数里
   do {

谢谢谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 07:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表