红粉动江湖粤语土豆:帮我看下这代码

来源:百度文库 编辑:高校问答 时间:2024/05/09 10:30:27
#include <stdio.h>
#define N 10
main()
{
int i=0,s[N]={1,2,3,4,5,6,7,8,9,10},a=0,j=0;
for(i=0;i<N;i++)
printf("%d",s[i]);

printf("\nInput a:");
scanf("%d",&a);

for(i=0;i<N;i++)
if(s[i]==a)break;

if(i<N)
{ for(j=i;j<9;j++)
s[j]=s[j+1];
for(i=0;i<N-1;i++)
printf("%d",s[i]);
printf("\n");
}

else
printf("%d not been found.\n",a);
}

强烈要求高手分析这句
if(i<N)
{ for(j=i;j<9;j++)
s[j]=s[j+1];
for(i=0;i<N-1;i++)
printf("%d",s[i]);
那个N等于多少啊

if(i<N)
{
将当前从输入值位置,向前提一位。
例如如果当前输入值为5
则前一段程序执行到1 2 3 4 跳出
下两行代码执行 将s[6]=s[7],s[7]=s[8],s[8]=s[9].....

for(j=i;j<9;j++)
s[j]=s[j+1];

打印s数组现在的值

for(i=0;i<N-1;i++)
printf("%d",s[i]);

printf("\n");
}

#define N 10
告诉了你 N 等于 10
N 不是变量, 编译的第一步就已把程序中的量 N 用 10 替换了.
即:
if(i<10)
{
for(j=i;j<9;j++) s[j]=s[j+1];
for(i=0;i<10-1;i++) printf("%d",s[i]);

如果i小于N则
{
循环j从i到9,j不断递增
数组s[j]等于s[j+1]
再循环,i从0开始到N-1,i不断递增
屏幕打印s[i]中的值
}
祝你好运,新年快乐,我的msn:vicbay@gmail.com

N=10
作用是去除1-10中的一个数字,这个数字由用户输入(a)
//从去除a的地方,让a后面的数字前移,然后打印去掉a之后数组中的的数字。
if(i<N)
{ for(j=i;j<9;j++)
s[j]=s[j+1];
for(i=0;i<N-1;i++)
printf("%d",s[i]);