计算机作业.docx
- 文档编号:6627455
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:30
- 大小:27.10KB
计算机作业.docx
《计算机作业.docx》由会员分享,可在线阅读,更多相关《计算机作业.docx(30页珍藏版)》请在冰豆网上搜索。
计算机作业
《程序设计基础C》
实
验
报
告
教学班级:
2学号:
姓名:
刘易培
课程教师:
张建勋实验辅导教师:
张建勋
重庆理工大学计算机学院
2014年2月
实验5循环程序设计
教学班级:
2学号:
姓名刘易培
实验日期:
__2014-04-09__实验地点:
___四教312___(机房)
实验成绩:
___________
一、实验目的
(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);
}
1请改错,并运行程序。
(i<101改为i<=101)
②分别用do……while语句和while语句改写以上程序。
#include
voidmain()
{inti=1,t=1,s=0;/*t标识正负符号*/
do/*error*/
{s+=i*t;
t=-t;
i=i+2;
}while(i<=101);
printf("s=%d\n",s);
}
#include
voidmain()
{inti=1,t=1,s=0;/*t标识正负符号*/
while(i<=101)/*error*/
{s+=i*t;
t=-t;
i=i+2;
}
printf("s=%d\n",s);
}
题目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<10;i++)
{j=i*10+3;
if(j%3!
=0)
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&&j!
=k&&i!
=k)/*确保i、j、k三位互不相同*/
{
printf("%6d",i*100+j*10+k);
count++;
if(count%10==0)
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
三、实验结果(用截图说明)
四、调试心得(选作)
实验6数组实验
教学班级:
2学号:
姓名刘易培
实验日期:
__2014-04-09__实验地点:
___四教312___(机房)
实验成绩:
___________
一、实验目的
(1)理解数组的特点及其与普通变量的区别及特点;
(2)掌握一维数组的定义、赋值和输入输出的方法;
(3)掌握二维数组的定义、赋值和输入输出的方法;
(4)掌握字符数组和字符串函数的使用;
(5)掌握与一维数组和字符数组有关的程序与算法;
(6)理解与二维数组有关的程序与算法。
二、实验任务
1.基本内容
【题目1】读程序,写结果。
(18)
#include
voidmain()
{
inti,s=0,a[10]={1,2,3,4,5,6,7,8,9,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",&a[i]); for(i=0;i { if(i%4==0) printf("\n"); printf("%11d",a[i]); } printf("\n"); } 【题目3】用简单选择法对10个整数排序,将程序补充完整。 #defineN10 #include voidmain() { inti,j,min,temp,a[N]={1,5,4,3,7,0,9,8,2,6}; for(i=0;i { min=i; for(j=i+1;j<10;j++) if(a[min]>a[j]) min=j; if(min! =i) {temp=a[i];a[i]=a[min];a[min]=temp;} } printf("\n排序结果为: \n"); for(i=0;i printf("%5d",a[i]); printf("\n"); } 【题目4】下面的程序用冒泡法对10个数排序(从小到大),将程序补充完整。 #defineN10 #include voidmain() { inti,j,min,temp,a[N]={1,5,4,3,7,0,9,8,2,6}; for(i=0;i for(j=0;j if(a[j]>a[j+1]) { 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个数的平均值。 #include intmain() { inta[20],i,j=0; for(i=0;i<20;i++) scanf("%d",&a[i]); for(i=0;i<20;i++) { j=j+a[i]; } j=j/20; printf("%d\n",j); } 【题目6】编程: 任意输入10个数,判断该哪些是素数,并输出这些素数。 【题目7】以下程序是求二维数组中的最小数及其下标(设最小数是唯一的),请填空完成程序,并上机验证。 #include voidmain() { inti,j,row,col,min; inta[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}}; min=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(min>a[i][j]) { 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; a[i][i]=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"); } 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("请输入一串字符: "); gets(ch);/*提示: 使用字符串输入函数*/ for(i=0;i if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z') count++; printf("字母个数为: %d\n",count); } 【题目12】编程: 输入一串字符,要求逆序输出。 #include"stdio.h" voidreverse() { charch; ch=getchar(); if(ch=='#') printf("%c",ch); else { reverse(); printf("%c",ch); } } voidmain() { reverse(); printf("\n"); } 2.选择内容 【题目13】将两个字符串连接起来,不使用strcat字符函数 #include #defineN80 voidmain() { chars1[2*N],s2[N]; inti=0,j=0; printf("\n请输入两个字符串,以空格或回车键作字符串结束标志: \n"); scanf("%s",&s1); scanf("%s",&s2); while(s1[i]! ='\0') i++; while(s2[j]! =0) s1[i++]=s2[j++]; s1[i]='\0'; printf("\n连接后的两个字符串为: \n%s\n",s1); } 【题目14】在字符串str中查找字符ch首次出现的位置,若str字符串中不包含字符ch,则输出0。 【题目15】有4位学生,考4门功课。 求出每位学生的总分和平均分,及所有学生每门功课平均分和所有功课的平均分。 #include intmain() { inta[4][4]; ints[4]={0,0,0,0}; intb[4]={0,0,0,0}; intc[4]; intd=0,i,j; printf("请分别输入四个学生的四科成绩: "); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<4;i++) { for(j=0;j<4;j++) { s[i]=s[i]+a[i][j]; } } for(i=0;i<4;i++) { for(j=0;j<4;j++) { b[i]=b[i]+a[j][i]; } c[i]=b[i]/4; } for(i=0;i<4;i++) d=d+s[i]; d=d/4; printf("每位学生的总分和平均分,所有学生每门功课平均分分别为: "); for(i=0;i<4;i++) {printf("%d",s[i]);} printf("\n"); for(i=0;i<4;i++) {printf("%d",s[i]/4); } printf("\n"); for(i=0;i<4;i++) { printf("%d",c[i]); } printf("\n"); printf("所有功课的平均分: "); printf("%d\n",d); } 【题目16】找出一个二维数组的”鞍点”,即该位置上的元素在该行上最大,在该列上最小,如无”鞍点”,则给出提示。 三、实验结果(用截图说明) 15题图: 四、调试心得(选作) 实验7函数实验 教学班级: 2学号: 姓名刘易培 实验日期: __2014-04-09__实验地点: ___四教312___(机房) 实验成绩: ___________ 一、实验目的 (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); m=max(a,b); m=max(m,c); printf("最大值是: %d\n",m); } intmax(intx,inty)/*函数定义*/ { intz; z=(x>y)? x: y;/*如果x>y为真,那么把x的值赋给Z,否则把Y的值赋给Z。 */ returnz; } 【题目2】程序填空: 子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。 #include voidmain() { intnumber; printf("请输入一个正整数: \n"); scanf("%d",&number); if(prime(number)==0) 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(number%n! =0) 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); }(0) ①将程序中第4行语句: p=f(i,i+=1);改为以下语句,比较程序结果: (1) p=f(i+=1,i); ②实践说明,函数的参数求值顺序是: ____(i+=1)先调用i的值,再执行i=i+1____________________ 【题目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*/(改为aver=average(score)) printf("\naveragescoreis%5.2f\n",aver); } 【题目6】改正标注“error”语句行的错误,理解本程序的功能。 #include voidmain() { inta[][3]={0,2,4,6,8,10,12,14,16},sum; intfunc();/*函数声明*/ sum=func(a[][3]);/*error*/(改为sum=func(a[0]))数组名作为实参传递,传递的是数组起始地址) printf("\nsum=%d\n",sum); } intfunc(inta[][])/*error*/(intfunc(inta[][3])) { 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#时,写出程序的执行结果。 (#EDCBA) #include"stdio.h" voidreverse() { charch; ch=getchar(); if(ch=='#') printf("%c",ch); else { reverse(); printf("%c",ch); } } voidmain() { reverse(); printf("\n"); } 【题目10】编程计算猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,只剩下一个桃子了,求第一天共摘了多少桃子? 【题目11】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 作业