謝謝解答
請給這段篩選100以內素數的代碼加上注釋
#include
#include
int main()
{int i,j,n,a[101];
for (i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for (i=2;i<sqrt(100);i++)
for (j=i+1;j<=100;j++)
{if(a[i]!=0 && a[j]!=0)
if (a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for (i=2,n=0;i<=100;i++)
{ if(a[i]!=0)
{printf("%5d",a[i]);
n++;
}
if(n==10)
{printf("\n");
n=0;
}
}
printf("\n");
return 0;
}
為什麼輸出的最後一個數很奇怪
#include
int main()
{
int a[11],i,j,min=0;
for(i=0;i
{printf("a[%d]",i);
scanf("%d",&a[i]);
}
for(j=0;j
{
for(i=j+1;i
{
if(a[i]>a[j])
{a[min]=a[j];
a[j]=a[i];
a[i]=a[min];}//實現取最小
}
}
printf("\nThe sorted numbers:\n");
for (i=1;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
請給這段代碼加上注釋
有一個已排好序的數組,要求輸入一個數後,按原來排序的規律將它插入數組中
#include
int main()
{ int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("array a:\n");
for (i=0;i
printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&number);
end=a[9];
if (number>end)
a[10]=number;
else
{for (i=0;i
{if (a[i]>number)
{temp1=a[i];
a[i]=number;
for (j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;//把a[i]放到了後面
temp1=temp2;
}
break;
}
}
}
printf("Now array a:\n");
for (i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
這段代碼有兩個錯誤,請更正
代碼目的是輸入兩個整數,輸出其中值較大者
#include
int main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max is %d",c);
return 0;
}
int max(int x,int y)
{
int z;
z=x>y?x:y;
return(z);
}
#include
#include
int main()
{int i,j,n,a[101];
for (i=1;i<=100;i++)
a[i]=i;
//這個for是將啊a[1]-a[100]取值為1-100
a[1]=0;//第一個是0 數組中的值為零表示不是素數
// i從2到sqrt(100) 如果這個數能被sqrt(100)之前的數除盡那麼就不是素數 如果從2開始,到它的開方數已經足夠了,自己體會;
for (i=2;i<sqrt(100);i++)
for (j=i+1;j<=100;j++)//這個循環只是遍歷數據
{if(a[i]!=0 && a[j]!=0)//排除零
if (a[j]%a[i]==0)//能被其他數除盡的數一定不是素數置為零
a[j]=0;
}
printf("\n");//循環結束的時候,不是零的數一定是素數
for (i=2,n=0;i<=100;i++)
{ if(a[i]!=0)
{printf("%5d",a[i]);
n++;
}
if(n==10)//一行輸出十個然後換行
{printf("\n");
n=0;//n是一個計數器用來記錄是否已經達到十個 到十個後清零 從新計算
}
}
printf("\n");
return 0;
}
#include
int main()
{
int a[11],i,j,min=0;
for(i=0;i <=10;i++){
printf("a[%d]",i);//這裡是從零開始賦值
scanf("%d",&a[i]);
}
for(j=0;j<=10;j++) {
for(i=j+1;i<=10;i++) {
if(a[i]>a[j])
{a[min]=a[j];
a[j]=a[i];
a[i]=a[min];}//實現取最小
}
}
printf("\nThe sorted numbers:\n");
for (i=1;i<=10;i++)//這裡是從一開始
printf("%d ",a[i]);
printf("\n");
return 0;
}
//看看寫的注釋,一個賦值是從零開始,輸出是從一開始,當然會少一個值
#include
int main()
{ int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("array a:\n");
for (i=0;i <=10;i++)printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&number);
end=a[9];
if (number>end)//這裡是判斷是否大於最大的數,如果是這對數組最大值後一位賦值就行了
a[10]=number;
else
{for (i=0;i <=10;i++) {
if (a[i]>number)
{temp1=a[i];//如果啊a[i]大於輸入的數,將a[i]的值賦予temp1保存,將輸入的值賦予a[i]
a[i]=number;
for (j=i+1;j<11;j++)
{temp2=a[j];//遍歷啊a[i]之後的數 並不斷後移 其實 就是找到a[i]大於輸入值的時候 將之後的所有值包括a[i]後移一位
a[j]=temp1;//把a[i]放到了後面
temp1=temp2;//將a[i+1]的值賦予temp1再循環
}
break;//只要找到剛好大於啊a[i]的時候就進行後移 就實現了 break 退出循環
}
}
}
printf("Now array a:\n");
for (i=0;i<11;i++)
printf("%5d",a[i]);//循環遍歷輸出排序好的數組
printf("\n");
return 0;
}
#include
int max(int x,int y);
int main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max is %d",c);
return 0;
}
int max(int x,int y)
{
int z;
z=x>y?x:y;
return(z);
}
//c語言的函數要在main()之前聲明