
int a,b;
scanf("%d%d",&a,&b);//参数必须是指针(地址)才可以。
scanf()函数要求参数必须是指针类型,即将地址传输到其内,才可以让a , b变量中获取到数据。
如果你学过指针,你就会理解了。
C语言中函数的调用中,参数传递,只能传递数值。如果只是将数值传递过去(接收者是形参),在子函数中变化,形参的变化,不会影响到实参数据的内容。
C中,每定义一个变量,系统都会在内存中给其分配一个空间用来存储数据。而这个空间的编号就是这个变量的地址。当我们将这个地址传递到子函数中,子函数在 *** 作数据时,就会改变这个地址中的数据,这样,实参的数据是会发生变化。
而你程序中,传递的是a b本身的值(可能是0,可能是1,可能是任意的数),scanf()将这两个值当作地址去 *** 作,因此会产生系统错误,导致程序运行停止。
计算机的计算速度是很快,有时候为了与其他因素相匹配,需要控制其运行的时间,这里便要用到Sleep(函数,其包涵在windowsh头文件中。方法如下:
打开C-Free,新建文件;点击编辑,输入Sleep函数代码即可。说明:
Sleep函数包涵在头文件windowsh中。Sleep函数括号中为系统停止运行的时间,可以为数字也可以为整型变量,单位为毫秒。
main()
{
;
/ 需要按键暂停或停止部分,通常是循环体/
#define STOP_KEY 'm'
while(你的循环条件) {
if(kbhit()) {
char ch=getchar();
if(ch == STOP_KEY) break; /中止循环/
}
}
;
}
int i,j;
//[6][6]不是76
int grade[6][6]={80,90,75,82,0,0,90,75,88,95,0,0,68,78,88,82,0,0,72,85,63,86,0,0,95,88,90,85,0,0};
char name[5][10]={"李一","成红","王强","张一","席二"};
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
grade[i][4]+=grade[i][j];
}
grade[i][5]=(grade[i][4])/4;
}
/for(j=0;j<4;j++)//这条没用不知道干嘛
{
for(i=0;i<5;i++)
{
grade[j][5]+=grade[i][j];
}
grade[i][6]=(grade[5][j])/5;
}/
printf("姓名 语文 数学 英语 综合 总分 平均分\n");
printf("--------------------------------------------------------------------\n");
for(i=0;i<5;i++)
{
printf("%s\t",name[i]);
for(j=0;j<6;j++)
{
printf(" %d",grade[i][j]);
//printf("\n");
}
printf("\n");
}
printf("--------------------------------------------------------------------\n");
printf("各科平均 ");
for(j=0;j<4;j++)
{
printf("%61d\t",grade[j][5]);
//printf("\n");
}
以上就是关于C语言程序已停止工作是怎么回事全部的内容,包括:C语言程序已停止工作是怎么回事、C语言中如何控制程序暂停、c语言里面,如何设置一个按键使程序停止等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)