Tag: 数组

将二维数组表示为一维数组

可能重复: 使用arrays数组(2D)或一维数组实现更高效的矩阵? 二维arrays与一维arrays的性能 前几天我正在查看我的伙伴的分子动力学代码库之一,他将一些2D数据表示为一维数组。 因此,他不必使用两个索引,而只需要跟踪一个索引,但只需要进行一些数学计算就可以确定它是2D的位置。 所以在这个2D数组的情况下: two_D = [[0, 1, 2], [3, 4, 5]] 它将表示为: one_D = [0, 1, 2, 3, 4, 5] 如果他需要知道2Darrays的位置(1,1),他会做一些简单的代数并得到4。 使用1Darrays而不是2Darrays是否有任何性能提升。 在计算过程中,数组中的数据可以被调用数百万次。 我希望数据结构的解释清楚……如果不让我知道,我会尝试更好地解释它。 谢谢 :) 编辑语言是C

C中的冒泡排序算法

我试图完成的程序是一个使用冒泡排序算法的程序。我不确定问题是什么或问题在哪个函数中。问题是程序没有正确排序数组。(它也必须按升序排列)。 这是代码: #include #include “simpio.h” void getArray (int arr[], int size); void sortArray (int arr[], int size); void swap (int arr[], int num, int number); void dispArray (int arr[], int size); bool checkBigger (int arr[], int num, int number); main() { int size; printf(“Enter number of elements: “); size=GetInteger(); int arr[size]; getArray(arr, size); sortArray(arr, size); […]

C函数用于大写数组中单词的第一个字母

我对C很陌生,在创建以下function时遇到了障碍。 我想使用这个函数来为一个静态字符数组(char string []创建单词大写的第一个字母。它看起来不错,但我得到一些语法错误,这可能是非常基本的。编译器错误: 错误:无效转换从const char’ to const char *’初始化`size_t strlen(const char *)的参数1’只读位置的赋值 void Cap(char string[]){ int i; int x = strlen(string); for (i=1;i<x;i++){ if (isalpha(string[i]) && string[i-1] == ' '){ // only first letters of a word. string[i]= toupper(string[i]); }if (isalpha(string[0])) { string[0]=toupper(string[0]); } } }

C – 何时使用指针算法,何时使用数组索引?

在C中,何时优先使用一个而不是另一个?

在C中删除数组中的重复项

这个问题有点复杂。 这里的问题是摆脱重复,并将数组的唯一元素保存到具有原始序列的另一个数组中。 例如 : 如果输入是bacadt 结果应该是:输入输入的确切状态的bacdt。 因此,对于排序数组,然后检查无法工作,因为我丢失了原始序列。 我被建议使用索引数组,但我不知道该怎么做。 那你有什么建议呢? 对于那些愿意回答这个问题的人,我想补充一些具体的信息。 char** finduni(char *words[100],int limit) { // //Methods here // } 是我的function。 应该删除重复项并将其存储在不同数组中的数组是单词[100]。 因此,这个过程将在此完成。 我首先考虑将单词的所有元素放入另一个数组并对该数组进行排序,但在某些测试之后这不起作用。 只是提醒解决者:)。

处理存储在C中多个字符串的指针数组中的单个字符串的问题

提供指向字符串的指针数组作为输入。 任务是反转存储在指针输入数组中的每个字符串。 我创建了一个名为reverseString()的函数,它反转传递给它的字符串。 据我所知,此function正常工作。 在指针的输入数组中存储/引用的字符串逐个发送到reverseString()函数。 但是当使用temp变量交换传递的字符串的值时,代码在reverseString()函数中的某个点挂起。 我无法弄清楚代码在交换值时挂起的原因。 请帮我解决一下这个。 代码如下: #include void reverseString(char*); int main() { char *s[] = {“abcde”, “12345”, “65gb”}; int i=0; for(i=0; i< (sizeof(s)/sizeof(s[0]) ); i++ ) { reverseString(s[i]); printf("\n%s\n", s[i]); } getch(); return 0; }//end main void reverseString(char *x) { int len = strlen(x)-1; int i=0; char temp; while(i <= len-i) { […]

从C函数返回数组

我想弄清楚如何在C中返回一个数组。这就是代码。 我要做的是保存一个数组,然后使用函数返回打印它。 我在这做错了什么? #include #define DIM 50 char *func (char input[]); int main(void) { char input[DIM]; printf(“input? “); fgets(input, DIM, stdin); printf(“output: %s”, func(input)); return 0; } char *func(char input[]) { int i; char output[DIM]; for(i = 0; i < DIM; i++) output[i] = input[i]; return &output; }

我无法将char字符串分配给char数组

这就是我现在拥有的。 void insert(char Table[][81], char Key[81]){ int index; index = search(Table, Key); // This is another function used to find an empty ‘slot’ // in the table if(Table[index] == ‘\0′) Table[index] = Key; // <– This is the line that contains some sort of error. else printf("ERROR: Key already in Table\n"); } 它抛出的错误是: 从类型’char *’分配类型’char […]

如何定义和初始化结构中的字符串数组?

typedef struct mobiltelefon { char herstellername[HLEN]; double displaydiagonale; aufloesung_t aufloesung; char standards[NUMBER_OF_STRINGS][STRINGLENGTH+1] = {“GPRS”, “EDGE”, “HSDPA”, “HSUPA”, “HSPA”, “LTE”}; } telefon_t; 我不断收到错误expected ; at the end of declaration list expected ; at the end of declaration list 。

如何在内存中代表Carrays?

我相信如果你使用C,我理解在内存中如何表示正常的变量和指针。 例如,很容易理解指针Ptr将具有一个地址,并且它的值将是一个不同的地址,这是它指向的内存空间。 以下代码: int main(){ int x = 10; int *Ptr; Ptr = &x; return 0; } 将在内存中具有以下表示: +———————+————-+———+ | Variable Name | Address | Value | +———————+————-+———+ | x | 3342 | 10 | +———————+————-+———+ | Ptr | 5466 | 3342 | +———————+————-+———+ 但是我发现很难理解数组如何在内存中表示。 例如代码: int main(){ int x[5]; x[0]=12; x[1]=13; x[2]=14; printf(“%p\n”,(void*)x); printf(“%p\n”,(void*)&x); […]