Tag: 函数

在C中重复程序function失败,scanf相关吗?

所以我试图询问用户是否愿意重复我的程序,我偶尔得到一个奇怪的结果。 它不会每次都发生,我无法弄清楚触发它的原因。 对我来说,在我输入’q’到repeatProgram而不是’q’后,它会分配’return’,但我不知道为什么。 工作时的输出: 退出输入q,继续输入y。 小号 你已输入s,这不是一个有效的选项。 失败时的输出: 退出输入q,继续输入y。 q 你进去了 ,这不是一个有效的选择。 代码: char RepeatProgramPrompt() { char repeatProgram; do { printf(“\nTo exit enter q, to continue enter y.\n”); scanf(“%c%*c”, &repeatProgram); repeatProgram = tolower(repeatProgram); if(repeatProgram != ‘y’ && repeatProgram != ‘q’) { printf(“\nYou’ve entered %c, that isn’t a valid option.\n”, repeatProgram); } }while(repeatProgram != ‘y’ && […]

如何定义函数指针数组并且函数没有相同的输入参数定义?

是否可以定义一个函数指针数组(并且函数没有相同的输入参数),如下面的代码所示? 如果是的话我必须把它放在函数定义int (*handler)(/*what Ihave to put here ?*/); struct handler_index { const char *name; int (*handler)(/*what Ihave to put here ?*/); }; int handler0 (int a, int b) { printf(“%d\n”,a+b); } int handler1 (int a, int b, int c) { printf(“%d\n”,a+b+c); } int handler2 (int a, int b, int c, int d) { printf(“%d\n”,a+b+c+d); } […]

函数指针C中的结构

typedef struct Item{ int i; int j; void (*fooprint)(item*); }item; void fooprint(item *it){ printf(“%d\n”,it.i); } int main(){ item myitem; myitem.i=10; myitem.j=20; myitem.fooprint = fooprint; myitem.fooprint(&myitem); return 0; } 此代码在void( footprint)(item )中给出错误。 “错误是预期’)””’令牌”之前。 我错过了什么吗? 当我这样做而不使用指针结构是有效的。 示例:void(* footprint)(item)

C头中的function?

我听说您将函数原型放在头文件中,然后将函数定义放在.c文件中。 但是,这个.c文件是什么。 例如,如果你要包含一个文件“foo.h”,你会调用前面提到的.c文件“foo.c”,把函数定义放在其中,把它放在与foo.h相同的地方,并且当你尝试包含foo.h时,该函数是否会从c文件中inheritance并且该函数是否可以使用?

为什么我不需要带扫描的&符号? (在C中)

void getnums(int *a, int *b); int main() { int a; int b; int c; getnums(&a,&b); c = a + b; printf(“a + b = %d\n”, c); return 0; } void getnums(int *a, int *b) { printf(“a:? “); scanf(“%d”, a); printf(“b:? “); scanf(“%d”, b); } 为什么我不需要在scanfs中的a和b之前使用&符号? (该代码目前有效。)

从输入C动态分配矩阵

我一直在尝试这段代码而且效果不佳。 void *matrix_allocate_variable (int size) { void *p1; if ((p1=(int*)malloc(size))==NULL){ printf(“out of memory.\n”); exit(1); } return p1; } 在这里,我创建了一个调用malloc并在出错时退出的函数,以便我可以在我的下一个函数中使用它: void matrix_new(int **matrices, int *row_counts, int *column_counts, char specifier) { int index, i; index= (int)(specifier-‘A’); scanf(“%d”,&row_counts[index]); scanf(“%d”,&column_counts[index]); matrices[index]= (int*)matrix__allocate_variable(sizeof(int)* (row_counts[index]*column_counts[index]); 这是我遇到问题的地方。 我正在尝试让用户输入一些用于创建矩阵的输入,但是我在尝试使其工作时遇到了很多问题。 有人可以帮我开始吗? PS。 有关更多详细信息,我在functions.c中创建函数,这是我到目前为止所拥有的。 我有一个main.c调用这些函数,以便稍后我可以添加,减去和转置,但到目前为止,我正在尝试输入数据,这是我遇到很多麻烦。 这是我的main.c ,我称之为函数。 /* Pointer to the set of matrix registers. […]

函数中* p和(* p)之间有什么区别?

我是编程和学习C中数组指针的新手。看看下面的程序。 第一个节目 #include int fun(); int main() { int num[3][3]={21,325,524,52,0,6514,61,33,85}; fun(num); printf(“%d”,*(*(num+1)+1)); *(*(num+1)+1)=0; printf(“%d”,*(*(num+1)+1)); return 0; } int fun(int **p) { *(*(p+1)+1)=2135; return 0; } 第二个节目 #include int fun(); int main() { int num[3][3]={21,325,524,52,0,6514,61,33,85}; fun(num); printf(“%d”,*(*(num+1)+1)); *(*(num+1)+1)=0; printf(“%d”,*(*(num+1)+1)); return 0; } int fun(int *p) { *((p+1)+1)=2135; return 0; } 第3节目 #include int fun(); int main() […]

即使你没有随时间播种(NULL),rand()如何制作随机数?

我理解作为参数传入srand()的内容将被用作后来发生的对rand()调用的种子。 通常传入time(NULL) 。 但是如果你只调用srand一次,然后你就会在循环中连续调用rand ,那么这些数字是如何相互不同的呢? 种子是从time(NULL)返回的值time(NULL) …但只使用一个特定的返回值。 那么如何生成不同的数字? 我对C中的线程一无所知。但是每次使用线程和不同的种子,以便后续调用rand实际上会返回随机数吗? 我注意到当我将静态数字传递给srand而不是time(NULL) , rand仍然会生成随机数。

尝试在C中打印矩阵时未定义参考函数

我有简单的prinitng矩阵方法。 void printMatrix(int matrix){ int i; for(i=0;i<sizeof matrix/sizeof matrix[0];i++){ for(j=0; j<sizeof matrix[0]/sizeof matrix[0][0];i++){ printf("%03d",matrix[i][j]); } printf("\n"); } printf("\n"); } 主要是我打电话: printMatrix(matrix); 矩阵定义为: int matrix[2][3] = {{1, 3, 4}, {2, 0, 1}}; 问题是我得到“未定义的参考’printMatrix’”你知道问题出在哪里吗? 它需要一些特殊的包括吗? 我不这么认为,但我不知道,错在哪里。

评估报表

//prog1.c #include int f(int *a,int *b,int c) { if(c == 0) return 1; else { *a = *a + 1; *b = *b – 1; c = c – 1; return (*a + f(a,b,c) + *b); } } int main() { int a = 3,b = 3,c = 3; printf(“%d\n”,f(&a,&b,c)); return 0; } 我使用gcc和clang-3.5执行程序,发现输出= 16 […]