我必须做一个空心的菱形图案,上面满是星星。对于N的输入,应该使用空心菱形打印2 * N尺寸的网格。对于以下代码,我超出了时间限制。需要做什么?
Incident Identifier: 7A8E1E30-70BA-482D-A135-E67743F1A4BA
CrashReporter Key: e7ee2942556381a1f0080313b3dc1a75729c6a48
Hardware Model: iPhone12,5
Process: AppName [15439]
Path: /private/var/containers/Bundle/Application/5886549A-F2CB-4FFB-A227-6BBD5C220630/AppName.app/AppName
Identifier: com.company.app
Version: 5.04 (5.00)
AppStoreTools: 11E608a
AppVariant: 1:iPhone12,5:13
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: com.company.app [4044]
Date/Time: 2020-06-22 05:41:30.6832 -0400
Launch Time: 2020-06-22 05:38:03.9046 -0400
OS Version: iPhone OS 13.5.1 (17F80)
Release Type: User
Baseband Version: 1.06.00
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x18d7fc300 __exceptionPreprocess + 228 (NSException.m:199)
1 libobjc.A.dylib 0x18d510c1c objc_exception_throw + 60 (objc-exception.mm:565)
2 NativeScript 0x1056e6e00 NativeScript::reportFatalErrorBeforeShutdown(JSC::ExecState*, JSC::Exception*, bool) + 1528
3 NativeScript 0x10572102c NativeScript::FFICallback<NativeScript::ObjCMethodCallback>::ffiClosureCallback(ffi_cif*, void*, void**, void*) + 120
4 NativeScript 0x10628e768 ffi_closure_SYSV_inner + 996
5 NativeScript 0x1062901b4 .Ldo_closure + 20
6 CoreFoundation 0x18d754474 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 28 (CFNotificationCenter.c:787)
7 CoreFoundation 0x18d7544c4 ___CFXRegistrationPost1_block_invoke + 68 (CFNotificationCenter.c:175)
8 CoreFoundation 0x18d7537b4 _CFXRegistrationPost1 + 396 (CFNotificationCenter.c:198)
9 CoreFoundation 0x18d753468 ___CFXNotificationPost_block_invoke + 92 (CFNotificationCenter.c:1371)
10 CoreFoundation 0x18d6cc928 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1420 (CFXNotificationRegistrarOld.m:168)
11 CoreFoundation 0x18d752da8 _CFXNotificationPost + 1260 (CFNotificationCenter.c:1359)
12 Foundation 0x18dab939c -[NSNotificationCenter postNotificationName:object:userInfo:] + 64 (NSNotification.m:576)
13 UIKitCore 0x19194aabc -[UIApplication _terminateWithStatus:] + 304 (UIApplication.m:6719)
14 UIKitCore 0x1910b3718 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 128 (_UISceneLifecycleMultiplexer.m:765)
15 UIKitCore 0x1910b337c -[_UISceneLifecycleMultiplexer forceExitWithTransitionContext:scene:] + 220 (_UISceneLifecycleMultiplexer.m:418)
16 UIKitCore 0x191940ac4 -[UIApplication workspaceShouldExit:withTransitionContext:] + 216 (UIApplication.m:3725)
17 FrontBoardServices 0x192a57cf8 -[FBSUIApplicationWorkspaceShim workspaceShouldExit:withTransitionContext:] + 88 (FBSUIApplicationWorkspace.m:144)
18 FrontBoardServices 0x192a84d68 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke_2 + 80 (FBSWorkspaceScenesClient.m:281)
19 FrontBoardServices 0x192a69ebc -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240 (FBSWorkspace.m:357)
20 FrontBoardServices 0x192a84cf4 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke + 140 (FBSWorkspaceScenesClient.m:278)
21 libdispatch.dylib 0x18d49c33c _dispatch_client_callout + 20 (object.m:495)
22 libdispatch.dylib 0x18d49f0d4 _dispatch_block_invoke_direct + 264 (queue.c:466)
23 FrontBoardServices 0x192aab6c4 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48 (FBSSerialQueue.m:173)
24 FrontBoardServices 0x192aab370 -[FBSSerialQueue _queue_performNextIfPossible] + 432 (FBSSerialQueue.m:216)
25 FrontBoardServices 0x192aab8dc -[FBSSerialQueue _performNextFromRunLoopSource] + 32 (FBSSerialQueue.m:247)
26 CoreFoundation 0x18d777af4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CFRunLoop.c:1922)
27 CoreFoundation 0x18d777a48 __CFRunLoopDoSource0 + 84 (CFRunLoop.c:1956)
28 CoreFoundation 0x18d777198 __CFRunLoopDoSources0 + 196 (CFRunLoop.c:1992)
29 CoreFoundation 0x18d771f38 __CFRunLoopRun + 796 (CFRunLoop.c:2882)
30 CoreFoundation 0x18d7718f4 CFRunLoopRunSpecific + 480 (CFRunLoop.c:3192)
31 GraphicsServices 0x197b88604 GSEventRunModal + 164 (GSEvent.c:2246)
32 UIKitCore 0x191945358 UIApplicationMain + 1944 (UIApplication.m:4823)
33 NativeScript 0x106290044 ffi_call_SYSV + 68
34 NativeScript 0x10628de8c ffi_call_int + 1272
35 NativeScript 0x10628d988 ffi_call + 56
36 NativeScript 0x1056a946c NativeScript::FunctionWrapper::call(JSC::ExecState*) + 596
37 NativeScript 0x10625ac60 0x1056a0000 + 12299360
38 NativeScript 0x106258078 0x1056a0000 + 12288120
39 NativeScript 0x106258078 0x1056a0000 + 12288120
40 NativeScript 0x106258078 0x1056a0000 + 12288120
...
答案 0 :(得分:0)
您的代码进入无限循环。您的代码有两个明显的缺陷。您有一个外部循环-for(row=1;row<=n;row++)
,然后在其中一个内部循环中更改了行变量-
for(col=n;col>=row;row--)
col
肯定大于row
,并且您继续递减行,这意味着col>=row
条件始终求值为True。这将使您的代码进入无限循环。只需将其更改为-for(col=n;col>=row;col--)
,即可防止您的程序进入无限循环。
菱形图案的后半部分也存在一些逻辑错误。您的第一个循环工作正常,但是由于空间较大,代码在较低的循环中会产生轻微的未对齐结果。
我已更正了下半部分打印的空格,这将为您提供正确的结果-
#include <stdio.h>
int main()
{
int row,col,space,n;
scanf("%d",&n);
for(row=1;row<=n;row++)
{
for(col=n;col>=row;col--)
{
printf("*");
}
for(space=2;space<(2*row)-1;space++)
{
printf(" ");
}
if (row==1)
printf("\b");
for(col=n;col>=row;col--) // <-- Changed here from row--, to col--
{
printf("*");
}
printf("\n");
}
for(row=n-1;row>=1;row--)
{
for(col=n;col>=row;col--)
{
printf("*");
}
// Note the changes below in the number of spaces printed
for(space=1;space<(2*(row-1));space++)
{
printf(" ");
}
if (row==1)
printf("\b");
for(col=n;col>=row;col--) // <-- Changed here from row--, to col--
{
printf("*");
}
printf("\n");
}
getchar();
return 0;
}
这将打印正确的菱形图案
答案 1 :(得分:0)
在此代码中:
for(col=n;col>=row;row--)
{
printf("*");
}
col
从n
开始,由于先前的代码,该值必须大于或等于row
,因此col>=row
为true。随后,此循环将row
减少row--
。这会使row
变小,因此col>=row
保持为真,并且循环继续执行。
这种情况一直持续到row--
导致溢出(该值超出int
可以代表的范围)为止,此时行为未由C标准定义。