【問題】C語言初學者,第一次寫程式


Recommended Posts

你的輸入應該是宣告成字串吧

兩個字串做交叉比較

題目字串第一個字去跟解答的四個字比較

數字一樣且相同位置就A+1 不同位置就B+1

數字不一樣就不管

然後換題目字串第二個字去跟解答的四個字比較

依此類推

鏈接文章
分享到其他網站

我現在是寫到這樣

#include<stdio.h>

#include<stdlib.h>

int main()

{

int a,b,c,d;

printf("請輸入題目:");

scanf("&%d");

printf("請輸入答案:\n");

scanf("&%d&%d&%d&%d",a,b,c,d);

printf("答對了!");

system("pause");

return 0;

}

為什麼在第二個printf之後就直接出現「請按任意鍵繼續」?沒有執行到下面的scanf?

還有2樓的大大,交叉比較是該用什麼語法寫呢?

鏈接文章
分享到其他網站

各位請愛去ptt

還有....scanf這樣用好像太誇張了......

大概寫寫 參考一下就好XD

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define isnumber(a) ( ((a)>='0') && ((a)<='9') )
#define index(a) ((a)-'0')

int Guess(char *p, char *q, int *A, int *B) {
int i, j, va[10], vb[10], a, b;
a = 0;
b = 0;
memset(va, 0, sizeof(va));
memset(vb, 0, sizeof(vb));
for (i=0; i<4; i++) {
if (!isnumber(p[i]) || !isnumber(q[i]))
return 0;
if (va[ index(p[i]) ] || vb[ index(q[i]) ])
return 0;
va[ index(p[i]) ] = 1;
vb[ index(q[i]) ] = 1;
}
for (i=0; i<4; i++) {
for (j=0; j<4; j++) {
if (p[i]==q[j]) {
if (i==j)
a++;
else
b++;
}
}
}
*A = a;
*B = b;
return 1;
}

int main() {
int A, B;
char prob[128], buf[128];

printf("Enter question> ");
scanf("%s", prob);
while (printf("Guess> "),
scanf("%s", buf)!=EOF,
Guess(prob, buf, &A, &B)) {
printf("%dA%dB\n", A, B);
if (A==4)
break;
}
system("PAUSE");
return 0;
}

鏈接文章
分享到其他網站

請登入後來留意見

在登入之後,您才能留意見



立即登入