69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
#define MAXN 30
#define MAXSTRING 64
int count;
void search(int remainder, int start, char *sTerms);
main() {
char sTerms[MAXSTRING]="";
int n;
scanf_s("%d", &n);
sprintf_s(sTerms, 3,"%d=", n);
search(n, 1, sTerms);
if (count % 4 != 0)
printf("\n");
}
void search(int remainder, int start, char *sTerms) {
char sTmp[MAXSTRING];
strcpy_s(sTmp, MAXSTRING, sTerms);
for (int i = start; i <= remainder; i++) {
if (remainder - i >= i) {
printf("%d\n", strlen(sTerms));
sprintf_s(sTmp + strlen(sTerms), MAXSTRING, "%d+", i);
search(remainder - i, i, sTmp);
}
else {
printf("%d\n", strlen(sTerms));
sprintf_s(sTmp + strlen(sTerms), MAXSTRING, "%d", i);
count++;
if (count % 4 != 1)
printf(";");
printf("%s", sTmp);
if (count % 4 == 0)
printf("\n");
return;
}
}
}
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
int a,b[11];//本来是b[10],为判断哪句越界,故意声明为b[11]
srand((unsigned int)time(NULL));//按两次F11,等黄色右箭头指向本行时,调试、新建断点、新建数据断点,地址:&b[10],字节计数:4,确定。
while (1) {//按F5,会停在下面某句,此时a的值为10,b[10]已经被修改为对应0..4之一。
b[(a=rand()%11)]=0;
Sleep(100);
b[(a=rand()%11)]=1;
Sleep(100);
b[(a=rand()%11)]=2;
Sleep(100);
b[(a=rand()%11)]=3;
Sleep(100);
b[(a=rand()%11)]=4;
Sleep(100);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#define MAXN 30
#define MAXSTRING 64
int count;
void search(int remainder, int start, char *sTerms);
main() {
char sTerms[MAXSTRING]="";
int n;
scanf("%d", &n);
sprintf(sTerms, "%d=", n);
search(n, 1, sTerms);
if (count % 4 != 0)
printf("\n");
}
void search(int remainder, int start, char *sTerms) {
char sTmp[MAXSTRING];
strcpy(sTmp, sTerms);
for (int i = start; i <= remainder; i++) {
if (remainder - i >= i) {
printf("%d\n", strlen(sTerms));
sprintf(sTmp + strlen(sTerms), "%d+", i);
search(remainder - i, i, sTmp);
}
else {
printf("%d\n", strlen(sTerms));
sprintf(sTmp + strlen(sTerms), "%d", i);
count++;
if (count % 4 != 1)
printf(";");
printf("%s", sTmp);
if (count % 4 == 0)
printf("\n");
return;
}
}
}
j = sprintf_s( buffer, 200, " String: %s\n", s );
j += sprintf_s( buffer + j, 200 - j, " Character: %c\n", c );
j += sprintf_s( buffer + j, 200 - j, " Integer: %d\n", i );
j += sprintf_s( buffer + j, 200 - j, " Real: %f\n", fp );
sprintf_s(sTmp + strlen(sTerms), MAXSTRING, "%d", i);
sprintf_s(sTmp + strlen(sTerms), MAXSTRING, "%d+", i);
对应的都修改为sprintf_s(sTmp + strlen(sTerms), MAXSTRING-strlen(sTerms), "%d+", i);
保持sTmp 的总长度为MAXSTRING,则程序就能正常运行了。 sprintf_s(sTerms, 3, "%d=", n);
这里3也小了,只能输入10以内的数(因为算上'\0',刚好3位),所以如果输入的数字超过10,这里也要相应调整,如果是两位数的话,这里就至少应该是4,三位数则至少应该是5,以此类推。