我的代码只需要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 问题。我想在下面的代码...
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函数从char*中删除第N个元素(将char*视为数组)?
例:
char* tab --> |5|4|5|1|8|3|
remove_elt(tab, 3) --> 5|4|5|8|3|
假设您的数组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 我一直在思考它,但没有任何回忆:(
您将获得一个MxN的2D数组,该数组按行和列顺序排序.搜索元素的有效方法是什么?
我正在读"C语言程序设计".我无法理解第34页的练习1-20:
编写一个程序detab,用空格中适当数量的空格替换输入中的选项卡到下一个制表位.假设一组固定的制表位,比如每n列.n应该是变量还是符号参数?
第二句是我不明白的.
当我说:"返回的变量是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) 我有以下代码(只发布必要的行).在这里,我复制WAVE文件的前44个字节(PCM,即线性量化).问题在于显示char[4]鲟鱼的记录.
无法弄清楚,虽然试图了解原因是什么,但没有结果.
问题:为什么我必须使用精度修改器%.*s仅显示前4个符号char[N]而不是仅char[4]使用打印变量%s?
但是,如果我将修改器写入%s- > %.4s该printf()函数正确打印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) 我正在获取用户输入,我想确定用户是否输入了字母,整数或运算符.我可以使用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) 关于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)