最新版程序设计基础C实验报告版.docx
- 文档编号:11894036
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:60
- 大小:573.86KB
最新版程序设计基础C实验报告版.docx
《最新版程序设计基础C实验报告版.docx》由会员分享,可在线阅读,更多相关《最新版程序设计基础C实验报告版.docx(60页珍藏版)》请在冰豆网上搜索。
最新版程序设计基础C实验报告版
《程序设计基础C》
实
验
报
告
教学班级:
学号:
姓名:
江式鑫
课程教师:
张建勋实验辅导教师:
张建勋
重庆理工大学计算机学院
2014年2月
实验5循环程序设计
教学班级:
_______学号:
__________姓名:
___________
实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
(1)了解C语言循环结构的使用范围。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握C语言的三种循环结构:
whilc语句、do……whilc语句、for语句的特点和使用方法。
(4)能够编写一些有实际应用意义的循环结构程序。
二、实验内容
1.基本内容
题目1:
计算1-3+5-7+......-99+101的值。
(提示:
注意符号的变化)
#include
voidmain()
{inti,t=1,s=0;/*t标识正负符号*/
for(i=1;i<101;i+=2)/*error*/
{s+=i*t;
t=-t;
}
printf("s=%d\n",s);
}
①请改错,并运行程序。
②分别用do……while语句和while语句改写以上程序。
题目2:
分析程序,运行时输入:
24579
#include
voidmain()
{intc;
while((c=getchar())!
='\n')
{switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
case4:
putchar(c+2);break;
default:
putchar(c);
}
}
printf("\n");
}
题目3:
下面程序的功能是打印100以内个位数为3且能被3整除的所有数,选择合适的语句填入该空格中。
#include
voidmain()
{
inti,j;
for(i=0;__________________;i++)
{j=i*10+3;
if(__________________)
continue;
printf("%4d",j);
}
}
题目4:
编程输出:
用0~4任意组成无重复数字的三位数?
都是多少?
每行输出10个数。
#include
voidmain()
{
inti,j,k,count=0;
printf("\n");
for(i=1;i<5;i++)/*以下为三重循环*/
for(j=0;j<5;j++)
for(k=0;k<5;k++)
{
if(__________________)/*确保i、j、k三位互不相同*/
{
printf("%6d",i*100+j*10+k);
count++;
if(________________)
printf("\n");
}
}
printf("\n");
}
题目5:
根据公式
求e的近似值,精度要求为10-6。
题目6:
输入一行字符,将小写字母转换为大写字母显示,其它字符原样输出。
2.选择内容
题目7:
打印出如下图案
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
#include
voidmain()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=8-i;j++)//理解数字8的作用
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}/*上面的程序输出上三角形*/
/*下面的程序输出下三角形*/
for(i=3;i>=1;i--)
{for(j=1;j<=8-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");}
}
①运行以上程序,验证实验结果。
②模仿上面程序,打印出如下图案
1
222
33333
三、实验结果(用截图说明)
5.1
5.2
5.3
5.4
5.5
5.6
5.7.1
5.7.2
5.8
5.9
5.10
四、调试心得(选作)
实验6数组实验
教学班级:
_______学号:
__________姓名:
___________
实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
(1)理解数组的特点及其与普通变量的区别及特点;
(2)掌握一维数组的定义、赋值和输入输出的方法;
(3)掌握二维数组的定义、赋值和输入输出的方法;
(4)掌握字符数组和字符串函数的使用;
(5)掌握与一维数组和字符数组有关的程序与算法;
(6)理解与二维数组有关的程序与算法。
二、实验任务
1.基本内容
【题目1】读程序,写结果。
#include
voidmain()
{
inti,s=0,a[10]={};
for(i=4;i<7;i++)
s=s+a[i];
printf("s=%d\n",s);
}
【题目2】下面程序给数组a输入数据,以每行4个数据形式输出,请填空。
##include
#defineN8
voidmain()
{
inti,a[N];
for(i=0;i scanf("%d",_____________); for(i=0;i { if(_____________) printf("\n"); printf("%11d",_________); } printf("\n"); } 【题目3】用简单选择法对10个整数排序,将程序补充完整。 #defineN10 #include voidmain() { inti,j,min,temp,a[N]={}; for(i=0;i { min=i; for(j=i+1;______________;j++) if(a[min]>a[j]) min=j; if(min! =i) {_______________________________________} } printf("\n排序结果为: \n"); for(i=0;i printf("%5d",a[i]); printf("\n"); } 【题目4】下面的程序用冒泡法对10个数排序(从小到大),将程序补充完整。 #defineN10 #include voidmain() { inti,j,min,temp,a[N]={}; for(i=0;i for(j=0;____________;j++) if(__________________) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } printf("\n排序结果为: \n"); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); } 【题目5】任意输入20个数到一维数组a中,求这20个数的平均值。 【题目6】编程: 任意输入10个数,判断该哪些是素数,并输出这些素数。 【题目7】以下程序是求二维数组中的最小数及其下标(设最小数是唯一的),请填空完成程序,并上机验证。 #include voidmain() { inti,j,row,col,min; inta[3][4]={{},{},{}}; min=a[0][0]; _______________________ for(j=0;j<4;j++) if(___________________) { min=a[i][j]; row=i; col=j; } printf("min=%d,row=%d,col=%d\n",min,row,col); } 【题目8】以下程序是实现输出杨辉三角(最多十行),请将程序补充补充完整。 1 11 121 1331 14641 15101051 … #defineN11 #include voidmain() { inti,j,a[N][N]; for(i=1;i { a[i][1]=1; _______________________; } for(i=3;i for(j=2;__________________;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i { for(j=1;j<=i;j++) printf("%6d",a[i][j]); _________________________; } printf("\n"); } 【题目9】从键盘上任意键入n阶方阵,求它的两条对角线元素之和。 【题目10】分析以下读程序,写的运行结果,并上机验证。 #include voidmain() { charc,s[]="BABCDCBA"; intk; for(k=1;(c=s[k])! ='\0';k++) { switch(c) { case'A': putchar('? ');continue; case'B': ++k;break; default: putchar('*'); case'C': putchar('&');continue; } putchar('#'); } putchar('\n'); } 【题目11】输入一串字符,计算其中字母的个数。 #include #include #defineN81 voidmain() { charch[N]; inti,count=0; puts("请输入一串字符: "); _____________________/*提示: 使用字符串输入函数*/ for(i=0;i if(_____________________________________) count++; printf("字母个数为: %d\n",count); } 【题目12】编程: 输入一串字符,要求逆序输出。 2.选择内容 【题目13】将两个字符串连接起来,不使用strcat字符函数 #include #defineN80 voidmain() { chars1[2*N],s2[N]; inti=0,j=0; printf("\n请输入两个字符串,以空格或回车键作字符串结束标志: \n"); scanf("%s",________); scanf("%s",________); while(s1[i]! ='\0') i++; while(_______________) s1[i++]=s2[j++]; s1[i]='\0'; printf("\n连接后的两个字符串为: \n%s\n",s1); } 【题目14】在字符串str中查找字符ch首次出现的位置,若str字符串中不包含字符ch,则输出0。 【题目15】有4位学生,考4门功课。 求出每位学生的总分和平均分,及所有学生每门功课平均分和所有功课的平均分。 【题目16】找出一个二维数组的”鞍点”,即该位置上的元素在该行上最大,在该列上最小,如无”鞍点”,则给出提示。 三、实验结果(用截图说明) 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 四、调试心得(选作) 实验7函数实验 教学班级: _______学号: __________姓名: ___________ 实验日期: ___________实验地点: _________(机房) 实验成绩: ___________ 一、实验目的 (1)理解函数定义的方法。 (2)掌握函数实参与形参的对应关系,以及函数”参数传递”的方式。 (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验任务 1.基本内容 【题目1】以下程序是求3个数中的最大值,请完善程序并上机验证。 #include voidmain() { inta,b,c,m; intmax(intx,inty);/*函数声明*/ printf("inputa,b,c="); scanf("%d,%d,%d",&a,&b,&c); __________________________ printf("最大值是: %d\n",m); } intmax(intx,inty)/*函数定义*/ { intz; z=(x>y)? x: y; returnz; } 【题目2】程序填空: 子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。 #include voidmain() { intnumber; printf("请输入一个正整数: \n"); scanf("%d",&number); if(__________________________) printf("\n%d是素数: ",number); else printf("\n%d不是素数: ",number); } intprime(intnumber)/*请注意区别main函数和prime函数中的number变量*/ { intflag=1,n; for(n=2;flag==1&&n<=number/2;n++) if(___________________________) flag=0; return(flag); } 【题目3】读程序,验证结果。 #include voidmain() { inti=2,p; p=f(i,i+=1); printf("%d\n",p); } intf(inta,intb) { intc; if(a>b) c=1; elseif(a==b) c=0; else c=-1; return(c); } ①将程序中第4行语句: p=f(i,i+=1);改为以下语句,比较程序结果: p=f(i+=1,i); ②实践说明,函数的参数求值顺序是: ________________________ 【题目4】编程在主函数中输入和输出字符串,在子函数中实现一个字符串按反序存放。 【题目5】用子函数计算4名学生的平均分。 标注“error”处有错误,请改正。 #include #defineN4 floataverage(floatarray[])/*注意数据类型的一致*/ { inti;floataver,sum=0; for(i=0;i sum+=array[i]; aver=sum/N; return(aver); } voidmain() { floatscore[N],aver; inti; printf("\ninput%dscores: \n",N); for(i=0;i scanf("%f",&score[i]); aver=average(score[N]);/*error*/ printf("\naveragescoreis%5.2f\n",aver); } 【题目6】改正标注“error”语句行的错误,理解本程序的功能。 #include voidmain() { inta[][3]={},sum; intfunc();/*函数声明*/ sum=func(a[][3]);/*error*/ printf("\nsum=%d\n",sum); } intfunc(inta[][])/*error*/ { inti,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum+=a[i][j]; returnsum; } 【题目7】在主函数中定义数组A[3][4]、B[4],用子函数对数组A每一行求和,其值放在数组B中,在主函数中输出数组B的值。 【题目8】输入两个正整数,求其中最大公约数和最小公倍数。 将程序补充完整。 #include intfun1(x,y) { inttemp; if(x { temp=x; x=y; y=temp; } while(y! =0) { temp=x%y; x=y; y=temp; } returnx; } intfun2(x,y) { returnx*y/fun1(x,y); }/*函数的嵌套调用*/ voidmain() { inta,b; printf("请输入两个正整数: \n"); scanf("%d,%d",&a,&b); printf("它们的最大公约数为: %d\n",________________); printf("它们的最小公倍数为: %d\n",________________); } 【题目9】阅读以下程序,若输入为ABCDE#时,写出程序的执行结果。 #include"stdio.h" voidreverse() { charch; ch=getchar(); if(ch=='#') printf("%c",ch); else { reverse(); printf("%c",ch); } } voidmain() { reverse(); printf("\n"); } 【题目10】编程计算猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,只剩下一个桃子了,求第一天共摘了多少桃子? 【题目11】阅读以下程序,该程序中,main函数的局部变量是: _______________,max函数的局部变量是: _______________,全局变量是: _____________,理解它们的使用方式。 #include inta=4,b=6; intmax(inta,intb) { intc; c=a>b? a: b; returnc; } voidmain() { inta=9; printf("%d\n",max(a,b)); } 【题目12】以下是一个求1-10累加和的错误程序,请改正。 #include voidmain() { inti,s; for(i=1;i<=10;i++) s=sum(i); printf("s=%d\t",s); } sum(intj) { intx=0;/*error*/ x+=j; return(x); } 2.选择内容 【题目13】编写一个函数,判断一个整数是不是回文数。 如: 34543是回文数,个位与万位相同,十位与千位相同。 【题目14】在一个数组A中存放100个数据,用子函数判断该数组中那些是素数,并统计该素数的个数,在主函数中输出该素数的个数。 【题目15】用递归法将一个整数转换成字符串。 例如,输入1234,应输出字符串”1234”。 n的位数不确定,可以是任意的整数。 请在注释行中添加注释,使程序易于理解。 #include voidconvert(intn) { inti; if((i=n/10)! =0)/*__________________________________*/ convert(i); putchar(n%10+'0');/*___________________________________*/ } voidmain() { intnumber; printf("\n输入整数: "); scanf("%d",&number); printf("\n输出字符是: "); if(number<0)/*______________________________________*/ { putchar('-'); number=-number; } convert(number); printf("\n"); } 三、实验结果(用截图说明)7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 7.12 7.13 7.14 7.15 四、调试心得(选作) 实验8常用指针实验 教学班级: _______学号: __________姓名: ___________ 实验日期: ___________实验地点: _________(机房) 实验成绩: ___________
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新版 程序设计 基础 实验 报告