第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么調(diào)用的strcpy不能賦值,哪位大蝦知道原因啊,感激不盡!

為什么調(diào)用的strcpy不能賦值,哪位大蝦知道原因啊,感激不盡!

C++
紅顏莎娜 2023-01-03 21:17:29
這是我的.h文件#include<string.h>#include<iostream.h>#define N 12;class Candidate{int votenum;char name[20];public:Candidate(char nam[]);int add(); //添加一票int getvotenum();char * getname();void setname(char nam[]);};class Vote{Candidate *Can_array[12];int size; //候選人數(shù)double percent; //百分比  int sump; //投票人數(shù)public:Vote(char * name[],int n,double std);//初始化,給定候選人和獲選標準void vote1(char *name[],int n);//投票給n個人int GetResult(char *name[],int snum[]);//返回獲選標準,他們的姓名和票數(shù)};Candidate::Candidate(char nam[]){strcpy(name,nam);}int Candidate::getvotenum(){return votenum;} char * Candidate::getname(){return name;}void Candidate::setname(char nam[]){strcpy(name,nam);}int Candidate::add(){return votenum++;}Vote::Vote(char * name[],int n,double std){percent=std;size=0;if(n>12){cout<<"候選人已滿,不可以再添加!"<<endl;}else{for(int i=0;i<n;i++){Can_array[size]->setname(name[i]);size++;} } }void Vote::vote1(char *name[],int n){int i,j;sump=n;for(i=0;i<n;i++)for(j=0;j<size;j++){if(strcmp(Can_array[j]->getname(),name[i])==0)Can_array[j]->add();}}int Vote::GetResult(char *name[],int snum[]){int num,j=0;int n=0;for(int i=0;i<size;i++){num=Can_array[i]->getvotenum();if((num/sump)>=percent){strcpy(name[j],Can_array[i]->getname());snum[j]=Can_array[i]->getvotenum();j++;n++;}}return n;}主函數(shù):#include"vote.h"#include<iostream.h>void main(){char *name0[]={"a","b", "c","d","e"};char *name1[]={"a","a","a","b","c"};char *name3[5];int sum[5];Vote a(name0,5,0.5);a.vote1(name1,5);int n=a.GetResult(name3,sum);cout<<"當選的人有"<<n<<"個"<<endl;for(int i=0;i<n;i++){cout<<name3[i]<<" "<<sum[i]<<endl;}}編譯沒問題,但是在單步調(diào)試時 添加候選人姓名Can_array[size]->setname(name[i]);
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經(jīng)驗 獲得超4個贊

類Vote中的成員變量Can_array聲明為:
Candidate *Can_array[12];
也就是說,Can_array中的每一個元素都是指針,這樣,在沒有為指針分配空間前,是沒法使用的,所以在Vote的構造函數(shù)中使用Can_array[size]->setname(name[i]);必定讓程序Go Down。
解決方法:
一:把聲明中的指針標記"*"去掉,當然,同時之后的操作符也應該有"->"改為"."。
二:把聲明后面的"[12]"去掉,在構造函數(shù)中,預先為其分配空間,使用
Can_array = new Candidate[12];
或者更適合的:
Can_array = new Candidate[n];

查看完整回答
反對 回復 2023-01-06
  • 1 回答
  • 0 關注
  • 196 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號