C语言函数及数组的综合应用——儿童数学运算 and 递归求最大公约数
最全C系列题目!从0到管理系统
一、C语言数据类型及输出——体重是否正常、球的体积、计算存银行利息and浮点数长度与精度
二、C语言运算符与表达式——输出逆序数and二进制包含0和1的数量and判断是否为2的整数次幂的两种办法
三、C语言基本输入输出程序设计——计算当前时间and转换大写姓名and工资信息表
五、C语言选择结构程序设计——“21点”(BlackJack)游戏and一元二次方程and能否被3,5,7,9整除
六、C语言函数、指针应用程序设计——回文数判断and检验子串and仓库库存管理程序
七、C语言输入输出及选择结构程序设计的综合应用——简单超级战士游戏and 取牙签游戏
八、C语言循环结构及数组排序的综合应用——冒泡、插入、选择排序棒图显示and两个超长数相乘
九、C语言函数及数组的综合应用——儿童数学运算 and 递归求最大公约数
一、实验目的:
(1) 学习和掌握 C 语言函数的定义与调用。
(2) 进一步掌握随机数、选择结构、循环控制、交互式输入输出等程序设计方法。
(3) 进一步掌握 C 语言中的数组定义和引用方法。
(4) 学习和掌握根据流程图进行模块化程序设计的思想。
二、实验要求
一、儿童数学运算
(1)定义一个函数。该函数有两个整型的输入参数 randNum1 和 randNum2,其 中,randNum1<=randNum2。该函数的功能是生成 randNum1 到 randNum2 之间 均匀分布的随机整数,该函数的返回值类型是整型。每调用一次该函数,函数返 回一个 randNum1 至 randNum2 之间的随机整数。
(2)定义一个函数。该函数没有输入参数,函数的返回类型是整型。该函数内 部调用上述(1)函数。每调用一次本函数,返回一个 1 至 5 之间的随机整数。
(3)定义一个函数。该函数没有输入参数,函数的返回类型是整型。该函数内 部调用上述(1)函数。每调用一次本函数,返回一个 0-99 之间的随机整数。
(4)定义一个函数。该函数有两个整型的输入参数 num1 和 num2;函数返回值 类型为整型。该函数的功能是:在屏幕上列出一个算式 num1 + num2 =,然后接 受一个键盘输入的计算答案 answer。若结果正确,则屏幕输出一句赞扬的语句, 然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案, 然后返回函数值 0。
(5)定义一个函数。该函数有两个整型的输入参数 num1 和 num2;函数返回值 类型为整型。该函数的功能是:在屏幕上列出一个算式 numM1 - numM2 = ,其 中:numM1 是 num1 和 num2 中较大的一个数,numM2 是 num1 和 num2 中较 小的一个数;然后接受一个键盘输入的计算答案 answer。若结果正确,则屏幕 输出一句赞扬的语句,然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的 语句,并输出正确答案,然后返回函数值 0。
(6)定义一个函数。该函数有两个整型的输入参数 num1 和 num2;函数返回值 类型为整型。该函数的功能是:在屏幕上列出一个算式 num1×num2 =,然后接 受一个键盘输入的计算答案 answer。若结果正确,则屏幕输出一句赞扬的语句, 然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值 0。
(7)定义一个函数。该函数没有输入参数;函数返回值类型为整型。该函数的 功能是:首先调用函数(3)生成两个随机整数 num1 和 num2,并判断 num1 是 否可以被 num2 整除,若不能整除,则判断 num2 是否可以被 num1 整除;否则 调用函数(3)函数重新生成两个新的 num1 和 num2,然后再进行整除性判断; 直到生成的 num1 可以被 num2 整除,或者 num2 可以被 num1 整除;在 num1 可以被 num2 整除的情况下,在屏幕上列出一个算式 num1÷num2=;在 num2 可以被 num1 整除的情况下,在屏幕上列出一个算式 num2÷num1=;然后接受 一个键盘输入的计算答案 answer。若结果正确,则屏幕输出一句赞扬的语句, 然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案, 然后返回函数值 0。要求在实验报告中画出该函数的流程图。
(8)定义一个函数。该函数有两个整型的输入参数 num1 和 num2;函数返回值 类型为整型。该函数的功能是:在屏幕上列出一个算式 num1%num2 =,然后接 受一个键盘输入的计算答案 answer。若结果正确,则屏幕输出一句赞扬的语句, 然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案, 然后返回函数值 0。
(9)主函数的功能如下:在主函数中调用上面定义的函数,在屏幕上随机循环 出一道 100 以内的数学运算题。另外,定义整型数组 problemNum[5]和整型数组 answerNum[5],这两个数组中分别存储在上述循环过程中加、减、乘、除、求余 等五种类型的题出现的次数,以及这五种类型的题被答对的次数。在用户不想继 续而退出时,在屏幕上显示本次游戏中的加、减、乘、除、求余等五种类型题出 现的数量,以及每一种题被答对的次数。要求在实验报告中画出主函数的流程图。
二、递归法求最大公约数 从键盘输入两个正整数,用递归方法计算输出它们的最大公约数。 提示:假设两个整数分别为 x 和 y,如果 x>y,则 x 和 y 的最大公约数与 x-y 和 y 的最大公约数相同;如果 x<y,则 x 和 y 的最大公约数与 x 和 y-x 的最大公约数 相同;如果 x=y,则 x 或 y 就是最大公约数。
三、代码部分
1.儿童数学运算
/*
* 文件名称: 综合实验3第一题
* 作者: 不知何人
* 完成日期: 2021.5.29
* 内容摘要: 无
* 注意: 无
*/
#include<stdio.h>
#include<string.h>
#include<time.h>
int flag=0; //定义flag作为函数返回值
int randNUM(int randNum1,int randNum2)
{
int randnum;
randnum=rand()%(randNum2-randNum1+1)+randNum1;
return(randnum);
}
//返回一个 randNum1 至 randNum2 之间的随机整数
int randNUM0()
{
int randNUM(int randNum1,int randNum2);
int a;
a=randNUM(1,5);
return a;
}
//返回一个 1 至 5 之间的随机整数。
int randNUM1()
{
int randNUM(int randNum1,int randNum2);
int a;
a=randNUM(0,99);
return a;
}
//返回一个 0-99 之间的随机整数
int count1(int num1,int num2)
{
int num,answer;
flag=0;
num1=randNUM1();
num2=randNUM1();
num=num1+num2;
printf("%d + %d=",num1,num2);
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了!\n");
flag++;
}
else
{
printf("加油,下次要答对哦!正确答案是%d\n",num);
}
return flag;
}
//加法运算
int count2(int num1,int num2)
{
int num,answer,temp;
flag=0;
num1=randNUM1();
num2=randNUM1();
if(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
num=num1-num2;
printf("%d - %d=",num1,num2);
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了!\n");
flag++;
}
else
{
printf("加油,下次要答对哦!正确答案是%d\n",num);
}
return flag;
}
//减法运算
int count3(int num1,int num2)
{
int num,answer;
flag=0;
num1=randNUM1();
num2=randNUM1();
num=num1*num2;
printf("%d ×%d=",num1,num2);
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了!\n");
flag++;
}
else
{
printf("加油,下次要答对哦!正确答案是%d\n",num);
}
return flag;
}
//乘法运算
int count5(int num1,int num2)
{
flag=0;
int num,answer;
num1=randNUM1();
num2=randNUM1();
printf("%d %% %d=",num1,num2);
num=num1%num2;
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了!\n");
flag++;
}
else
{
printf("加油,下次要答对哦!正确答案是%d\n",num);
}
return flag;
}
//求余数运算
int count4()
{
int randNUM1();
int num1,num2,num,answer;
do{
num1=randNUM1();
num2=randNUM1();
}while((num1%num2!=0)&&(num2%num1!=0));
//仅当num1与num2为倍数关系时才显示题目
if(num1>=num2)
{
flag=0;
num=num1/num2;
printf("%d ÷%d=",num1,num2);
scanf("%d",&answer);
if(num==answer)
{
printf("你答对了!\n");
flag++;
}
else
{
printf("加油,下次要答对哦!正确答案是%d\n",num);
}
}
else if(num2<num1)
{
flag=0;
num=num2/num1;
printf("%d ÷%d=",num2,num1);
scanf("%d",&answer);
if(num==answer)
{
printf("你答对了!\n");
flag++;
}
else
{
printf("加油,下次要答对哦!正确答案是%d\n",num);
}
}
return flag;
}
//除法运算
void main()
{
srand((unsigned)time(NULL));
int problemNum[5]={0}; //存放函数出现次数数组
int answerNum[5]={0}; //存放正确次数数组
int randnumber,i;
printf("请按下回车键开始数学运算。\n");
while(getchar()=='\n')
{
randnumber=randNUM0(); //生成1-5分别对应一种运算
int num1=randNUM1();
int num2=randNUM1(); //调用函数,生成两个0-99的数
switch(randnumber)
{
case 1:
flag=count1(num1,num2); //flag为函数返回值
problemNum[0]+=1; //没出现一次该种运算的题目,加一记录
answerNum[0]=flag; //每次答对的时候将flag的值存入answerNum对应元素
break;
case 2:
flag=count2(num1,num2);
problemNum[1]+=1;
if(flag==1)
answerNum[1]=flag;
break;
case 3:
flag=count3(num1,num2);
problemNum[2]+=1;
if(flag==1)
answerNum[2]=flag;
break;
case 4:
flag=count4();
problemNum[3]+=1;
if(flag==1)
answerNum[3]=flag;
break;
case 5:
flag=count5(num1,num2);
problemNum[4]+=1;
if(flag==1)
answerNum[4]=flag;
break;
}
printf("如果想继续请按回车键,不想继续,请按下其他键退出。");
getchar();
}
printf("统计结果:\n");
printf("运算类型 加 减 乘 除 求余\n");
printf("题目数量");
for(i=0;i<5;i++)
{
printf("%4d ",problemNum[i]);
}
printf("\n答对次数");
for(i=0;i<5;i++)
{
printf("%4d ",answerNum[i]);
}
}
2.求最大公约数
/*
* 文件名称: 综合实验3第二题
* 作者: 不知何人
* 完成日期: 2021.5.30
* 内容摘要: 无
* 注意: 无
*/
#include<stdio.h>
int MCD(int x,int y)
{
int n;
if(x>y)
{
MCD(x-y,y);
//输入x>y时,让x-y,直至x<y,进入第二种判断,或者x=y,返回x值,即为最大公约数
}
else if(x<y)
{
n=MCD(x,y-x);
//输入x>y时,让y-x,直至x>y,进入第二种判断,或者x=y,返回x值,即为最大公约数
}
else
return x;
}
void main()
{
int MCDnum;
int x,y;
printf("请输入两个数(空格隔开)");
scanf("%d%d",&x,&y);
MCDnum=MCD(x,y);
printf("最大公约数为%d",MCDnum);
}
总结
我把去年刚学C语言时的代码发出来供新人们参考,别嫌弃啊哈哈(虽然确实很烂!实验报告我也都发了,在主页,我发的全是免费下载)
非常感谢您的观看
相关文章
- 常用排序算法(C语言描述)
- 栈(Stack)顺序存储C语言实现
- 设计模式的C语言应用-命令模式-第五章
- 设计模式的C语言应用-观察者模式-第四章
- 设计模式的C语言应用-责任链模式-第三章
- 设计模式的C语言应用-状态机模式-第二章
- 设计模式的C语言应用-导言-第一章
- [OBJECT-C语言随笔之四]创建视图并绘制简单图形
- ZZNUOJ_C语言1097:计算平均成绩(函数专题)(完整代码)
- ZZNUOJ_用C语言编写程序实现1243:海选女主角(附完整源码)
- 【C语言项目设计】2048
- 设计模式的C语言应用-外观模式-第八章
- C语言 第一章 C语言简介
- 《C语言编写 学生成绩管理系统》
- 【C语言天天练(二)】预处理
- 【高级C】手把手教你分解C语言中复杂的变量声明
- C语言与C++之常见问题分享