邱日整理C语言实验大全.docx
- 文档编号:29433385
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:8
- 大小:22.72KB
邱日整理C语言实验大全.docx
《邱日整理C语言实验大全.docx》由会员分享,可在线阅读,更多相关《邱日整理C语言实验大全.docx(8页珍藏版)》请在冰豆网上搜索。
邱日整理C语言实验大全
邱日整理C语言实验大全
邱日整理 C语言上机实验大全 实验三选择结构程序设计 一、实验目的 掌握C语言关系表达式和逻辑表达式的运算和使用; 正确使用条件控制语句进行选择结构程序设计。
二、预习要求 关系运算符和关系表达式、逻辑运算符和逻辑表达式; if语句的三种形式,以及if语句的嵌套;switch语句。
三、实验内容 完善程序,从键盘上输入x的值,按下式计算y的值。
?
x x ?
3x?
11 x?
10?
编程提示:
注意逻辑表达式的正确表达方法,数学中的1≤x 达式来表示。
下面是用多分支选择结构实现本题的程序结构:
/*if语句实现的多分支结构*/ #include\voidmain(){定义变量; 输入x; if(_______________) //按y=x为变量y赋值;elseif(_______________) //按y=2x-1为变量y赋值;else _______________ //按y=3x-11为变量y赋值;printf(\} 注意:
在赋值语句中2x应该写成2*x。
编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。
90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
编程提示:
1.先定义一个整型变量存放百分制成绩、定义一个字符型变量存放相应的等级成绩;2.输入百分制成绩; 下面程序运行时从键盘上分别输入(20,15),(15,20),写出运行结果。
/*分支结构中的复合语句*/ #include\voidmain(){inta,b,t; t=0; scanf(\ if(a>b) {t=a; a=b; b=t; } printf(\} 编写程序,给出一个不多于3位的正整数n,要求:
求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字。
编程提示:
1.定义变量并输入一个3位以下的正整数n2.将n拆分成三个一位数:
表达式:
n_可将一个三位数n拆分出三位数中的个位数;表达式:
n/100可将一个三位数n拆分出三位数中的百位数; 表达式:
((n_0))/10或(n-(n/100)*100)/10可将一个三位数n拆分出三位数中的十位数。
3.用一个嵌套的选择结构,按照百位数、十位数是否为0决定n为几位数。
4.按相反的顺序输出n。
思考:
如果是对一个5位的正整数进行上述处理,程序应如何改动?
写出与表达式z=等价的if语句,并上机验证。
企业发放的奖金根据利润提成。
利润I低于或等于100000元的,奖金可提10%;利 润高于100000元,低于200000元时,低于100000元的部分按10%提成,高于100000元的部分,可提成%;200000 元时,高于400000元的部分按3%提成;6000001000000时,超过1000000的部分按1%提成。
从键盘输入当月利润I,求应发奖金总数。
要求:
分别用if语句和switch语句编程序。
四、实验注意事项 C程序中表示比较运算的等号用“==”表示,赋值运算符用“=”表示,不能将赋值号“=”用于比较运算。
控制表达式是指任何合法的C语言表达式,只要表达式的值为“非零”,则为“真”,“零”则为“假” 在if语句的嵌套结构中,else与if的配对原则是:
每个else总是与同一个程序中、在前面出现的、而且距它最近的一个尚未配对的if构成配对关系。
实验四循环结构程序设计 1.实验目的 ?
熟练掌握循环结构(while、do-while、for),以及continue、break等控制语句。
?
掌握一些采用选择结构和循环结构的常用算法。
2.实验内容
(1)常用算法之一:
穷举法 i.穷举法时在若干个可能的解当中,进行逐一枚举和筛选,找出符合要求的解。
ii.编写程序,求100~200间的全部素数。
(2)常用算法之二:
迭代法 i.迭代法一般用于求解方程的根或近似解。
设方程f=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤进行:
a.选一个方程的近似根,赋给变量x0;b.将x0的值保存为x1,然后计算g; c.当x0与x1差的绝对值不小于某个精度要求时,重复步骤b的计算。
ii.用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一项的绝对值小于10-6为止。
(3)常用算法之三:
递推法 i.递推法是利用问题本身所具备的某种递推关系求解的一种方法。
假设问题的规模为N,要求N为1时,能够较快地得到解,而递推性质则要求当已得到问题规模为i-1的解之后,能够从已知问题规模为1,2,3,...,i-1的一系列解,构造出问题规模为i的解。
这样,程序可以从i=0或i=1出发,通过递推的方式,得到问题规模为N的解。
ii.编写程序,用递推法计算Fibonacci数列的前40个值。
Fibonacci数列具有以下特点:
第1、2个数为1、1,从第3个数开始,该数为前两个数之和。
即:
F1=1F2=1 (n=1)(n=2) (n>=3) Fn=Fn-1+Fn-2 提示:
求出一个新数F3之后,则将原来的F2看作F1,F3看作F2,循环实现递推。
(4)编写程序,求解以下问题; i.打印出所有的“水仙花数”。
“水仙花数”指一个三位数,其各位数字立方和等于数本身。
例如,153是一个水仙花数,因为153=13+53+33。
ii.百钱买百鸡问题。
公鸡每只5元,母鸡每只3元,小鸡3只一元,问一百元买一百只鸡有几种解法。
提示:
设x,y,z为三种鸡的只数,按题目写出代数方程为:
x+y+z=100,5x+3y+z/3=100,用穷举法列举出x、y、z的值iii.用二分法求解方程f=3x3+4x2-2x+5。
IV.猴子吃桃问题。
猴子有N个桃子,每天吃掉一半,还不过瘾,又吃了一个。
到第10 天,发现只剩下一个桃子了。
求最初的桃子数目。
个桃子。
用递推法。
) V.编写一个程序,验证“谷角猜想”,即键盘输入一个自然数n,把n经过有限次 运算后,最终得到自然数1的全过程打印出来。
VI.某处发生一起案件,侦察得知如下可靠线索:
ABCD四人都有作案可能,AB中至少 一人参与作案,BC中至少一人参与作案,CD中至少一人参与作案,AC中至少一人未参与作案。
请分析谁最有可能作案。
///徐友万 /*#includevoidmain(){inta,i;for(a=100;a /*#include#includevoidmain(){inti=1,n=2;doublepi=0;while(/i>=){ pi=pi+/(pow(-1,n)*i);i+=2;n++;}printf(\}*/ /*#includevoidmain(){inta=1,b=1,c,i,t;printf(\for(i=1;i
}} }printf(\}*/ /*下面的程序是自动形成并输出如下矩阵,填空并运行程序。
1 2 3 4 5 1 1 6 7 8 1 1 1 9 10 1 1 1 1 11 1 1 1 1 1*/ /*#includevoidmain(){inta[5][5];inti=0,j=0,k=2;for(i=0;i }}*/ /*七)求4*5的矩阵中的鞍点,若矩阵不存在鞍点则输出\不存在鞍点\。
*/ /*#includevoidmain(){inta[4][5];intb[4][5],c[4][5];inti,j,max,min,flag,k=0,l=0,m=0,n=0;printf(\for(i=0;imax); max=a[i][j];}b[i][j]=max;}for(j=0;j } for(i=0,flag=0;(flag==0)&&i if(flag==0) printf(\不存在鞍点\\n\}*//*定义一个5行5列的二维数组a,使下三角的所有元素初始化为1,在划线处填空。
inti,j,a[5][5];for(i=0;i if( )a[i][j]=1;*/ /*#includevoidmain(){inti,j,a[5][5];for(i=0;i /*找出5×5矩阵中的升序数,并输出。
*//*#include voidmain{inta[5][5];inti,j,m,n;printf(\for(i=0;i 实验八函数1 实验目的 ⒈掌握函数的定义、函数类型、函数参数、函数调用的基本概念;⒉掌握变量名作函数参数的程序设计方法;⒊掌握函数的嵌套调用的方法和递归调用的方法; 知识回顾 1、被调函数在主调函数后面定义,需先在主调函数中声明;2、函数调用时,实参与形参的类型要匹配,个数、顺序要一致; 3、函数的形参也是变量。
4、函数定义无参函数:
有参函数:
空函数:
函数类型函数名函数类型函数名{{表){声明部分}语句声明部分}语句} 5、函数的形式参数 在定义时,函数名后括号中的参数叫“形式参数”。
在主调函数中调用一个函数时,函数名后括号中的参数叫“实际参数” 6、函数返回值:
return语句,用法如:
returnz;或return(z);7、函数调用的一般形式:
?
函数语句:
如printstar();无返回值,仅完成一定功能;?
函数表达式:
如:
m=4+min(a,b);函数在表达式中出现;?
函数参数:
如:
m=max(a,min(c,d));函数返回值作为参数; 实验内容 ⒈下面程序的功能是:
根据输入的整数x和n,利用函数fact实现求x。
n 例如:
输入:
2,3输出23=8,请在程序中的横线上填入正确的内容,将程序补充完整。
#include\voidmain() {longintfact(longx,longn); /*声明fact函数*/ longintx;longintn; printf(\scanf(\ printf(\调用fact函数*/} longintfact(longintx,longintn) /*定义fact函数求xn*/{longinti,s; ; /*求累积变量的初始化*/if(n==0)return0; for(i=1;i ; /*返回结果x*/ } ⒉下面程序的功能是:
计算Cm?
nn n m!
的值。
请在程序中的横线上填入适当的内容, n!
*(m?
n)!
n将程序补充完整。
例如:
输入:
5,3 输出:
Cm?
10 编程提示:
定义求阶乘函数,在此基础上定义求组合数函数。
主函数调用求组合数函数,求组合数函数再三次调用求阶乘函数。
#include\ longintjf(intn) /*定义求阶乘函数jf*/{inti;longintt=1;for(i=1;i longintcmn(intm,intn) /*定义求组合数函数cmn*/{} /*用return语句返回结果*/ voidmain(){intm,n; printf(\scanf(\,%d\;
} ⒊下面程序的功能是:
读入一个整数m,计算如下公式的值:
t?
1?
的内容。
111?
?
?
?
23m例如:
若输入5,则应输出:
“Theresultis”。
请在程序中的横线上填入适当#include\doublefun(intm){} voidmain(){intm; printf(\scanf(\ _________; /*按照例子中的输出形式输出结果*/} ⒋输入一个十进制整数,输出其对应的二进制数。
编程提示:
在main函数中定义一个变量并为其赋值,然后调用函数fun将该十进制数转 换为二进制。
函数fun的形参即为被转换的整数,在for循环中每次求出m%k存放到数组aa中,同时将m/k的整数商赋给m继续判断,直止m的值为0。
最后按反序输出数组aa的元素。
5.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。
6、写一自定义函数convert,把给定的一个二位数组转置,即行列互换,在主函数中生成一个二维数组,输出其转置。
7、a是一个2*4的整型数组,且各元素均已赋值。
函数max_value可求出其中的最大元素值max,并将此值返回主调函数。
请编写max_value()函数和main()函数,用main()调用max_value函数并输出其结果。
//侯靖秋 /*#include#include#include\voidmain(){longintfact(longx,longn); longintx;longintn; printf(\N(>=0):
\ scanf(\ printf(\} longintfact(longintx,longintn) { longinti,s;s=1;if(n==0)return1;for(i=1;i /*#includelongintjf(intn){inti;longintt=1;for(i=1;i voidmain(){longintjf(intn);intm,n; printf(\scanf(\printf(\}*/ /*#include\doublefun(intm){doublesum=0,i,j;for(i=1;i voidmain(){doublefun(intm);intm;printf(\scanf(\printf(\}*/ //填空1 //填空2 //填空3 /*#includelonginttwo(intx){inta,j=0,k,sum=0;for(a=x;a!
=0;){a/=2;j++;}for(a=x,k=0;k voidmain(){longinttwo(intx);intm;printf(\scanf(\printf(\}*/ /*#includeintsu(intx){inti;for(i=2;i voidmain(){intsu(intx);intm,i; //4 printf(\scanf(\i=su(m);if(i)printf(\elseprintf(\}*/ /*#include voidconvert(intarray[4]){inta,i,j;for(i=0;i voidmain(){voidconvert(intarray[4]);inti,j;inta[4][4]={{1,2,3,4},{5,6,7,8},{9,0},0};printf(\for(i=0;i#include#include intmax_value(intarray[4]){ //5 //6 inti,j,max;max=array[0][0];for(i=0;i voidmain(){intmax_value(intarray[4]);inta[2][4],i,j;srand((unsigned)time(NULL));for(i=0;i //7 实验九函数2 实验目的:
1.2.3.4. 熟练掌握函数的定义和调用 熟练掌握函数的实参、形参和返回值的概念及使用掌握函数的嵌套调用和递归调用的方法掌握单步调试进入函数和跳出函数的方法 实验内容 1.调试改错题 改正下列程序中的错误,计算1!
+2!
+…+10!
的值,要求定义并调用函数fact(n)计算n!
,函数类型是double。
#includedoublefact(intn)intmain(){inti;doublesum;for(i=1;i sum=sum+fact(i);printf(“1!
+2!
+…+10!
=%f\\n”,sum);return0;} doublefact(intn){inti;doubleresult;for(i=1;i 2.已有变量定义和函数语句“inta=1,b=-5,c;c=fun(a,b);”,fun函数的作用是计算两个数之差的绝对值,并将差值返回给调用函数,请编写fun函数,并调试。
3.下面程序的功能是:
求二维数组a中的上三角元素之和。
例如:
a中的元素为:
4 434 37 7 3 12 8 5 6 5 52 2423 2 10程序的输出应为:
Thesumis:
147。
请将程序补充完整。
/*通过函数调用求二维数组中的上三角元素之和*/#include\#include\intarrsum(intarr[4][4]){inti,j,sum; } voidmain() {inta[4][4]={4,4,34,37,7,3,12,8,5,6,5,52,24,23,2,10},i,j; printf(\ 4.将字符串1的第1,3,5,7,9,......位置的字符复制到字符串2并输出。
要求此功能封装在自定义函数中. 例如:
当字符串1为\,则字符串2为\。
编程提示:
子函数:
(1).函数的类型为void,函数中不使用return语句;
(2).函数的形参应为两个字符型一维数组; (3).函数体中使用循环结构,将字符串1中相应位置上的字符逐一复制到字 符串2中,注意循环变量每次递增的数目。
main函数:
(1).定义一个一维字符型数组;
(2).为字符数组赋一个字符串; (3).调用转换函数,以两个数组名作实参; (4).输出转换后的字符数组的内容。
/*通过函数调用实现对字符串的处理*/#include\#include\#include\ voidfun(charstr1,charstr2){}voidmain() {charstr1[80]=\ printf(\_______________; printf(\ } 5.用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”。
n的位数不确定,可以是任意位数的整数。
编程提示:
分解出每一位数字输出.#includevoidconvert(intm){ if(m>10){ ; printf(\ }else printf(\ } voidmain(){intn;printf(\scanf(\ ;} 6.编制函数del_char,函数原型为voiddel_char(chara,charch),函数的功能是删除a数组中值为ch的字符。
例如,从字符串“DDdidS”中删除’d’后,字符串为“DDiS”。
从主函数 中输入字符串,指定要删除的字符,并输出结果。
7.编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列2个条件的数:
它是完全平方数,又有2位数字相同,如144、676等,函数返回满足条件的数据个数。
请同时编写main函数进行测试。
8.在以下程序中,main()函数调用了4个函数swap1、swap2、swap3和swap4,还定义了变量a和b,程序设计的目的是要求通过函数调用,交换main()中变量a和b的值。
请分析在swap1、swap2、swap3和swap4这4个函数中,哪个函数可以实现这样的功能。
#includevoidmain(){voidswap1(intx,inty),swap2(int*px,int*py),swap3(int*px,int*py);inta=1,b=2,*pa=&a,*pb=&b; swap1(a,b);printf(\a=1;b=2;swap2(pa,pb);printf(\a=1;b=2;swap3(pa,pb);printf(\ swap4(pa,pb);printf(\} voidswap1(inta,intb){intt;t=a;a=b;b=t;} voidswap2(int*pa,int*pb){intt;t=*pa;*pa=*pb;*pb=t;} voidswap3(int*pa,int*pb){ int*pt;pt=pa;pa=pb;pb=pt;} voidswap4(int*pa,int*pb){int*pt;*pt=*pa;*pa=*pb;*pb=*pt;} ///侯靖秋 //改正下列程序中的错误,计算1!
+2!
+?
+10!
的值, //要求定义并调用函数fact(n)计算n!
,函数类型是double。
/*#includeintmain(){doublefact(intn);inti;doublesum=0;for(i=1;i printf(\?
+10!
=%f\\n\return0;} doublefact(intn){inti;doubleresult=1;for(i=1;i //已有变量定义和函数语句\;c=fun(a,b);\,fun函数的作用是计算两个数之差的绝对值, //并将差值返回给调用函数,请编写fun函数,并调试。
/*#includevoidmain(){ intfun(inta,intb);inta=1,b=-5,c;c=fun(a,b);printf(\} intfun(inta,intb){intc;c=a-b;if(c //下面程序的功能是:
求二维数组a中的上三角元素之和。
/*#include\#include\ intarrsum(intarr[4][4]){inti,j,sum=0;for(i=0;i voidmain(){inta[4][4]={4,4,34,37,7,3,12,8,5,6,5,52,24,23,2,10};printf(\}*/ //将字符串1的第1,3,5,7,9,......位置的字符复制到字符串2并输出。
//要求此功能封装在自定义函数中./*#include\#include\#include\ voidfun(chars
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 语言 实验 大全