c语言作业资料
更新时间:2024-01-12 01:03:01 阅读量: 教育文库 文档下载
选择作业:
1、输入两个运算量和一个运算符,完成加、减、乘、除、取余运算,输出运算结果。 #include\ main( ) {
int x,y,z; char ch;
printf(\ch=getchar();
printf(\scanf(\switch(ch) {
case '+':z=x+y;printf(\ case '-':z=x-y;printf(\,z);break; case '*':z=x*y;printf(\,z);break; case '/': { if (y==0)
printf(\ else {z=x/y; printf(\ case '%': {if (y==0)
printf(\
else {z=x%y; printf(\
default:printf(\ } } 2.
用公式f=p*w*s*(1-d)计算运输费。要求运费和路程从
# include
printf(\printf(\printf(\if(s>=3000) c=12; else c=s/250; switch( c){
case 0: d=0;break; case 1: d=0.02;break; case 2:
case 3: d=0.05;break;
case 4: case 5: case 6: case 7: d=0.08;break; case 8: case 9: case 10: case 11: d=0.10;break; case 12: d=0.15; break; } f=p*w*s*(1-d); printf(\}
3.区分键盘上的字母、数字、空格和回车字符。 # include
{ char c; printf(\ c = getchar(); if(c==' ' || c=='\\n')
printf(\ else if(c>='0' && c <= '9')
printf(\
else if(c>='a' && c <= 'z' ) printf(\大写 letter.\\n\ else if(c>='A' && c <= 'Z')
printf(\小写 letter.\\n\ else
printf(\}
实验三
一、编程,输入任意三个数n1,n2,n3,求其中最大的一个数。 输入输出示例: input n1,n2,n3: 2 10.5 max=10.50 源程序: #include
{float n1,n2,n3,max;
printf(\scanf(\max=n1;
if(max printf(\} 运行结果: please input n1,n2,n3:9 10 3 8 the max is:10.0 Press any key to continue 二、编程,输入x,计算并输出下列分段函数f(x)的值(保留2位小数)。 x x<1 y= 2x-1 1<=x<10 3x-1 1 x>=10 输入输出示例: input x: -2.5 f(-2.500000)=-2.5 源程序: #include {float x,y; printf(\scanf(\if(x<1) y=x; else if(x>=1&&x<10) y=2*x-1; else y=3*x-1; printf(\} 运行结果; 第一次运行: please input x:0.5 f(0.5)=0.5 Press any key to continue 第二次运行; please input x:8 f(8.0)=15.0 Press any key to continue 第三次运行: please input x:10 f(10.0)=29.0 Press any key to continue 三、编程,把百分制成绩转换成5级记分制,要求用switch语句。 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下:E 输入输出示例: input Score: 86 86的等级为B 源程序: #include printf(\scanf(\y=(int)(score/10); switch(y) {case 0: case 1: case 2: case 3: case 4: case 5: printf(\的等级为E\\n\,score); break; case 6: printf(\的等级为D\\n\,score); break; case 7: printf(\的等级为C\\n\,score); break; case 8: printf(\的等级为B\\n\,score); break; case 9: case 10: printf(\的等级为A\\n\,score); break;} } 第一次运行结果: please input score:100 A Press any key to continue 第二次运行结果: please input score:86 86.0的等级为B Press any key to continue 第三次运行结果: please input score:50 50的等级为E Press any key to continue 四、编程,输入2005年的任一个月,输出这个月的天数,要求使用switch语句。 输入输出示例: Input month of 2005: 10 2005年10月有31天 源程序: #include void main( ) {int month; printf(\scanf(\switch(month) {case 1:case 3:case 5:case 7: case 8:case 10:case 12: printf(\年%d月有31天\\n\case 2: printf(\年%d月有28天\\n\case 4:case 6:case 9:case 11: printf(\年%d月有30天\\n\default: } printf(\ } 运行结果: please input a month;1 2005年1月有31天 Press any key to continue 五、改错,对2个整数进行乘、除和求余运算。 源程序(有错误的程序) #include prnitf(“输入x 运算符 y:”); scanf(“%d%c%d”,&x,&sign,&y); if(sign==’*’) printf(“%d * %d = %d\\n”,x,y,x*y); else if(sign==’/’) printf(“%d / %d = %d\\n”,x,y,x/y); else if(sign==’%’) printf(“%d %% %d = %d\\n”,x,y,x%y); else printf(“运算符输入错误”); } 实验四: 1.调试示例:输入2个正整数m,n,输出它们的最小公倍数和最大公约数。 修改后的程序:#include printf(\:\\n\ while(scanf(\ || n<0); j=m; while(j%n!=0) j=j+m; k=(m*n)/j; printf(\最小公倍数是:%d\\n最大公约数是:%d\\n\} 运行结果: input m n:3 6 最小公倍数是:6 最大公约数是:3 2.编程,输入一批整数,先求出其中的偶数和及奇数和,然后输出偶数和与奇数和的差. 输入输出示例: 输入一批整数:10 11 20 33 Ctrl+Z sub=-14 源程序: #include int x,sum1=0,sum2=0,sub=0; printf(\请输入一批整数:\\n\ while(scanf(\ { if (x%2==0) sum1+=x; else sum2+=x; sub=sum1-sum2; } printf(\} 运行结果为: 请输入一批整数: 1 2 3 4 Ctrl+Z sum1=6 sum2=4 sub=2 3.编程,输入1个正实数eps,计算并输出下式的值,直到最后一项的绝对值小于eps 源程序如下; #include { float f=0,eps,t=1.0; int i=1,sign=1; printf(\请输入正实数eps的值:\scanf(\输入一个正实数%f\while(abs(t)>eps) { t=1.0/i*sign; f+=t; sign=-sign; i+=4; } printf(\} 运行结果为: 请输入正实数eps的值:0.000001 f=0.878576 4 编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3. 源程序如下: #include int i=0,n,sum=0; scanf(\ if(n<0) n=-n; while (n>0) { sum+=n; n=n/10; i++; } printf(\位数=%d,各位数之和=%d\\n\ } 运行结果: 134 位数=3;各位数之和=8 5、改错,输入2个整数,分别将其逆向输出。 输入输出示例: 修改后的程序:#include int fun(int n) { int m,y; y=0; if(n>0) m=n; else m=-n; while (m>0) { y=y*10+m; m=m/10; } if(n>=0) return y; else return -y; } void main() { int n,m; scanf(\%d\ printf(\的逆向是%d\\t\ printf(\的逆向是%d\\t\} 运行结果: 234 -234 234的逆向是432 -234的逆向是-432 6调试示例,输入正整数的个数n,再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数 修改后的程序: #include printf(\输入正整数的个数n:\ scanf(\ printf(\输入%d个正整数\\n\ k=n; for(j=0;j if(i>n) printf(\是一个素数!\\n\ else printf(\不是一个素数!\\n\ } } 运行结果: 输入正整数的个数n:3 输入3个正整数:2 5 9 2不是一个素数; 5是一个素数; 9不是一个素数; 7.编程,输出101-115之间不能被3整除的数,每行输出5个。要求使用continue语句。 源程序: #include int n,count=0; for(n=101;n<=115;n++) if(n%3==0) continue; else { printf(\ \ count++; if(count%5==0) printf(\ } } 运行结果: 101 103 104 106 107 109 110 112 113 115 8.编程,猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上想再吃的时候,见只剩下一个桃子了。求第1天共摘了多少桃子 源程序: #include { int day,total,sum=1; for(day=1;day<=9;day++) { total=(sum+1)*2; sum=total; } printf(\} 运行结果:1534 方法二 #include int day,x; day=9; x=1; while(day>0) {x=(x+1)*2; day--; } printf(\ } 9.在100-1500内找出所有的亲密数对,并输出每对亲密数对。 输入输出示例: (220,284)(284,220)(1184,1210)(1210,1184) 源程序: # include for (a=100;a<=1500;a++) { b=yun(a); if (b>=100&&b<=1500) { if ((yun(b)==a)&&(a!=b)) {printf(\ } } } int yun(int x) { int i,sum=0; for(i=1;i 运行结果: ( 220 284) ( 284 220) ( 1184 1210) ( 1210 1184) Press any key to continue 函数作业: 4.4,写一个将整数转换成字符串的函数。 源程序: #include for(j=0;j<=i/2;j++) {temp=c[j];c[j]=c[i-j-1];c[i-j-1]=temp;} for(j=0;j 运行结果: 123 1 2 3 Press any key to continue 4.5写出计算Ackermann函数Ack(m,n)的递归计算函数,对于m>=0,n>=0, Ack(m,n)定义为 Ack(0,n)=n+1 Ack(m,0)= Ack(m-1,1) Ack(m,n)= Ack(m-1,Ack(m,n-1)), m>0, n>0 源程序: #include if(m==0) return (n+1); else if(n==0) return ack(m-1,1); else return ack(m-1,ack(m,n-1)); } void main() {int m,n; printf(\scanf(\%d\ printf(\ 4.6分别写出Hermite多项式Hn(x)之值的递推和递归函数,Hn(x)定义如下: H0(x)=1 H1(x)=2*x; Hn(x)=2*x* Hn-1(x)-2*(n-1) Hn-2(x), x>1 源程序: #include if(n==0) return 1; if(n==1) return (2*x); if(x>1) return (2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x)); } void main() {int n,x; printf(\scanf(\%d\ printf(\ 运行结果: input n,x:5 5 hermite(5,5)=80600 Press any key to continue 实验五: 1.某数列为K(n)的定义为:求该数列的第六项k(6)。 k(n)=1 n=1 k(n-1)×2 n为偶数 k(n-1)×3 n为奇数 源程序: #include else if(n%2==0) m=k(n-1)*2; else m=k(n-1)*3; return (m); } void main( ) {int i; int j; printf(\scanf(\ if(i<=0)printf(\else {j=k(i); printf(\} 2. 写出判断素数的函数,在主函数中输入一序列整数(ctrl+z结束),输出是否是素数的信息。 源程序: #include while(scanf(\{x=p(n); if(x==1) {printf(\if(t==0) printf(\} } int p(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) return 0; return 1; } 3. 写两个函数,求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。 源程序: #include if(m r=m%n; while(r!=0) {m=n; n=r; r=m%n; } return n; } } int bei( int m,int n ) { return m * n/ gcd( m, n) ; } void main() { int a,b; printf(\输入两个数\\n\scanf(\ int c=gcd(a,b); int d=bei(a,b); printf(\最大公约数为:%d\\t\\n最小公倍数为:%d\\n\ } 4.输出Fibonacci序列前20个数,用函数来实现. f(n)=f(n-1)+f(n-2) 当 n>2 f(2)=f(1)=1 当 n=1或n=2 源程序: #include int f(int n) { int m; if(n==1||n==2) m=1; else m=f(n-2)+f(n-1); return m; } void main( ) {int i; int n; printf(\scanf(\ if(n<=0) printf(\else {for (i=1;i<=n;i++) printf(\} } 数组实验: 1编程:输入一个正整数n(0 int i,j,n,x,a[10],t; printf(\输入数据的个数n:\ scanf(\ printf(\输入%d个整数:\ for(i=0;i scanf(\ printf(\输入要插入的整数:\ scanf(\ for(i=0;i { if(x>a[i]) continue; j=n-1; while(j>=i) { a[j+1]=a[j]; j--; } a[i]=x; break; } if(i==n) a[n]=x; for(i=0;i printf(\putchar('\\n'); } 2.编程,输入1个正整数n(1 { int i,n,index,temp,a[10],min,max; printf(\请输入整数个数n(n<=10):\ scanf(\ printf(\请输入%d个整数:\\n\ for(i=0;i scanf(\ min=max=a[0]; for(i=0;i if(a[i] temp =a[0];a[0]=a[index];a[index]=temp; for(i=1;i {if(a[i]>max) {max=a[i];index=i;}}temp=a[n-1];a[n-1]=a[index];a[index]=temp; printf(\交换后的%个整数为:\ for(i=0;i printf(\ } 运行结果: 请输入整数个数n(n<=10):5 请输入5个整数: 2 1 5 10 9 交换后的个整数为:1 2 5 9 10 Press any key to continue 3.编程,输入1个正整数n(1 方法一:选择排序法 源程序: #include {int i,index,temp,n,j,a[10]; printf(\scanf(\ printf(\for(i=0;i for(j=i+1;j<=n-1;j++) if(abs(a[j]) temp=a[i];a[i]=a[index];a[index]=temp;} printf(\for(i=0;i 方法二:冒泡法 源程序: #include #include void main() {int i,temp,n,j,a[10]; printf(\scanf(\ printf(\for(i=0;i for(i=0;i<=n-j-2;i++) if(abs(a[i])>abs(a[i+1])) {temp=a[i];a[i]=a[i+1];a[i+1]=temp;} } printf(\for(i=0;i 运行结果: Input a number please: 10 Input 10 numbers:-11 2 8 5 -3 -16 9 7 6 10 exchanged 10 numbers: 2 -3 5 6 7 8 9 10 -11 -16 Press any key to continue 4.编程,平面上有n个点,求所有各点之间的最长距离。要求定义和调用函数计算距离 源程序: #include float fun(float x0,float x1,float y0,float y1) {float y; y=sqrt(pow((x0-x1),2)+pow((y0-y1),2)); return y;} void main() {float x[5],y[5]; int i,j; float max=0.0,t=0.0; printf(\printf(\横坐标:\for(i=0;i<5;i++) scanf(\printf(\纵坐标:\for(i=0;i<5;i++) scanf(\for(i=0;i<4;i++) {for(j=i;j<4;j++) {t=fun(x[i],x[j+1],y[i],y[j+1]); if(max printf(\} 输入点数:5 输入5个点的坐标: 1 2.5 3.2 3.7 6.5 2.3 5.1 0.6 3.6 1.2 最长距离是5.50 方法二: #include #include { float a[20][2],b[20][20],x,y; int n,i,j,row,cel; printf(\输入点数:\ printf(\输入%d点的坐标:\ for (i=0;i scanf(\ printf(\ for (i=0;i printf(\ for (i=0;i printf(\ printf(\ row=0;cel=0; for (i=0;i<5;i++) for (j=0;j<5;j++) if(b[i][j]>b[row][cel]) {row=i;cel=j;} printf(\第%d点到第%d点距离最大是%.2f\\n\ } 5.编程,输入一个n行m列(n<=4,m<=4)的数组,先以n行m列的格式输出该数组,然后找出该数组中值最小的元素,输出该元素及其行下标和列下标。 程序如下: #include void main() {int n,m,i,j,a[4][4],min,max,min_row,min_col,max_row,max_col; printf(\输入行数\scanf(\printf(\输入列数\scanf(\for(i=0;i<=n-1;i++) {for(j=0;j<=m-1;j++) scanf(\for(i=0;i<=n-1;i++) {for(j=0;j<=m-1;j++) printf(\printf(\min_row=min_col=0; min=a[0][0]; for(i=0;i<=n-1;i++) for(j=0;j<=m-1;j++) if(a[i][j] {min=a[i][j]; min_row=i; min_col=j;} max=a[0][0]; for(i=0;i<=n-1;i++) for(j=0;j<=m-1;j++) {if(a[i][j]>max) max=a[i][j]; max_row=i; max_col=j;} printf(\最大值是:a[%d][%d]=%d,最小值是:a[%d][ %d]=%d\\n\,max_row,max_col,max,min_row,min_col,min);} 运行结果 输入行数3 输入列数2 1 2 3 4 5 6 1 2 3 4 5 6 最大值是:a[2][1]=6,最小值是:a[0][ 0]=1 Press any key to continue 6.编程输出以下的杨辉三角形(输出前10行) 源程序: #include {int i,j,a[10][10]; for(i=0;i<10;i++) {a[i][0]=1; a[i][i]=1;} for(i=2;i<10;i++) for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) {for(j=0;j<=i;j++) printf(\printf(\} 运行结果: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 9 36 84 126 126 84 36 Press any key to continue 1 9 1 指针作业: 1比较n(n<10)个字符串排序输出 源程序: #include void sort(char array[][20],int n); void main() {char str[10][20]; int i,j,k,n; printf(\scanf(\ printf(\for(i=0;i<=n;i++) gets(str[i]); sort(str,n); for(i=0;i<=n;i++) puts(str[i]);} void sort(char array[][20],int n) {char temp[20]; int i,j,k; for(i=1;i<=n-1;i++) {k=i; for(j=i+1;j<=n;j++) if(strcmp(array[k],array[j])>0) k=j; if(k!=i) {strcpy(temp,array[i]); strcpy(array[i],array[k]); strcpy(array[k],temp);} } } 运行结果: input n(n<=10):5 input 5 string: girl boy student teacher docter boy docter girl student teacher Press any key to continue 方法二: 源程序: #include {char *str[N]={\int i,j,k; char *temp; for(i=0;i for(j=i+1;j temp=str[i];str[i]=str[k];str[k]=temp;} for(i=0;i printf(\} 运行结果: boy doctor girl student teacher Press any key to continue 2 用函数实现对变量的交换。 源程序; #include temp=*p1;*p1=*p2;*p2=temp;} void main() {int a=2,b=5; swap(&a,&b); printf(\运行结果; 5,2Press any key to continue 3,输入n个学生姓名,数学成绩,英语成绩,并按这两门成绩的平均分从小到大输出。 源程序: #include struct student{char name[5];float math,eng;float aver;}; void main() {struct student stu[5],temp; int i,sub,k; float aver=0; for(i=0;i<5;i++) {scanf(\stu[i].aver=(stu[i].math+stu[i].eng)/2.0;} for(i=0;i<4;i++) {sub=i; for(k=i+1;k<5;k++) if(stu[k].aver {printf(\printf(\运行结果; 输入: zs 50 90 ls 60 60 wr 80 80 zh 70 50 qr 65 65 输出: ls60.0 60.0 zh70.0 50.0 qr65.0 65.0 zs50.0 90.0 wr80.0 80.0 Press any key to continue
正在阅读:
c语言作业资料01-12
小学生家教故事作文04-01
2014作业许可考试试题--A04-08
2019年北京师范大学法学院715法学综合五之民事诉讼法考研强化五套模拟题04-30
2019学年七年级英语上册Unit6LetsGoLesson31LetsGototheBookstore练习新版冀教版11-05
关于花的作文200字【整合】06-14
第一章有理数复习学案02-12
美丽的塔山作文400字06-12
航空航天工程专实习报告04-15
我的小狗作文600字07-14
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 作业
- 语言
- 资料
- 复旦大学学生违纪处分条例
- 网上书店管理系统(毕业论文) - 图文
- 刻绘大师使用教程
- 肯定句变疑问句练习题
- 施工组织设计2013.1.20 - 图文
- 个人博客网站设计毕业论文 - 图文
- 2013最新人教版新目标八年级英语上课文翻译一到十单元
- 抽样技术与应用期末复习题
- 山东省2017年上半年企业法律顾问考试:诉讼时效与期间考试试题
- 塑料成型工艺与模具设计复习题
- 集成电路RC正弦波振荡器
- 一路花香
- 大物A(二)综合训练
- 浅谈物理教学在高中新课程改革下的多种学习方式-最新教育资料
- 研究性学习课题结题报告
- 2018年安徽省中考英语试题及答案解析(Word版)
- 计算机网络三级理论题(1)
- 网络安全实验指导书 - 图文
- 网络编程
- 房产测量实施细则