程序C:函数求之前,请有事大家帮帮我看一下我的代码哪儿有错,错误情况是TLE,急需!!谢谢

请大家帮我看一下这几个c++程序题,万分感谢!_百度知道
请大家帮我看一下这几个c++程序题,万分感谢!
1、下列关于多态性的描述,错误的是:A.c++语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数的重载实现C.运行时的多态性可通过模板和虚函数实现的D.实现运行时的多态性的机制贝称为动态绑定2、不能作为重载函数的调用的依据的是:A. 参数个数
B. 参数类型
C. 函数类型
D 函数名称我觉得C、D都不对啊!D显然不对,C好像也不对吧?3、函数fun(char*p){}的返回值是:A.无确切值
B.形参p中存放的地址值C.一个临时的存储单元的地址 D.形参p自身的地址值请大家给出答案的同时给小弟解释一下,万分感谢!
提问者采纳
1。模板不属于运行时的多态性,应该是编译时的多态性因为在模板特化的时候,编译器自动生成了相应的代码2。C。重载函数必须在同一个作用域内,且函数名相同,参数个数或参数类型至少有一个不同。所以编译器在查找函数时要依据以上三种标志。3。B。形参中p存放的地址值。实参传进来的时候就按值拷贝了一个地址值,返回的时候就是实参的地址值,也就是P中存放的地址值。自己写个测试程序吧
提问者评价
十分感谢,呵呵
其他类似问题
按默认排序
其他1条回答
1、D 成为动态联编2、C 重载函数名称相同,调用是的区分依据是参数个数不同或参数类型至少有一个不同。返回值类型不作为区分依据。3、……不清楚,没试出来,难道是A?楼主有答案发一下
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言程序出现N多错误,麻烦大家帮我改改,谢谢._百度知道
C语言程序出现N多错误,麻烦大家帮我改改,谢谢.
sort(a,n)int a[],n;{ int l,k,r,j,t; for(l=1,r=n-1,k=n;l&=r;r=k-1) {
for(j=1;j&=1;j--)
if(a[j-1]&a[j])
a[j-1]=a[j];
for(j=l=k+1;j&=r;j++)
if(a[j-1]&a[j])
a[j-1]=a[j];
} }}#include &stdio.h&main(){ {
int num,i,a[100];
scanf(&%d&,&num);
if(num&100)
puts(&Too many number!&);return(0); } {
for(i=0;i&i++)
scanf(&%d&,&a[i]);
sort(a,num);
for(i=0;i&i++)
printf(&%d&;a[i]); }}--------------------Configuration: weiu - Win32 Debug--------------------Compiling...weiu.cC:\Windows\System32\weiu.c(35) : error C2065: 'i' : undeclared identifierC:\Windows\System32\weiu.c(35) : error C2065: 'num' : undeclared identifierC:\Windows\System32\weiu.c(36) : error C2065: 'a' : undeclared identifierC:\Windows\System32\weiu.c(36) : error C2109: subscript requires array or pointer typeC:\Windows\System32\weiu.c(36) : error C2102: '&' requires l-valueC:\Windows\System32\weiu.c(39) : error C2143: syntax error : missing ')' before ';'C:\Windows\System32\weiu.c(39) : error C2109: subscript requires array or pointer typeC:\Windows\System32\weiu.c(39) : error C2059: syntax error : ')'执行 cl.exe 时出错.weiu.obj - 1 error(s), 0 warning(s)我按照教程视频上老师编写的程序敲入的,但是不知道为什么那么多错.老师用的是TB,我用的是VC.
提问者采纳
这什么教材啊,也太烂了,下面的已经改好了,编译运行都OK了:#include &stdio.h&//头文件必须放在最前面void sort(int a[],int n)//VC的话,函数的参数这么写{ int l,k,r,j,t; for(l=1,r=n-1,k=n;l&=r;r=k-1) {
for(j=1;j&=1;j--)
if(a[j-1]&a[j])
a[j-1]=a[j];
for(j=l=k+1;j&=r;j++)
if(a[j-1]&a[j])
a[j-1]=a[j];
} }}main(){// {
//这里不用{
int num,i,a[100];
scanf(&%d&,&num);
if(num&100)
{//这里需要加一个{
puts(&Too many number!&);return(0);
}// { //这里不用{
for(i=0;i&i++)
scanf(&%d&,&a[i]);
sort(a,num);
for(i=0;i&i++)
printf(&%d&,a[i]);//&%d&后面不是;应该是,// }
//这里不用}}
提问者评价
十分感谢大家.可能那视频太老了,但是没办法,只有这个视频比较完整.
其他类似问题
c语言程序的相关知识
其他5条回答
怎么include包含语句在Sort函数下面啊,#include &stdio.h&应该在最开头吧
你这是函数定义已经是老式C语言的语法了#include &stdio.h&void sort(int a[],int n){ int l,k,r,j,t; for(l=1,r=n-1,k=n;l&=r;r=k-1) {
for(j=r;j&=1;j--)
if(a[j-1]&a[j])
a[j-1]=a[j];
for(j=l=k+1;j&=r;j++)
if(a[j-1]&a[j])
a[j-1]=a[j];
} }}main(){
int num,i,a[100];
scanf(&%d&,&num);
if(num&100)
puts(&Too many number!&);
return(0);
for(i=0;i&i++)
scanf(&%d&,&a[i]);
sort(a,num);
for(i=0;i&i++)
printf(&%d &,a[i]);}
#include&stdio.h&应该放在最开头,还有printf(&%d&;a[i])改为printf(&%d&,a[i])里面是用逗号作分隔符而不是;(分号)。
晕,你那主函数怎么这样写啊。main(){ {
//这是多余的大括号,和下面那个一样,怎么这样呢?
int num,i,a[100];
scanf(&%d&,&num);
if(num&100)
puts(&Too many number!&);return(0); }
//和上面一样,多余,正是因为这个大括号,把i,num,a[100]都变成了块中的局部变量,所以到下面就有了i,num,a这些没有被定义的错误。 {
for(i=0;i&i++)
scanf(&%d&,&a[i]);
sort(a,num);
for(i=0;i&i++)
printf(&%d&;a[i]);
//中间的“;&用错了,应该用”,“。
//多余} 去掉多余的,再加上你之前那个函数,就正确了,至少主程序正确了,那个sort函数就不知道了,至少在编译里是正确的,没有运行过,因为你的sort函数写得太,太难懂了,也没有什么文字解释,可读性太差。。。
#include&stdio.h&void sort(int a[],int n)//最基本的函数定义你还不懂啊
太菜了你{ int i,j,t; for(i=0;i&n;i++) {
for(j=0;j&n-i-1;j++)
if(a[j]&a[j+1])
a[j+1]=a[j];
} }}#include &stdio.h&int main(){ //不要把他们加在大括号内
那样变量不会被括号外的程序识别
int num,i,a[100];
scanf(&%d&,&num);
if(num&100)
{//括号要扩在if下面
puts(&Too many number!&);
return(0);
for(i=0;i&i++)
scanf(&%d&,&a[i]);
sort(a,num);
for(i=0;i&i++)
printf(&%d&,a[i]);//中间数逗号
不是分号 return 0;}我真怀疑你那破视频是什么垃圾玩意
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁我是C语言的初学者,写了俩个程序,可都运行错误。希望大家帮忙找到错误。一百分悬赏
谢谢了_百度知道
我是C语言的初学者,写了俩个程序,可都运行错误。希望大家帮忙找到错误。一百分悬赏
1关于矩阵乘法#include&stdio.h&void
multiply(int A[5][5],int B[5][5]){ int i,j,t,C[5][5]; for(i=0;i&5;i++)
for(j=0;j&5;j++)
{ C[i][j]=0;
for(t=0;t&5;t++)
C[i][j]=C[i][j]+A[i][t]*B[t][j];
int i,j,m,n,A[5][5],B[5][5],C[5][5]; printf(&input m and n(1~5):&); scanf(&%d %d&,&m,&n); printf(&input A%d*%d:&,m,n); for(i=0;i&m;i++)
for(j=0;j&n;j++) scanf(&%d&,&A[i][j]);
printf(&input B%d*%d:&,n,m); for(i=0;i&n;i++)
for(j=0;j&m;j++) scanf(&%d&,&B[i][j]);
multiply(A,B); printf(&C=A*B is:\n&);
for(i=0;i&m;i++)
{for(j=0;j&m;j++)
printf(&%d&,C[i][j]);
printf(&\n&);
}}输入字符串并排序#include&stdio.h&#include&string.h&void sort(char *name[],int n){ char *p;int i,j,k; for(i=0;i&n-1;i++) {k=i;
for(j=i+1;j&n;j++)
if(strcmp(name[k],name[j])&0)
{ p=name[i];name[i]=name[k];name[k]=p;}
}}void print(char *name[],int n){ for(i=0;i&n;i++)
printf(&%s&,name[i]);}main(){
char *name[10]; for(i=0;i&10;i++)
scanf(&%s&,name+i);
sort(name,10);
print(name,10);}大家告诉我其中的错误,越详细越好,谢了
第二题要求不能限制每个字符串输入的长度,例如可能有101个字符,这样怎样改呢?
提问者采纳
第一个程序中,multiply函数中定义的C数组和main函数的C数组不是同一个,multiply函数运行完后,里面定义的C数组已经销毁,在这个函数执行的过程中,main中的C数组没有被做任何操作,若想让程序正确执行,应把C定义成一个全局变量,或在multiply中传入C这个参数;还有一个问题是multiply函数中,C数组并不一定是5*5的,应该传入维数参数#include&stdio.h& int C[5][5];/* 全局变量C */void multiply(int A[5][5],int B[5][5],int m,int n) {
int i,j,t; /* 去除此处C数组的定义 */ for(i=0;i&m;i++)
for(j=0;j&n;j++)
C[i][j]=0;
for(t=0;t&n;t++)
C[i][j]=C[i][j]+A[i][t]*B[t][j];
} } main() { int i,j,m,n,A[5][5],B[5][5]; /* 去除此处C数组的定义 */printf(&input m and n(1~5):&); scanf(&%d %d&,&m,&n); printf(&input A%d*%d:&,m,n); for(i=0;i&m;i++)
for(j=0;j&n;j++)
scanf(&%d&,&A[i][j]); printf(&input B%d*%d:&,n,m); for(i=0;i&n;i++)
for(j=0;j&m;j++)
scanf(&%d&,&B[i][j]); multiply(A,B,m,n); printf(&C=A*B is:\n&); for(i=0;i&m;i++) {
for(j=0;j&n;j++)
printf(&%d&,C[i][j]);
printf(&\n&); } } 这样两个函数就共用一个C数组了.或者#include&stdio.h& void multiply(int A[5][5],int B[5][5],int C[5][5],int m,int n) /*加一个参数*/{
int i,j,t;
for(i=0;i&m;i++)
for(j=0;j&n;j++)
C[i][j]=0;
for(t=0;t&n;t++)
C[i][j]=C[i][j]+A[i][t]*B[t][j];
} } main() { int i,j,m,n,A[5][5],B[5][5],C[5][5]; printf(&input m and n(1~5):&); scanf(&%d %d&,&m,&n); printf(&input A%d*%d:&,m,n); for(i=0;i&m;i++)
for(j=0;j&n;j++)
scanf(&%d&,&A[i][j]); printf(&input B%d*%d:&,n,m); for(i=0;i&n;i++)
for(j=0;j&m;j++)
scanf(&%d&,&B[i][j]); multiply(A,B,C,m,n); printf(&C=A*B is:\n&); for(i=0;i&m;i++) {
for(j=0;j&n;j++)
printf(&%d&,C[i][j]);
printf(&\n&); } } 第二个程序是因为char *name[10];只是定义了一个指针数组,并没有给要指向每个字符串的指针分配空间,所以不能把各字符串保存到各指针指的空间中,可以这样改:static char[10][100];这样为每个字符串分配了100个字节的空间.
提问者评价
其他类似问题
其他2条回答
我觉得楼上的回答并没有解决根本问题for(i=0;i&5;i++) for(j=0;j&5;j++) { C[i][j]=0; for(t=0;t&5;t++) C[i][j]=C[i][j]+A[i][t]*B[t][j]; } 行与列是1-5之间的数.而在没输入之前谁会知道.显然用&5是错的.至于C数组的确定义全局变量很好.#include&stdio.h&multiply(int A[5][5],int B[5][5],int m,int n)/*m,n作为参数*/{ int i,j,j1,C[5][5]={{0}};/*先把C赋0*/for(i=0;i&m;i++)/*结果C必为M行M 列*/for (j=0;j&m;j++){ for(j1=0;j1&n;j1++) C[i][j]=C[i][j]+A[i][j1]*B[j1][i];}printf(&C=A*B is:\n&);/*可以就在这个函数中输出结果,就不再要定义全局变量*/for(i=0;i&m;i++){for(j=0;j&m;j++) printf(&%d
&,C[i][j]); printf(&\n&);}}main(){int i,j,m,n,A[5][5],B[5][5],C[5][5];printf(&input m and n(1~5):&);scanf(&%d %d&,&m,&n);printf(&input A%d*%d:&,m,n);for(i=0;i&m;i++){for(j=0;j&n;j++){scanf(&%d&,&A[i][j]); printf(&%d &,A[i][j]);}printf(&\n&) ;}printf(&input B%d*%d:&,n,m);for(i=0;i&n;i++){for(j=0;j&m;j++) { scanf(&%d&,&B[i][j]);
printf(&%d &,B[i][j]); }printf(&\n&);} multiply(A,B,m,n);getch();}我有事情在忙,还有一个问题就不看了不好意思。
动态分配。malloc
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁第一次用函数模板,出错了,大家帮我看看_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:140,296贴子:
第一次用函数模板,出错了,大家帮我看看收藏
我自己看了很久也没有找到错误,所以只能来这里求助了。代码如下://前面已经声明Drug类//这两个函数也已经定义void operator && ( ifstream fin, Drug &d );void operator && ( ostream cout, Drug &d );//a collection of drugsclass DrugSet{public: DrugSet(){} ~DrugSet(){}protected: vector&Drug*&};//是这个template& class type &void ThingSet::OpenFile( string fileName, vector&type*& &t ){
fin.open( fileName.c_str() ); if( !fin ){
cout && "error 1: can't open this file"
&& fileName && } else{
type * newPt;
while( fin.good() ){
fin && *newPt;
t.push_back( newPt );
} }}//这里调用ThingSet::ThingSet(){ OpenFile&Drug&( "Drug.txt", drugs );
//错误指向这里}error C2664: “void ThingSet::OpenFile&Drug&(std::string,std::vector&_Ty,_Ax& &)”: 不能将参数 2 从“std::vector&_Ty&”转换为“std::vector&_Ty,_Ax& &”各位高手帮我看看,我写程序的经验并不太多,所以有一些低级的错误的话,大家不要笑我……
那应该怎么改呢?这个模板的功能是从(fileName)这个文件中读取数据,并添加到容器中。有没有什么更好的方法?
好吧,我找到问题了,结贴了!
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
使用签名档&&
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 有事大家帮 的文章

 

随机推荐