我需要我的代码在诸如"退出"之类的单词时终止。键入第一个数据输入。我不知道实现这个的正确功能或方法。我的数据是正确的只需要用word命令终止。如有任何建议或解释提示,将不胜感激。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
double xminA, xmaxA, yminA, ymaxA, xminB, xmaxB, yminB, ymaxB;
double xminC, xmaxC, yminC, ymaxC;
char end;
while(1){
printf("Rectangle A:");
scanf("%lf%lf%lf%lf", &xminA, &yminA, &xmaxA, &ymaxA);
printf("Rectangle B:");
scanf("%lf%lf%lf%lf", &xminB, &yminB, &xmaxB, &ymaxB);
if(xminA>xmaxB || xminB>xmaxA || yminA>ymaxB || yminB>ymaxA){
printf("No overlapping area\n");
}
else if(xminA<=xmaxB || xminB<=xmaxA || yminA<=ymaxB || yminB<=ymaxA){
xminC= fmax(xminA,xminB);
xmaxC= fmin(xmaxA, xmaxB);
yminC= fmax(yminA, yminB);
ymaxC= fmin(ymaxA, ymaxB);
printf("Overlap rectangle: (%lf,%lf) (%lf,%lf)\n", xminC, yminC, xmaxC, ymaxC);
}
}
return EXIT_SUCCESS;
}
答案 0 :(得分:2)
要实现这一点,您需要确认所有输入都是文本,然后您可以使用fgets()
读取整行输入,检查它是exit\n
然后是否为char line[256];
if (fgets(line, sizeof line, stdin) == NULL)
return -1; // Something bad happened
if (strcmp(line, "exit\n") == 0)
return 0; // The user typed `exit'
if (sscanf(line, "%lf%lf%lf%lf &xminA, &yminA, &xmaxA, &ymaxA) == 4) {
// Got the first rectangle, now do the same for the second
// rectangle
}
。不要继续将输入转换为您想要的数字,检查它们是否已成功转换并采取措施以防万一。
实施例
exit
如您所见,这应该是一个函数,以便您允许用户在第一个矩形输入成功后键入scanf()
。
这可以进一步完善,达到让您的用户感到非常舒适和愉快的程度。
此外,由于您没有检查scanf()
的返回值,您的程序无法判断输入是否正确(预期的4个浮点数)或是否它失败了,String numberString;
int number=123456;
// convert int to string
numberString = String.valueOf(number);
char[] chars = new char[7];
String napis = "S4P6W7M522SC3OXX55K3NN77666N34M2";
char[] array = napis.toCharArray();
// loop which pulls the last six characters
int index = 0;
for (int i = 0; i < array.length; i++) {
if (i >= 26 && i <= 32) {
chars[index] = array[i];
index++;
}
}
String Str = new String(napis);
System.out.print("String: " + napis);
// convert char to string
String kod = String.valueOf(chars);
System.out.print("Result " + kod);
// show new String
String newString = napis.replace(kod, numberString);
System.out.print("New String: " + newString);
会返回一个值,如果您阅读了一些文档,就可以理解它的含义。
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
double t, xminA, xmaxA, yminA, ymaxA, xminB, xmaxB, yminB, ymaxB;
double xminC, xmaxC, yminC, ymaxC;
while(1){
printf("Rectangle A:");
if (0 == scanf("%lf", &t)){ //<--this if() statement causes the function to terminate at a non-numeric
printf("Program completed normally");
break;
}
t=xminA;
scanf("%lf%lf%lf",&yminA, &xmaxA, &ymaxA);
printf("Rectangle B:");
scanf("%lf%lf%lf%lf", &xminB, &yminB, &xmaxB, &ymaxB);
if(xminA>xmaxB || xminB>xmaxA || yminA>ymaxB || yminB>ymaxA){
printf("No overlapping area\n");
}
else if(xminA<=xmaxB || xminB<=xmaxA || yminA<=ymaxB || yminB<=ymaxA){
xminC= fmax(xminA,xminB);
xmaxC= fmin(xmaxA, xmaxB);
yminC= fmax(yminA, yminB);
ymaxC= fmin(ymaxA, ymaxB);
printf("Overlap rectangle: (%lf,%lf) (%lf,%lf)\n", xminC, yminC, xmaxC, ymaxC);
}
}
return EXIT_SUCCESS;
}