资源描述
C语言编程题与答案(三)
1. 给小学生出加法考试题
编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。
程序1通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。
程序2通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。
程序3通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。
程序4连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。
程序5通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。
[思考题]如果要求将整数之间的四则运算题改为实数之间的四则运算题,那么程序该如何修改呢?请读者修改程序,并上机测试程序运行结果。
2.掷骰子游戏
编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。
[思考题] 将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则一样,然后请读者重新编写该程序。
答案:
1.1。。
#include <stdio.h>
/* 函数功能:计算两整型数之和,如果与用户输入的答案一样,则返回1,否则返回0
函数参数:整型变量a和b,分别代表被加数和加数
函数返回值:当a加b的结果与用户输入的答案一样时,返回1,否则返回0
*/
int Add(int a, int b)
{
int answer;
printf("%d+%d=", a, b);
scanf("%d", &answer);
if (a+b == answer)
return 1;
else
return 0;
}
/* 函数功能:打印结果正确与否的信息
函数参数:整型变量flag,标志结果正确与否
函数返回值:无
*/
void Print(int flag)
{
if (flag)
printf("Right!\n");
else
printf("Not correct!\n");
}
main()
{
int a, b, answer;
printf("Input a,b:");
scanf("%d,%d", &a, &b);
answer = Add(a, b);
Print(answer);
}
1.2。。。
#include <stdio.h>
/* 函数功能:计算两整型数之和,如果与用户输入的答案一样,则返回1,否则返回0
函数参数:整型变量a和b,分别代表被加数和加数
函数返回值:当a加b的结果与用户输入的答案一样时,返回1,否则返回0
*/
int Add(int a, int b)
{
int answer;
printf("%d+%d=", a, b);
scanf("%d", &answer);
if (a+b == answer)
return 1;
else
return 0;
}
/* 函数功能:打印结果正确与否的信息
函数参数:整型变量flag,标志结果正确与否
函数返回值:无
*/
void Print(int flag)
{
if (flag)
printf("Rright!\n");
else
printf("Not correct. Try again!\n");
}
main()
{
int a, b, answer;
printf("Input a,b:");
scanf("%d,%d", &a, &b);
do
{
answer = Add(a, b);
Print(answer);
}while (answer == 0);
}
1.3。。。
#include <stdio.h>
/* 函数功能:计算两整型数之和,如果与用户输入的答案一样,则返回1,否则返回0
函数参数:整型变量a和b,分别代表被加数和加数
函数返回值:当a加b的结果与用户输入的答案一样时,返回1,否则返回0
*/
int Add(int a, int b)
{
int answer;
printf("%d+%d=", a, b);
scanf("%d", &answer);
if (a+b == answer)
return 1;
else
return 0;
}
/* 函数功能:打印结果正确与否的信息
函数参数:整型变量flag,标志结果正确与否
整型变量chance,表示同一道题已经做了几次还没有做对
函数返回值:无
*/
void Print(int flag, int chance)
{
if (flag)
printf("Right!\n");
else if (chance < 3)
printf("Not correct. Try again!\n");
else
printf("Not correct. You have tried three times!\nTest over!\n");
}
main()
{
int a, b, answer, chance;
printf("Input a,b:");
scanf("%d,%d", &a, &b);
chance = 0;
do
{
answer = Add(a, b);
chance++;
Print(answer, chance);
}while ((answer == 0) && (chance < 3));
}
1.4。。。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* 函数功能:计算两整型数之和,如果与用户输入的答案一样,则返回1,否则返回0
函数参数:整型变量a和b,分别代表被加数和加数
函数返回值:当a加b的结果与用户输入的答案一样时,返回1,否则返回0
*/
int Add(int a, int b)
{
int answer;
printf("%d+%d=", a, b);
scanf("%d", &answer);
if (a+b == answer)
return 1;
else
return 0;
}
/* 函数功能:打印结果正确与否的信息
函数参数:整型变量flag,标志结果正确与否
函数返回值:无
*/
void Print(int flag)
{
if (flag)
printf("Rright!\n");
else
printf("Not correct!\n");
}
main()
{
int a, b, answer, error, score, i;
srand(time(NULL));
error = 0;
score = 0;
for (i=0; i<10; i++)
{
a = rand()%10 + 1;
b = rand()%10 + 1;
answer = Add(a, b);
Print(answer);
if (answer == 1)
score = score + 10;
else
error++;
}
printf("score = %d, error numbers = %d\n", score, error);
}
1.5。。。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* 函数功能:对两整型数进行加、减、乘、除四则运算
如果用户输入的答案与结果一样,则返回1,否则返回0
函数参数:整型变量a和b,分别代表参加四则运算的两个操作数
整型变量op,代表运算类型,
当op值为1,2,3,4时,分别执行加、减、乘、整除运算
函数返回值:当用户输入的答案与结果一样时,返回1,否则返回0
*/
int pute(int a, int b, int op)
{
int answer, result;
switch (op)
{
case 1:
printf("%d + %d=", a, b);
result = a + b;
break;
case 2:
printf("%d - %d=", a, b);
result = a - b;
break;
case 3:
printf("%d * %d=", a, b);
result = a * b;
break;
case 4:
if (b != 0)
{
printf("%d / %d=", a, b);
result = a / b; /*注意这里是整数除法运算,结果为整型*/
}
else
{
printf("Division by zero!\n");
}
break;
default:
printf("Unknown operator!\n");
break;
}
scanf("%d", &answer);
if (result == answer)
return 1;
else
return 0;
}
/* 函数功能:打印结果正确与否的信息
函数参数:整型变量flag,标志结果正确与否
函数返回值:无
*/
void Print(int flag)
{
if (flag)
printf("Rright!\n");
else
printf("Not correct!\n");
}
main()
{
int a, b, answer, error, score, i, op;
srand(time(NULL));
error = 0;
score = 0;
for (i=0; i<10; i++)
{
a = rand()%10 + 1;
b = rand()%10 + 1;
op = rand()%4 + 1;
answer = pute(a, b, op);
Print(answer);
if (answer == 1)
score = score + 10;
else
error++;
}
printf("score = %d, error numbers = %d\n", score, error);
}
2. 。。。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int rollDice(void);
main()
{
enum Status {CONTINUE, WON, LOST};
int sum, myPoint, count = 0;
enum Status gameStatus;
srand(time(NULL));
sum = rollDice();
switch (sum)
{
case 7:
case 11:
gameStatus = WON;
break;
case 2:
case 3:
case 12:
gameStatus = LOST;
break;
default:
gameStatus = CONTINUE;
myPoint = sum;
printf("Point is %d\n", myPoint);
break;
}
while (gameStatus == CONTINUE)
{
sum = rollDice();
count ++;
if (sum == myPoint)
{
gameStatus = WON;
}
else if (count == 7)
{
gameStatus = LOST;
}
}
if (gameStatus == WON)
{
printf("Player wins\n");
}
else
{
printf("Player loses\n");
}
}
int rollDice(void)
{
int die1, die2, workSum;
die1 = 1 + rand()%6;
die2 = 1 + rand()%6;
workSum = die1 + die2;
printf("Player rolled %d + %d = %d\n", die1, die2, workSum);
return workSum;
}
9 / 11
展开阅读全文