我对C很陌生,所以请保持温和,为什么我的代码不起作用,善待并帮助我弄明白为什么它没有,如果它可以缩短它而不会太复杂,请帮助。
main.c
#include <stdio.h>
#include <stdlib.h>
#include "swap.h"
#include "magic.h"
int main(int argc, char *argv[])
{
int i,j,count;
int min=atoi(argv[1]);
int max=atoi(argv[2]);
if(min>max)
{
swap(&min, &max);
}
if (min<0)
{
min=1;
}
if(argc<2 || argc>5){exit(EXIT_FAILURE);}
else
{
magic();
}
}
Magic.c
#include <stdlib.h>
#include <stdio.h>
#include magic.h
magic(char *argv[])
{
for(i = min; i<=max; i++)
{
count = 0;
for(j=2; j<=i/2; j++)
{
if(i%j==0)
{
count++;
break;
}
}
if(count==0 && i!= 1 && i!= 0)
printf("%d \n",i);
}
return 0;
}
答案 0 :(得分:1)
尝试使用函数和有意义的名称:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool is_prime (int n)
{
int i;
if (n < 2)
return false;
for (i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
// assume min <= max
void display_primes_in_range (int min, int max)
{
int i;
for (i = min; i <= max; i++) {
if (is_prime (i)) {
printf ("%d\n", i);
}
}
}
void swap_int (int *a, int *b)
{
int c = *a;
*a = *b;
*b = c;
}
int main (int argc, char *argv[])
{
int min;
int max;
if (argc != 3)
exit (EXIT_FAILURE);
min = atoi (argv[1]);
max = atoi (argv[2]);
if (min > max)
swap_int (&min, &max);
display_primes_in_range (min, max);
return EXIT_SUCCESS;
}
答案 1 :(得分:0)
为简单起见,这是单个文件
#include <stdio.h>
#include <stdlib.h>
void swap(int *a,int *b){
int c=*a;
*a=*b;
*b=c;
}
void magic(int min, int max);
int main(int argc, char *argv[])
{
int min,max;
if(argc!=3) // (argc<2 || argc>5)
exit(EXIT_FAILURE);
min=atoi(argv[1]);
max=atoi(argv[2]);
if(min>max)
swap(&min, &max);
if (min<0)
min=1;
magic(min,max);
return EXIT_SUCCESS;
}
void magic(int min, int max){
int i,j,count;
for(i = min; i<=max; i++){
count = 0;
for(j=2; j<=i/2; j++) {
if(i%j==0){
count++;
break;
}
}
if(count==0 && i!= 1 && i!= 0)
printf("%d \n",i);
}
}
答案 2 :(得分:0)
您的代码中有一些错误:
您尝试在函数min
中使用变量max
,count
和magic
但是因为它们是在main
函数{{}中声明的1}}没有他们的知识。
您应该更改magic
功能,如:
main
和您的#include <stdio.h>
#include <stdlib.h>
#include "swap.h"
#include "magic.h"
int main(int argc, char *argv[])
{
int min=atoi(argv[1]);
int max=atoi(argv[2]);
if(min>max)
{
swap(&min, &max);
}
if (min<0)
{
min=1;
}
if(argc<2 || argc>5){exit(EXIT_FAILURE);}
else
{
magic(min, max);
}
return EXIT_SUCCESS;
}
功能:
magic
在#include <stdlib.h>
#include <stdio.h>
#include "magic.h"
int magic(int min, int max)
{
int count;
for(int i = min; i<=max; i++)
{
count = 0;
for(int j=2; j<=i/2; j++)
{
if(i%j==0)
{
count++;
break;
}
}
if(count==0 && i!= 1 && i!= 0)
printf("%d \n",i);
}
return 0;
}
函数中,我按main
更改magic();
,以便将参数传递给函数,该函数可以在magic(min, max);
中使用新签名magic
进行检索。
由于int magic(int min, int max)
函数返回一个整数,所以不要忘记在函数的签名中指定返回值。