小编yul*_*ian的帖子

为什么我的for循环不接受9个输入?

我的代码只需要5个值作为输入.我究竟做错了什么?

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char arr[3][3];
    int i,j,n;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            scanf("%c",&arr[i][j]);
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我该如何纠正呢?

c loops for-loop

4
推荐指数
1
解决办法
229
查看次数

在 C 中更新全局变量

我有一个初学者 C 问题。我想在下面的代码...

include <stdio.h>

void iprint();
int i=0;

int main()
{
  int j;

  for (j=0; j<50; j++)
    {
      iprint(i);
      printf("%d\n",i);
    }
}

void iprint(i)
{
  i +=1;
  //printf("%d\n",i); 
}
Run Code Online (Sandbox Code Playgroud)

...每次调用时更新 i 值的函数“iprint”,例如更新 i 以便它可以在 main 中使用,值为 1 用于迭代 2,值为 3 用于迭代 2 等。

我通过将代码更改为:

 include <stdio.h>

int iprint();
int i=0;

int main()
{
  int j;

  for (j=0; j<50; j++)
    {
      i= iprint(i);
      printf("%d\n",i);
    }
}

int iprint(i)
{
  i +=1;
  //printf("%d\n",i); 
  return(i);
}
Run Code Online (Sandbox Code Playgroud)

我必须返回(i)才能实现吗?问的原因是,如果我有很多使用 i 的函数,那么在它们之间传递 i 有点烦人。相反,如果你能以某种方式更新我,就像你在 matlab …

c scope

4
推荐指数
2
解决办法
3万
查看次数

从数组中删除第n个元素(char*)

是否有任何C函数从char*中删除第N个元素(将char*视为数组)?

例:

char* tab --> |5|4|5|1|8|3|

remove_elt(tab, 3) --> 5|4|5|8|3|

c arrays

4
推荐指数
2
解决办法
1353
查看次数

如何将两个数组合并为一个交替元素?

假设您的数组arr [N]越来越多.你必须把它分成另外两个(左和右):

L = {0, 2, 4, 6, 8, 10, ...}

R = {1, 3, 5, 7, 9, 11, ...}
Run Code Online (Sandbox Code Playgroud)

以下算法执行此操作:

for ( i = 0; i < (N / 2) ; i++ )
    {
        L[i] = arr[2 * i + 0];
        R[i] = arr[2 * i + 1];
    }
Run Code Online (Sandbox Code Playgroud)

问题是:如何进行反向算法?

所以输出数组将是:

arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...}
Run Code Online (Sandbox Code Playgroud)

PS 我一直在思考它,但没有任何回忆:(

c arrays sorting algorithm

3
推荐指数
1
解决办法
3348
查看次数

搜索m/n的二维数组中的元素,即行和列

您将获得一个MxN的2D数组,该数组按行和列顺序排序.搜索元素的有效方法是什么?

c c++ algorithm search

3
推荐指数
1
解决办法
1654
查看次数

无法理解`标签'.

我正在读"C语言程序设计".我无法理解第34页的练习1-20:

编写一个程序detab,用空格中适当数量的空格替换输入中的选项卡到下一个制表位.假设一组固定的制表位,比如每n列.n应该是变量还是符号参数?

第二句是我不明白的.

c

3
推荐指数
1
解决办法
179
查看次数

返回的变量为NULL

当我说:"返回的变量是NULL.",我的意思是它返回一个包含两个指针的结构they == NULL.

struct LandR_8
{
    unsigned char *L;    // For L channel.
    unsigned char *R;    // For R channel.
};                       // These pointers point to the allocated memory.
struct LandR_8 LRChannels_8;
Run Code Online (Sandbox Code Playgroud)

我的功能:

struct LandR_8 sepChannels_8( unsigned char *smp, unsigned char *L, unsigned char *R, unsigned long N, struct LandR_8 LRChannels )
{
    int i;

    L = malloc(N / 2);
    R = malloc(N / 2);

    for ( i = 0; i < (N / 2) ; i++ ) …
Run Code Online (Sandbox Code Playgroud)

c pointers function

2
推荐指数
1
解决办法
111
查看次数

必须使用'%.4s`的精度修饰符来显示`char [4]`,为什么简单的`%s`不能正常工作?

我有以下代码(只发布必要的行).在这里,我复制WAVE文件的前44个字节(PCM,即线性量化).问题在于显示char[4]鲟鱼的记录.

无法弄清楚,虽然试图了解原因是什么,但没有结果.

问题:为什么我必须使用精度修改器%.*s仅显示前4个符号char[N]而不是仅char[4]使用打印变量%s

但是,如果我将修改器写入%s- > %.4sprintf()函数正确打印everthing:"RIFF","WAVE","fmt","data".它只显示每条char[4]记录的前4个符号.但是什么是没有显示的符号?

我得到以下内容%s:

Enter input and output filenames (with no extension):
europe_-_final_countdown
europe_-_final_countdown_out
Opening file: "europe_-_final_countdown.wav" has been successfully opened.

*********************************
       ChunkID: RIFF4?AWAVEfmt     // instead of "RIFF"
     ChunkSize: 54629940
        Format: WAVEfmt            // instead of "WAVE"
   SubChunk1ID: fmt                // here is "fmt " -> ok
 SubChunk1Size: 16
   AudioFormat: 1
   NumChannels: 2
    SampleRate: 44100
      ByteRate: 176400
    BlockAlign: …
Run Code Online (Sandbox Code Playgroud)

c arrays audio wav modifiers

2
推荐指数
1
解决办法
120
查看次数

如何检查字符串是否为c中的字母(az或AZ)

我正在获取用户输入,我想确定用户是否输入了字母,整数或运算符.我可以使用sscanf成功确定它是否是一个整数,但我很难知道如何确定它是否是一个字母.

通过信件,我的意思是:AZ,az.

int main(){
    char buffer[20];
    int integer; 
    printf("Enter expression: ");
    while (fgets(buffer, sizeof(buffer), stdin) != NULL){
        char *p = strchr(buffer, '\n'); //take care of the new line from fgets
        if (p) *p = 0;

        //Buffer will either be a integer, an operator, or a variable (letter).
        //I would like a way to check if it is a letter
        //I am aware of isalpha() but that requires a char and buffer is a string

         //Here is how I am checking …
Run Code Online (Sandbox Code Playgroud)

c lowercase char ctype uppercase

1
推荐指数
2
解决办法
2万
查看次数

没有因使用'sqrt'而引起的(Floating Int)实例

关于SO的另一个问题,标题相同。我在这里已经阅读了已经回答的问题,但仍然不明白如何解决这些问题

No instance for (Fractional Int) arising from a use of ‘/’
In the expression: (a + b + c) / 2
-- and
No instance for (Floating Int) arising from a use of ‘sqrt’
In the first argument of ‘(>)’, namely
Run Code Online (Sandbox Code Playgroud)

在这个简单的函数中,该函数用于通过3个边找到三角形的面积。

----- Heron's formula -----
-- S = sqrt(p*(p-a)*(p-b)*(p-c)), where p = (a+b+c)/2

isTriangle :: Int -> Int -> Int -> Bool
isTriangle a b c = let p = (a + b + c) / 2
                   in …
Run Code Online (Sandbox Code Playgroud)

geometry haskell sqrt

1
推荐指数
1
解决办法
736
查看次数