明解C語言中級篇練習題第一章
阿新 • • 發佈:2019-02-02
練習1-1
練習1-2#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int qian; srand(time(NULL));//seed qian = rand()%7;//generate 0~6 random value switch(qian) { case 0: puts("大吉");break; case 1: puts("中吉");break; case 2: puts("小吉");break; case 3: puts("吉");break; case 4: puts("末吉");break; case 5: puts("凶");break; case 6: puts("大凶");break; } return 0; }
練習1-3#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int qian; int i = 0; srand(time(NULL));//seed qian = rand()%7;//generate 0~6 random value while((qian>=4)&&(i<2))//calculate again { qian = rand()%7; i++; } switch(qian) { case 0: puts("大吉");break; case 1: puts("中吉");break; case 2: puts("小吉");break; case 3: puts("吉");break; case 4: puts("末吉");break; case 5: puts("凶");break; case 6: puts("大凶");break; } return 0; }
練習1-4#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int obj; int opp = 1; int guess; //int i = 0; srand(time(NULL));//seed obj = rand()%1999-999;//generate -999~999 random value do { printf("input the number you guess(-999~999):"); scanf("%d",&guess); opp++; if(guess>obj) printf("a smaller value needed!\n"); else if(guess<obj) printf("a larger value needed!\n"); }while((guess!=obj)&&opp!=10); if(guess==obj) printf("Congratulations!\n"); else printf("Game Over!\n"); return 0; }
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int obj;
int mode;
int guess;
srand(time(NULL));
obj = (rand()%333 + 1)*3;
printf("input game mode(0/1)\n");
scanf("%d",&mode);
if(mode==0)
{
printf("input the number you guess:");
scanf("%d",&guess);
if(guess%3!=0)
printf("game over!");
else
if(guess!=obj)
printf("game over!");
else
printf("bingo!");
}
else
{
int i=0;
printf("input the number you guess:");
scanf("%d",&guess);
while((i<10)&&(guess!=obj))
{
printf("input the number you guess:");
scanf("%d",&guess);
i++;
}
if(guess!=obj)
printf("game over!");
else
printf("bingo!");
}
return 0;
}
練習1-5#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main(void)
{
int a;
int b;
int tmp;
int guess;
int obj;
int iopp = 1;
int opp;
srand(time(NULL));
a = rand();
b = rand();
if(a>b)
{
tmp = b;
b = a;
a = tmp;
}
obj = rand()%(b-a) + a;
printf("guess between %d and %d\n",a,b);
do
{
opp = pow(2.0,iopp);
iopp++;
}while(opp < (b - a));
do
{
printf("opptunity left %d\n",iopp);
printf("input the number you guess:");
scanf("%d",&guess);
if(guess > obj)
printf("smaller number needed!\n");
else
if(guess < obj)
printf("larger number needed!\n");
else
printf("bingo!");
iopp--;
}while((iopp!=0)&&(guess!=obj));
}
練習1-6#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main(void)
{
int level;
int a;
int b;
int tmp;
int guess;
int obj;
int iopp = 1;
int opp;
printf("select level\n1...1~9\n2...1~99\n3...1~999\n4...1~9999\n");
scanf("%d",&level);
switch(level)
{
case 1: a = 1;b = 9;break;
case 2: a = 1;b = 99;break;
case 3: a = 1;b = 999;break;
case 4: a = 1;b = 9999;break;
}
srand(time(NULL));
obj = rand()%(b - a + 1) + a;
printf("guess between %d and %d\n",a,b);
do
{
opp = pow(2.0,iopp);
iopp++;
}while(opp < (b - a));
do
{
printf("opptunity left %d\n",iopp);
printf("input the number you guess:");
scanf("%d",&guess);
if(guess > obj)
printf("smaller number needed!\n");
else
if(guess < obj)
printf("larger number needed!\n");
else
printf("bingo!");
iopp--;
}while((iopp!=0)&&(guess!=obj));
printf("game over!");
}
練習1-7/* 猜數遊戲(其五:顯示輸入記錄)*/
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_STAGE 10 /* 最多可以輸入的次數 */
int main(void)
{
int i;
int stage; /* 已輸入的次數 */
int no; /* 讀取的值 */
int ans; /* 目標數字 */
int num[MAX_STAGE]; /* 讀取的值的歷史記錄 */
srand(time(NULL)); /* 設定隨機數的種子 */
ans = rand() % 1000; /* 生成0~999的隨機數 */
printf("請猜一個0~999的整數。\n\n");
stage = 0;
do {
printf("還剩%d次機會。是多少呢:", MAX_STAGE - stage);
scanf("%d", &no);
num[stage++] = no; /* 把讀取的值存入陣列 */
if (no > ans)
printf("\a再小一點。\n");
else if (no < ans)
printf("\a再大一點。\n");
} while (no != ans && stage < MAX_STAGE);
if (no != ans)
printf("\a很遺憾,正確答案是%d。\n", ans);
else {
printf("回答正確。\n");
printf("您用了%d次猜中了。\n", stage);
}
puts("\n--- 輸入記錄 ---");
for (i = 0; i < stage; i++)
printf(" %2d : %4d %4d\n", i + 1, num[i], num[i] - ans);
return 0;
}
練習1-8/* 猜數遊戲(其五:顯示輸入記錄)*/
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_STAGE 10 /* 最多可以輸入的次數 */
int main(void)
{
int i;
int stage; /* 已輸入的次數 */
int no; /* 讀取的值 */
int ans; /* 目標數字 */
int num[MAX_STAGE]; /* 讀取的值的歷史記錄 */
srand(time(NULL)); /* 設定隨機數的種子 */
ans = rand() % 1000; /* 生成0~999的隨機數 */
printf("請猜一個0~999的整數。\n\n");
stage = 0;
for(stage = 0;stage<MAX_STAGE;stage++)
{
printf("還剩%d次機會。是多少呢:", MAX_STAGE - stage);
scanf("%d", &no);
num[stage] = no; /* 把讀取的值存入陣列 */
if (no > ans)
printf("\a再小一點。\n");
else if (no < ans)
printf("\a再大一點。\n");
else
break;
}
if (no != ans)
printf("\a很遺憾,正確答案是%d。\n", ans);
else {
printf("回答正確。\n");
printf("您用了%d次猜中了。\n", stage);
}
puts("\n--- 輸入記錄 ---");
for (i = 0; i < stage; i++)
printf(" %2d : %4d %4d\n", i + 1, num[i], num[i] - ans);
return 0;
}