当我以下面给出的格式提交代码时,在线法官(Codechef)不接受它:
#include<stdio.h>
int main()
{
int length,test;
char check[26]="zyxwvutsrqponmlkjihgfedcba";
scanf("%d",&test);
while(test--){
scanf("%d",&length);
if(length%25 != 0)
printf("%s",check+25-(length%25));
length/=25;
while(length--)
{
printf("%s",check);
}
printf("\n");
}
return 0;
}Run Code Online (Sandbox Code Playgroud)
但是,当我提交下面给出的代码时,它很容易被接受.在这里,我所做的只是将char数组从局部变为全局.任何人都可以理解它的原因.
#include<stdio.h>
char check[26]="zyxwvutsrqponmlkjihgfedcba";
int main()
{
int length,test;
scanf("%d",&test);
while(test--){
scanf("%d",&length);
if(length%25 != 0)
printf("%s",check+25-(length%25));
length/=25;
while(length--)
{
printf("%s",check);
}
printf("\n");
}
return 0;
}Run Code Online (Sandbox Code Playgroud)
链接到使用它的问题:
check需要27 char秒来存储你分配给它的字符串文字(包括终止null),而不是26页.读取结尾是UB,但可能发生的是全局范围版本,下一个字节恰好是0,但是本地范围版本,下一个字节非零,导致访问冲突.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |