求解一道C语言题目

2024-12-22 01:42:57
推荐回答(4个)
回答1:

#include

#include

#include


int GetPrime(int a[], int b[], int n) {

  int C = 0;

  for(int i = 0; i < n; i++) {

    int j;

    if(a[i] == 1 || a[i] % 2 == 0)

      continue;

    for(j = 2; j * j <= a[i]; j++)

      if(a[i] % j == 0)

        break;

    if(j * j > a[i])

      b[C++] = a[i];

  }

  return C;

}


int main() {


  int a[20], b[20], n;

  srand(time(NULL));

  for(int i = 0; i < 20; i++)

    a[i] = rand() % 99 + 1;

  n = GetPrime(a, b, 20);

  printf("原始数组:\n");

  for(int i = 0; i < 20; i++)

    printf("%d%c", a[i], i % 5 == 4 ? '\n' : ' ');

  if(n == 0)

    printf("\nNO");

  else {

    printf("\n素数数组:\n");

    for(int i = 0; i < n; i++)

      printf("%d%c", b[i], i % 5 == 4 ? '\n' : ' ');

  }

  putchar('\n');

  return 0;

}

回答2:

……--和>是分开的。argc最少为1,因为argv[0]是你的文件名,也就是filel。。

main(int argc,char *argv[ ]) //这是说这个程序,包含自己的程序名在内,有argc个参数,每个参数分别作为字符串存在argv这个数组里。

{ while(argc-->0) //条件判断argc是否大于0,判断后argc减1。

{ ++argv;//argc数组指针前移。

printf("%s".*argv); //打印argv这个地址对应的字符串。。。

}
}

哥们写这么细了。。明白了吧。。。

回答3:

结果[无空格]
CHINABEIJINGSHANGHAI


FILEL CHINA BEIJING SHANGHAI
文件名 参数1 参数2 参数3
argv[0] argv[1] [2] [3]
argc=3

while () 后自减>0 即3次循环
每次输出后一个argv[]的字串值(即从[1]开始输出)

回答4:

首先--与>是两个符号,argc先于0比较然后再自减