是的,这是一个家庭作业问题,但我已经完成了我的研究并对这个主题进行了相当深入的思考,并且无法弄清楚这一点.问题是这段代码没有表现出短路行为,并询问原因.但它在我看来它确实表现出短路行为,所以有人可以解释为什么它没有?
在C:
int sc_and(int a, int b) {
return a ? b : 0;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,如果这a是假的,程序根本不会尝试评估b,但我一定是错的.为什么程序b在这种情况下甚至不需要触摸?
我需要编写一个Prolog谓词take(L, N, L1),如果list L1包含list 的第一个N元素,则以L相同的顺序成功.例如:
?- take([5,1,2,7], 3, L1).
L1 = [5,1,2]
?- take([5,1,2,7], 10, L1).
L1 = [5,1,2,7]
Run Code Online (Sandbox Code Playgroud)
Prolog到目前为止对我来说没什么意义,而且我很难将其分解.这是我到目前为止:
take([H|T], 0, []).
take([H|T], N, L1) :-
take(T, X, L2),
X is N-1.
Run Code Online (Sandbox Code Playgroud)
你能解释一下我在这里做错了吗?
首先,这是我需要解决的问题的确切措辞:
BIOS(基本输入输出服务)控制计算机上的低级I/O. 当计算机首次启动时,系统BIOS会创建一个从内存地址0x400开始供自己使用的数据区.地址0x0417是键盘移位标志寄存器,该字节的位具有以下含义:
Bit Value Meaning
7 0/1 Insert off/on
6 0/1 CapsLock off/on
5 0/1 NumLock off/on
4 0/1 ScrollLock off/on
3 0/1 Alt key up/down
2 0/1 Control key up/down
1 0/1 Left shift key up/down
0 0/1 Right shift key up/down
Run Code Online (Sandbox Code Playgroud)
该字节既可以写入也可以读取.因此,我们可以通过设置或清除相关位来更改键盘上CapsLock,NumLock和ScrollLock LED的状态.使用指针和位运算符编写C函数以打开大写锁定而不更改其他位.
我们的老师根本没有对此进行过调查,我参考了教科书并进行了许多Google搜索以寻求帮助.
我理解按位运算符是如何工作的,并且理解解决方案是将此字节与二进制值'00000010'进行或运算.但是,在实现这个问题时我很困惑.我如何用C代码写这个?我不知道如何声明一个指向1字节内存的指针.除此之外,我假设答案看起来如下(用byte适当的东西代替):
byte* b_ptr = 0x417;
(*b_ptr) |= 00000010;
Run Code Online (Sandbox Code Playgroud)
以上解决方案是否正确?
我试图在 if 语句中声明一个数组。我以这种方式编写代码,以便在 if 块退出时对象保持在范围内,但现在我有一个新问题:“获取临时数组的地址”。如何以另一种方式重写它,以便为 maskArray 分配正确的值?
int* maskArray;
if(conditional==true)
maskArray = (int[9]) {0,1,0,1,-4,1,0,1,0};
Run Code Online (Sandbox Code Playgroud) 我有一个256x256的二维浮点数组,我试图将其传递给函数,而g ++给了我错误消息:Cannot convert 'int (*)[256]' to 'int**'。我该如何解决?
void haar2D(int** imgArr);
int imageArray[256][256];
haar2D(imageArray);
Run Code Online (Sandbox Code Playgroud)
我试图将功能参数更改为类型int[256][256],int*[256]但没有成功。
当我执行命令时:
$var = @{a=1;b=2}
Run Code Online (Sandbox Code Playgroud)
在 Powershell(版本 3)中,$var最终的值为{System.Collections.DictionaryEntry, System.Collections.DictionaryEntry}. 为什么会这样?如何存储我想要存储的值?
这是一个简短的脚本,给出了相关行为的示例:
$foo = New-Object -TypeName PSCustomObject -Property @{
Username = "BSmith"
OU = "Finance"
Department = "Finance"
Description = "Accounts"
Office = "345 2nd St"
ServerName = "WFINANCE"
ShareName = "BSmith$"
LocalPath = "E:\Users\BSmith"
}
Write-Host $foo
Run Code Online (Sandbox Code Playgroud)
输出是:@{ServerName=WFINANCE; Office=345 2nd St; Username=BSmith; LocalPath=E:\Users\BSmith; OU=Finance; Description=Accounts; ShareName=BSmith$; Department=Finance}
正如您所看到的,输出变量的顺序与指定变量时给出的顺序不同。为什么会这样,如何使顺序一致?
我只有机会在一台计算机上对此进行测试,但输出的顺序在脚本的执行之间是一致的。我在声明属性时如何排序属性也没有什么区别。我无法测试并查看不同的机器是否会返回不同的订单。
我程序的主要功能显示一个开关菜单.当输入选项1时,调用一个"洗牌"一系列"卡片"的函数.在混洗完成后,该函数通过调用main()将程序返回到开头,以便再次显示菜单.
我遇到的问题是菜单的选项4将混洗数组写入文件.但是当洗牌然后重新启动程序时,阵列数据会丢失,因此输出的文件都是垃圾.有没有办法重新启动main()而不丢失数据?
我在一个班级,我可以使用的工具受到限制,因此只有最基本的代码才可以接受.基本上,我正在寻找像goto但更安全的东西(顺便说一句,goto,在这个课程中也被禁止).
首先,如果有人可以找到已经回答过的问题,请告诉我。我能找到的只是删除重复项的函数。
无论如何,我正在尝试编写一个方案函数(delete V L),该函数接受一个值和一个列表作为参数,并从列表及其所有子列表中删除该值。例如,给定以下输入:
> (deep-delete 3 '(1 2 3 (4 3) 5 (6 (3 7)) 8))
Run Code Online (Sandbox Code Playgroud)
它将产生:
(1 2 (4) 5 (6 (7)) 8)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这就是我所写的,但我知道 if 语句(用于检查该元素是否是子列表,这意味着它也必须被操作)必须放置错误。另外,我无法思考应该在哪里使用cons和不应该在哪里使用,因为我仍然对跟踪递归的返回值感到困惑。有人可以看一下并解释我做错了什么吗?
(define (delete V L)
(if (list? (car L)) (cons (delete V (car L) (cdr L)))
(cond
((null? L) L)
((equal? V (car L)) (delete V (cdr L)))
(else (cons (car L) (delete V (cdr L))))))))
Run Code Online (Sandbox Code Playgroud) 我是初学者所以请保持简单.
无论如何,我有一个像这样定义的结构:
struct card
{
char rank[10];
char suit[10];
char color;
bool dealt;
char location[10];
};
Run Code Online (Sandbox Code Playgroud)
我有一个传递这种结构的函数:
void importCard(card deck[52]);
Run Code Online (Sandbox Code Playgroud)
问题是,如果我在main()中定义结构,那么编译器不知道函数声明时的"卡"(主页上面).如何在不将结构定义为全局的情况下解决这个问题?