程序设计基础C实验报告(2).doc
程序设计基础C实验报告程序设计基础C实验报告教学班级 学号 姓名 课程教师 实验辅导教师_重庆理工大学计算机学院 2012年2月实验5 循环程序设计教学班级_ 学号_ 姓名_实验日期 实验地点 机房 实验成绩_ 一、实验目的1 了解C语言循环结构的使用范围。2 学会正确使用逻辑运算符和逻辑表达式。3 熟练掌握C语言的三种循环结构whilc语句、dowhilc语句、for语句的特点和使用方法。4 能够编写一些有实际应用意义的循环结构程序。二、实验内容1基本内容题目1计算135799101的值。(提示注意符号的变化)includestdio.hvoid mainint i,t1,s0; /* t标识正负符号 */for i1;i101; i2 /*error*/si*t;t -t; printfsdn,s; 请改错,并运行程序。 分别用dowhile语句和while语句改写以上程序。题目2分析程序,运行时输入24579CR注CR表示回车换行。includestdio.hvoid mainint c; whilecgetcharnswitchc-2case 0case 1 putcharc4;case 2 putcharc4;break;case 3 putcharc3;case 4 putcharc2;break; defaultputcharc;printfn;题目3下面程序的功能是打印100以内个位数为3且能被3整除的所有数,选择合适的语句填入该空格中。includestdio.hvoid mainint i,j;fori0; _ i10 ;i ji*103;ifi30continue;printf4d,j;题目4编程输出用04任意组成无重复数字的三位数都是多少每行输出10个数。includestdio.hvoid mainint i,j,k,count0;printfn;fori1;i5;i/*以下为三重循环*/forj0;j5;jfor k0;k5;kif /*确保i、j、k三位互不相同*/printf6d,i*100j*10k; count;ifprintfn;printfn;题目5根据公式 求e的近似值,精度要求为10-6。题目6输入一行字符,将小写字母转换为大写字母显示,其它字符原样输出。2选择内容题目7打印出如下图案*include stdio.hvoid mainint i,j; fori1;i4;i forj1;j8-i;j 理解数字8的作用 printf ; forj1;j2*i-1;j printf* ; printfn; /* 上面的程序输出上三角形 */ /* 下面的程序输出下三角形 */ fori3;i1;i forj1;j8-i;j printf ; forj1;j2*i-1;j printf* ; printfn; 运行以上程序,验证实验结果。 模仿上面程序,打印出如下图案 1 2 2 2 3 3 3 3 3三、实验结果(用截图说明)题目1题目2题目3题目4题目7四、调试心得(选作)实验6 数组实验教学班级_ 学号 姓名_实验日期 实验地点 机房 实验成绩_ 一、 实验目的1 理解数组的特点及其与普通变量的区别及特点;2 掌握一维数组的定义、赋值和输入输出的方法;3 掌握二维数组的定义、赋值和输入输出的方法;4 掌握字符数组和字符串函数的使用;5 掌握与一维数组和字符数组有关的程序与算法;6 理解与二维数组有关的程序与算法。二、 实验任务1基本内容【题目1】读程序,写结果。includestdio.hvoid mainint i,s0,a101,2,3,4,5,6,7,8,9,10;fori4;i7;issai;printfsdn,s;【题目2】下面程序给数组a输入数据,以每行4个数据形式输出,请填空。includestdio.hdefine N 8void mainint i, a N; fori0; iN; iscanfd,_;fori0; iN; iif_printfn;printf11d,_;printfn;【题目3】用简单选择法对10个整数排序,将程序补充完整。define N 10includestdio.hvoid mainint i,j,min,temp,aN1,5,4,3,7,0,9,8,2,6;for i0;iN-1;imini;for ji1;;jif aminajminj;ifmini_printfn 排序结果为n;for i0;iN;iprintf5d,ai;printfn;【题目4】下面的程序用冒泡法对10个数排序(从小到大),将程序补充完整。define N 10includestdio.hvoid mainint i,j,min,temp,aN1,5,4,3,7,0,9,8,2,6;fori0;iN;iforj0;;j if tempaj;ajaj1;aj1temp; printfn 排序结果为n;fori0;i10;iprintf4d,ai;printfn;【题目5】任意输入20个数到一维数组a中,求这20个数的平均值。【题目6】编程任意输入10个数,判断该哪些是素数,并输出这些素数。【题目7】以下程序是求二维数组中的最小数及其下标(设最小数是唯一的),请填空完成程序,并上机验证。includestdio.hvoid mainint i,j,row,col,min;int a341,2,3,4,9,8,7,6,-1,-2,0,5;mina00;_forj0;j4;jif_ minaij;rowi;colj; printfmind,rowd,coldn,min,row,col;【题目8】以下程序是实现输出杨辉三角(最多十行),请将程序补充补充完整。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 define N 11includestdio.hvoid mainint i,j,aNN;for i1;iN;iai11; _;for i3;iN;ifor j2;;jaij ai-1j-1 ai-1j;for i1;iN;ifor j1;ji;jprintf6d, aij;_;printfn;【题目9】从键盘上任意键入n阶方阵,求它的两条对角线元素之和。【题目10】分析以下读程序,写的运行结果,并上机验证。includestdio.hvoid mainchar c,sBABCDCBA;int k;fork1;csk0;kswitchccase Aputchar;continue;case Bk;break;defaultputchar*;case Cputcharcontinue;putchar;putcharn;【题目11】输入一串字符,计算其中字母的个数。include stdio.hinclude string.hdefine N 81void mainchar chN;int i,count0;puts请输入一串字符; _ /*提示使用字符串输入函数*/fori0;istrlench;iif_count;printf字母个数为d n, count;【题目12】编程输入一串字符,要求逆序输出。2选择内容【题目13】将两个字符串连接起来,不使用strcat字符函数includestdio.hdefine N 80void mainchar s12*N,s2N;int i0,j0;printfn请输入两个字符串,以空格或回车键作字符串结束标志n;scanfs,;scanfs,;while s1i0i;while _s1is2j;s1i0;printfn连接后的两个字符串为nsn,s1;【题目14】在字符串str中查找字符ch首次出现的位置,若str字符串中不包含字符ch,则输出0。【题目15】有4位学生,考4门功课。求出每位学生的总分和平均分,及所有学生每门功课平均分和所有功课的平均分。【题目16】找出一个二维数组的”鞍点”,即该位置上的元素在该行上最大,在该列上最小,如无”鞍点”,则给出提示。三、实验结果(用截图说明)题目1题目2题目3题目4题目5题目7题目8题目10题目11四、调试心得(选作)实验7 函数实验教学班级_ 学号 姓名 实验日期 实验地点 机房 实验成绩_ 一、 实验目的1 理解函数定义的方法。2 掌握函数实参与形参的对应关系,以及函数”参数传递”的方式。3 掌握函数的嵌套调用和递归调用的方法;4 掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。二、 实验任务1基本内容【题目1】以下程序是求3个数中的最大值,请完善程序并上机验证。includestdio.hvoid mainint a,b,c,m;int maxint x,int y; /* 函数声明*/printf a,b,c;scanfd,d,d,printf最大值是dn,m;int maxint x,int y /*函数定义*/int z;zxyxy;return z;【题目2】程序填空子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。 includestdio.hvoid mainint number;printf请输入一个正整数n; scanfd,if printfn d是素数,number;elseprintfn d不是素数,number;int primeint number /*请注意区别main函数和prime函数中的number变量*/int flag1,n;for n2; flag1 nnumber/2;nif _ flag0;return flag;【题目3】读程序,验证结果。include stdio.hvoid mainint i2,p;pfi,i1;printfdn,p;int fint a, int bint c;ifabc1;else ifabc0;elsec-1;returnc;将程序中第4行语句pfi,i1; 改为以下语句,比较程序结果pfi1,i;实践说明,函数的参数求值顺序是【题目4】编程在主函数中输入和输出字符串,在子函数中实现一个字符串按反序存放。【题目5】用子函数计算4名学生的平均分。标注“error”处有错误,请改正。includestdio.hdefine N 4float averagefloat array /* 注意数据类型的一致 */int i; float aver,sum0;for i0;iN;isumarrayi;aversum/N;return aver;void mainfloat scoreN,aver;int i;printfn d scoresn,N;for i0;iN;iscanff,averaveragescoreN; /* error */printfn average score is 5.2fn,aver;【题目6】改正标注“error”语句行的错误,理解本程序的功能。includestdio.hvoid mainint a30,2,4,6,8,10,12,14,16,sum;int func; /*函数声明*/sumfunca3; /*error*/printfn sumdn,sum;int funcint a /*error*/int i,j,sum0;fori0;i3;iforj0;j3;jifijsumaij;return sum;【题目7】在主函数中定义数组A34、B4,用子函数对数组A每一行求和,其值放在数组B中,在主函数中输出数组B的值。【题目8】输入两个正整数,求其中最大公约数和最小公倍数。将程序补充完整。includestdio.hint fun1x,yint temp;if xytempx;xy;ytemp;while y0tempxy;xy;ytemp;return x;int fun2x,yreturn x*y/fun1x,y; /*函数的嵌套调用*/void mainint a,b;printf请输入两个正整数n;scanfd,d,printf它们的最大公约数为dn,;printf它们的最小公倍数为dn,;【题目9】阅读以下程序,若输入为ABCDE时,写出程序的执行结果。include stdio.hvoid reverse char ch;chgetchar ;if chprintf c,ch;elsereverse ;printf c,ch;void main reverse ;printfn;【题目10】编程计算猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了,求第一天共摘了多少桃子【题目11】阅读以下程序,该程序中,main函数的局部变量是_,max函数的局部变量是_,全局变量是_,理解它们的使用方式。includestdio.hint a4,b6;int maxint a,int bint c;cabab;return c;void mainint a9;printfdn,maxa,b; 【题目12】以下是一个求1-10累加和的错误程序,请改正。includestdio.hvoid mainint i,s;fori1;i10;issumi;printfsdt,s;sumint jint x0; /* error */xj;returnx;2选择内容【题目13】编写一个函数,判断一个整数是不是回文数。如34543是回文数,个位与万位相同,十位与千位相同。【题目14】在一个数组A中存放100个数据,用子函数判断该数组中那些是素数,并统计该素数的个数,在主函数中输出该素数的个数。【题目15】用递归法将一个整数转换成字符串。例如,输入1234,应输出字符串”1234”。n的位数不确定,可以是任意的整数。请在注释行中添加注释,使程序易于理解。include stdio.hvoid convertint nint i;if in/100 /**/converti;putcharn100; /*_*/void mainint number;printfn输入整数;scanfd,printfn输出字符是;if number0 /**/putchar-;number-number;convertnumber;printfn;三、实验结果(用截图说明)题目1题目2题目6题目9题目12四、调试心得(选作)实验8 常用指针实验教学班级_ 学号 姓名实验日期 实验地点_ 机房 实验成绩_ 一、 实验目的1 掌握指针的概念,指针变量的定义和使用。2 熟练使用指针访问各种简单数据类型。3 熟练掌握C语言指针的常见运算。4 熟练使用指针访问一维数组。5 理解和掌握指针作为函数参数的实质,学会使用指针作为函数参数。二、 实验任务1基本内容【题目1】请改正程序中错误的地方,预测程序的运行结果,并上机调试验证。includestdio.hvoid mainint x1,y2, *p, *q;px; /* error*/qy; /* error*/printfxd,ydn,x,y;printfprintfpd,qdn,p,q;printfpd,qdn,*p,*q;【题目2】请预测程序的结果,并上机运行程序,验证结果。includestdio.hvoid mainint a1,3,5,7,9,11,13;int *pa;printf1dn,*p;printf2dn,*p;printf3dn ,*p;printf4dn ,*p;printf5dn ,*p;printf6dn,*p;printf7dn,*p;printf8dn,*p;pprintf9dn ,*p;printf10dn,*p;p;printf11dn ,*p;【题目3】请预测程序的结果,并上机运行程序,验证结果。includestdio.hvoid mainint a61,2,3,4,5,6; int *p,i,s1;pa;fori0;i6;is**pi;printfdn,s;【题目4】请预测程序的结果,并上机运行程序,验证结果。includestdio.hvoid mainchar aabcdef;char *bABCDEF;int i;fori0;i3;iprintfc,sn,*a,bi;printf-n;fori3;ai;iputchar*bi;printfcn,*ai; 【题目5】程序功能输入一行字符不超过100个,统计其中大写字母的个数 要求阅读以下程序,将空格处补充完整,并上机调试运行。includestdio.hvoid mainint cle0;char *p,s101;printf请输入一行字符;getss;ps;whileif*pA*pZcle;;printf大写字母个数dn,;【题目6】编写程序输入两个整数,通过函数swap交换这两个整数的值。要求在main函数中输入两个整数,在main函数中输出交换后的结果。分析程序,将空白部分补充完整,并上机验证。includestdio.hvoid swapint *p1,int *p2int i;i_; ; _;void mainint n1,n2;printf请输入两个整数;scanfdd,swap_;printfd,dn,n1,n2;【题目7】程序功能求两个数中的最大值。要求阅读以下程序,将空格处补充完整,并上机调试运行。includestdio.hint * maxint *x,int *yif*x*yreturn ;elsereturn ;void mainint a,b;printf请输入两个整数a,b;scanfd,d,printf最大值是dn, ;【题目8】将数组a中的10个整数按相反顺序存放,完善程序。include stdio.hdefine N 10void invint *x, int n /*理解掌握本函数的算法*/int t,i;fori0;in-1/2;it*xi;*xi*xn-1-i;*xn-1-it;void mainint i,aN;fori0;iN;iscanfd,ai;printf原序为n;fori0;iN;iprintf6d,ai; inv_;printfn;printf逆序为n;fori0;iN;iprintf6d,*;printfn;2选择内容【题目9】编写程序输入10个整数到一个一维数组中,把该数组中所有为偶数的数,放到另一个数组中并输出。要求分析程序,将省略号的部分补充完整,并上机验证。includestdio.hvoid mainint num10,i,dnum10,di;int *p;pnum;fori0;i9;i /* 输入10个整数 */scanfd,pi;di0; /* 偶数个数清0 */fori0;i9;i pdnum;fori0;idi;i /* 输出所有的偶数 */ 【题目10】编写程序输入某班35个同学一门课程的成绩,计算并输出所有学生成绩的平均值,以及每个学生成绩与平均值之间的差值。要求用一维数组保存35个学生的成绩,用指针变量对学生成绩进行访问。【题目11】编写程序输入一行字符不超过1024个,统计其中大写字母、小写字母、空格、数字及其它字符分别有多少个 要求用字符数组存放输入的字符,用指针对字符数组进行访问。【题目12】编写函数len,求一个字符串的长度。要求在main函数中输入字符串,并输出其长度。分析下面的代码,将省略号的部分补充完整,并上机验证。include stdio.hint lenchar *str void mainchar str1024;getsstr;printfd,lenstr;【题目13】编写函数convert,把字符串中的小写字母转换成大写字母。要求在main函数中输入字符串,并输出转换后的字符串。分析下面的代码,将省略号的部分补充完整并上机验证。includestdio.hvoid convertchar *p void mainchar str100;getsstr;convertstr;putsstr;三、实验结果(用截图说明)题目1题目2题目3题目4题目6四、调试心得(选作)41