首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新人程序不能运行

2012-11-03 
新人求助:程序不能运行班级需要一个抽签程序,我试编如下:[codeC/C++][/code]#include stdio.h#include

新人求助:程序不能运行
班级需要一个抽签程序,我试编如下:
[code=C/C++][/code]#include <stdio.h>
#include <stdlib.h>
int checknum(num,CS) 
{
int checkcode[]={1};
  int n=CS,u;
checkcode[n]=num;
  for(u=0;u<n;u++)
{
if(checkcode[u]==checkcode[n])
return 1;
}
return 0;
}
int main (void)
{ int code[]={1};
int total,i,k,m;
k=1;
srand((unsigned)time(NULL));
printf("请输入被选学生数:\n");
scanf("%d",&total);
for(i=0;i<total;i++)

  do
{
  k=1+rand()%47;
m=checknum(k);
}while(m=1);
  code[i]=k;  
}
for(i=0;i<total;i++)
  printf("被选学生为:%d\n",code[i]);
return 0;
}

 

 
但编译后运行结果:指令应用的内存地址不能为“written”
求解释,同求代码修改
备注:程序要求是由用户指定抽取的学生人数total,程序给出total个在1至47之间的学号,要求不能重复。

[解决办法]
楼主要仔细看看下面3行代码:

C/C++ code
int checkcode[]={1};     // checkcode的长度为1int n=CS,u;checkcode[n]=num;        // 如果此处n>0的话,就会出错了。
[解决办法]
第三行:
int checknum(num,CS)
两个形参没有类型。

第五行:
int checkcode[]={1};
数组元素只有1个,后面一定越界

主函数第二行:
int code[]={1};
同理

主函数第十三行:
m=checknum(k);
函数的实参只有一个,与定义不符

。。。。。能通过编译吗?
[解决办法]
while(m=1); m==1
[解决办法]
或者在程序最后面添一句getchar();
[解决办法]
具体的修改就是:

scanf("%d",&total);
getchar();//吸取上次输入的回车符;

scanf("%c",&YN); //%c\n 改为%c
getchar();//吸取上次输入的回车符;
gcc通过编译;

热点排行