




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大学辅助 小安图书 读好书 找小安太原理工大学13级c语言实验指导书参考答案实验一 顺序1-3.温度*/编写程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C)。 C = 5/9(F 32)#includevoid main()float c,f;scanf(%f,&f);c=5.0/9.0*(f-32);printf(%5.2fn,c);/*1-4.三角形面积*/编写程序,从键盘输入一个三角形的三条边长a、b、c(要求任何两条边的边长之和均大于第三条边的边长),求该三角形的面积。求三角形的面积公式是: 其中: #include stdio.h#include math.hvoid main()float a,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2.0*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%fn,area);/*1-5两数合并*/编写程序,将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上, b数的十位和个位数依次放在c数的个位和百位上。例如,当a45,b=12,运行结果为:c=5241。#include void main()int a,b,c;printf(Input a,b :);scanf(%d,%d,&a,&b);c=(b/10*1);c+=(a/10*10);c+=(b%10*100);c+=(a%10*1000);printf(The result is:%dn,c);实验二 选择必做题2.1编一程序,使用单分支的if语句形式,求a,b,c三个整数的中间值。例如:a、b、c的值分别为3、4、5,则输出4。#include void main() int a,b,c,t; printf(Input a,b,c:); scanf(%d,%d,%d,&a,&b,&c); if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; printf(中间数 = %dn, b);2.2有一函数 x (x1) y =2x 1 (1x10)3x 11 (x10)用scanf函数输入x的值(分别取x1、110、10三种情况),求y值。#include void main() int x,y; printf(Input x:); scanf(%d,&x); if(x1)y=x; else if(x10) y=2*x-1; else y=3*x-11; printf(x= %d,y=%dn, x,y);2.3编写程序,输入一位学生的生日(年:y0、月:m0、日:d0)数据,再输入当前的日期(年:y1、月:m1、日:d1)数据,计算并输出该学生的实足年龄。#include void main() int y0,m0,d0,y1,m1,d1,nl; printf(Input 生日(年,月,日):); scanf(%d,%d,%d,&y0,&m0,&d0); printf(Input 当前日期(年,月,日):); scanf(%d,%d,%d,&y1,&m1,&d1); if(m1m0|m1= =m0&d1=d0)nl=y1-y0; else nl=y1-y0-1; printf(年龄 = %dn, nl);2.4编写程序,定义四个字符变量c1,c2,c3和c4,分别用getchar()函数任意输入四个字母,分别输出其中的最大值和最小值。#include void main() char c1,c2,c3,c4,max,min; printf(Input 四个字符 :); c1=getchar();c2=getchar();c3=getchar();c4=getchar(); max=min=c1; if(c2max)max=c2; if(c3max)max=c3; if(c4max)max=c4; min=c2min?c2:min; min=c3min?c3:min; min=c4min?c4:min; printf(max=%c,min=%cn,max,min);2.5设整型变量a的值为正数,请将以下C源程序中的if语句形式改写成switch语句形式。#include main() int a; printf(”a = ”);scanf(”%d”, &a); if(a30) m = 1; else if(a 40) m = 2; else if(a 50) m = 3;else if(a 60) m = 4;else m = 6;printf(”m = %dn”, m); #include void main() int a,t,m; printf(Input a=); scanf(%d,&a); if(a0) t=a/10; switch(t) case 0:case 1:case 2:m=1;break; case 3:m=2;break; case 4:m=3;break; case 5:m=4;break; default:m=6; printf(m=%dn,m); else printf(a为非正数n);实验三 循环必做题3.1编写程序,计算并输出正整数n的所有因子(1和n除外)之和。#include void main() int n,i,s=0,m=0; printf(Input n:); scanf(%d,&n); for(i=2;in;i+) if(n%i= =0) printf(%5d,i);s+=i;m+; if(m%10= =0)printf(n); printf(ns= %dn, s);3.2编写程序,利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。迭代步骤如下: ()取x1初值为0.0; ()x0=x1,把x1的值赋给x0; ()x1=cos(x0),求出一个新的x1; ()若x0-x1的绝对值小于0.000001,执行步骤(),否则执行步骤(); ()所求x1就是方程cos(x)-x=0的一个实根。#include #include void main() double x0,x1=0.0; do x0=x1; x1=cos(x0); while(fabs(x1-x0)=1e-6); printf(nx1= %.2fn, x1);3.3编写程序,输入一行字符,分别统计出其中的大写字母、小写字母、空格和数字的个数。提示:用以下循环格式处理输入的一行字符。 while(c = getchar()!=n) /* 若输入的c不是回车符时继续 */ 循环体或者:c = getchar();while(c !=n) /* 若c不是回车符时继续 */ 循环体 c = getchar(); #include #include void main() char c; int n1,n2,n3,n4; n1=n2=n3=n4=0; printf(请输入一行字符,以换行结束:); while(c=getchar()!=n) if(isupper(c)n1+; else if(islower(c)n2+; else if(isdigit(c)n3+; else if( c= )n4+; printf(n大写=:%d,小写: %d,数字: %d,空格: %d,n, n1,n2,n3,n4);3.4编写程序,在屏幕上输出杨辉三角形。 11 11 2 11 3 3 11 4 6 4 11 5 10 10 1 #include stdio.h#define N 20void main()int i,j,arrayNN=0,n;printf(请输入n行:n);scanf(%d,&n);for(i=0;in;i+)arrayi0=1;arrayii=1;for(i=2;in;i+) for(j=1;ji;j+) arrayij=arrayi-1j-1+arrayi-1j;printf(杨辉三角形:n);for(i=0;in;i+) for(j=0;j=i;j+) printf(%4d ,arrayij); printf(n);printf(n);选做题3.1#include#includevoid main() float x,t,sum=1.0,i=1.0,m=1.0; int s=1; printf(请输入x:); scanf(%f,&x); t=x; while(fabs(t)1e-6) sum+=t; s=-s; i+; m*=i; t=s*1.0*pow(x,i)/m; printf(nx=%f,f(x)=%fn, x,sum);3.2#include #include main() int i,m,n,k=0,j; double s; printf(请输入正整数m,n(mn):); scanf(%d,%d,&m,&n); for(i=m+1;in;i+) s=sqrt(i); for(j=2;js)printf(%6d,i);k+; if(k%8=0)printf(n); printf(n);3.3#include void main() int i,m=2,j,n; double s=0.0,k=1.0,t; printf(请输入正整数n:); scanf(%d,&n); for(i=1;i=n;i+) t=m/k; s+=t; j=m; m=m+k; k=j; printf(n和为:%lfn,s); 3.4#include stdio.hvoid main()int i;double h=100.0,h1,s=100.0;for(i=2;i=10;i+) h1=h/2; h=h1; s+=2*h; printf(s=%lf,h=%lfn,s,h);实验四 数组必做题4.1编写程序,将3n之间的所有非素数存入数组array中,然后输出该数组元素。例如:若n=20,则输出 4,6,8,9,10,12,14,15,16,18,20。#include #include #define N 20void main()int i,arrayN,j,m,k=0;for(i=3;i=N;i+) m=sqrt(i); for(j=2;j=m;j+) if(i%j=0)arrayk+=i;break; for(i=0;i=k-1;i+) printf(%d ,arrayi);printf(n); 4.2 编写程序,将字符数组str中的字符串逆置后输出。例如:若str字符串为“This is a C programe.”,则输出为“.emargorp C a si sihT”。#include #include #define N 80void main()int i,k;char strN,t;gets(str);k=strlen(str);for(i=0;ik/2;i+)t=stri;stri=strk-1-i;strk-1-i=t;printf(n%sn,str); 4.3从键盘输入10个整数,选择一种排序算法,将这些数按从大到小的顺序排列输出。#include#define N 10void main()int i,j,arrayN,m,t;printf(请输入10个整数:);for(i=0;iN;i+) scanf(%d,&arrayi);for(i=0;iN-1;i+) m=i; for(j=i+1;jarraym)m=j; if(m!=i) t=arraym;arraym=arrayi;arrayi=t; for(i=0;iN;i+) printf(%d ,arrayi);printf(n); 4.4计算55矩阵的主对角线元素和此对角线元素之和。若有下列矩阵,则输出的值应该是130。1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 25#include #define N 5void main()int i,j,arrayNN,s=0;printf(请输入55个整数:);for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&arrayij);for(i=0;iN;i+) for(j=0;jN;j+) if(i=j|i+j=N-1)s+=arrayij; if(i=j&i+j=N-1)s+=arrayij;for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d ,arrayij); printf(n);printf(s=%dn,s);选做题4.1#include stdio.h#include string.h#define M 5void main()int i,j,aM,k,x;char strM80,tM;printf(请输入5个字符串:);for(i=0;iM;i+)gets(stri);ai=strlen(stri);for(i=0;iM-1;i+)k=i; for(j=i+1;jak)k=j; if(k!=i)strcpy(t,stri);strcpy(stri,strk);strcpy(strk,t); x=ak;ak=ai;ai=x; for(i=0;iM;i+) puts(stri); printf(n);4.2#include stdio.h#include string.h#define M 80void main()int i,j=0,k=0,a;char sM,tM,wM;printf(请输入1个字符串:n);gets(s);a=strlen(s);for(i=0;i=0&si=9)tj+=si; else wk+=si;tj=0;wk=0;strcat(t,w);strcpy(s,t); puts(s); printf(n);4.3#include stdio.h#define N 6void main()int i,arrayN,t,k;printf(请输入N个整数:n);for(i=0;iN;i+) scanf(%d,&arrayi);k=N%2?N/2+1:N/2;for(i=0;iN/2;i+)t=arrayi;arrayi=arrayk+i;arrayk+i=t; for(i=0;iN;i+) printf(%d ,arrayi);printf(n); 4.4#include stdio.h#define N 4void main()int i,j,arrayNN,t;printf(请输入44个整数:n);for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&arrayij);printf(移动前矩阵:n);for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d ,arrayij); printf(n);printf(n);for(i=0;iN;i+) for(j=0;j2;j+) if(j=0)t=arrayij;arrayij=arrayi2-j;arrayi2-j=t; else t=arrayij;arrayij=arrayi4-j;arrayi4-j=t;printf(移动后矩阵:n);for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d ,arrayij); printf(n);printf(n);实验五 函数必做题5.1编写一个判断素数的函数 int Isprime(int m)。在主函数中输入一个整数n,然后调用Isprime,如果n是素数,则输出:n is prime! 否则输出:n isnt prime!#include void main() int n; printf(请输入正整数n:n); scanf(%d,&n); if(Isprime(n)printf(%d is prime!n,n); else printf(%d isnt prime!n,n); printf(n); int Isprime(int m)int j;for(j=2;jm/2)return 1;else return 0;5.2编写两个函数,分别求两个整数的最小公倍数和最大公约数并返回给主函数,两个整数由主函数输入。#include #include int Lowest_common_multiple(int m,int n,int h);int Greatest_common_divisor(int m,int n);void main() int m,n,t,p,k; printf(请输入两个正整数m,n:n); scanf(%d,%d,&m,&n); if(mn)t=m;m=n;n=t; k=Greatest_common_divisor(m,n); p=Lowest_common_multiple(m,n,k); printf(最大公约数:%dn ,k); printf(最小公倍数:%dn ,p); printf(n); int Lowest_common_multiple(int m,int n,int h) return m*n/h;int Greatest_common_divisor(int m,int n)int r;while(r=m%n)!=0)m=n;n=r; return n;5.3编一个函数fun(char s),其功能是把字符串中的小写字母转换成大写字母,其它字符不变。#include #include #define N 80void fun(char s);void main()int i,k;char s1N;printf(请输入一个字符串:n);gets(s1);puts(s1);k=strlen(s1);fun(s1);printf(n%sn,s1); void fun(char s)int i;for(i=0;si!=0;i+) if(islower(si)si=si-32;5.4编一函数 void convert(int a3),求33矩阵的转置矩阵。例如,原矩阵是:1 2 34 5 67 8 9则转置后的矩阵是:1 4 72 5 83 6 9#include void convert(int a3);void main()int i,j,array33,s=0;printf(请输入33个整数:n);for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&arrayij);printf(转置前:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d ,arrayij); printf(n);convert(array);printf(转置后:n);for(i=0;i3;i+) for(j=0;j3j+) printf(%4d ,arrayij); printf(n);printf(n);void convert(int a3)int i,j,t;for(i=0;i2;i+) for(j=i+1;j3;j+) t=aij;aij=aji;aji=t;选做题5.1#include #define N 40void Fibonacci(long a);int fun(int t);int aN;main() int t,k; printf(请输入正整数t:n); scanf(%d,&t); Fibonacci(a); k=fun(t); printf(小于%d的最小的一个数:%dn,t,k); int fun(int t)int j;for(j=0;jt)break;return aj;void Fibonacci(long a)int i;a0=a1=1;for(i=2;i=N;i+) ai=ai-2+ai-1;5.2#define N 10#include float averf(float s,int n);main() int n,i; float sN,av; printf(请输入10个数组元素:n); for(i=0;iN;i+) scanf(%f,&si); printf(请输入n:n); scanf(%d,&n); av=averf(s,n); printf(n前%d个数的平均:%fn,n,av); float averf(float s,int n)int j;float sum=0.0,av;for(j=0;jn;j+) sum+=sj;av=sum/n;return av;5.3#include stdio.h#define M 4#define N 4void fun(int xxN,int pp);void main()int i,j,xxMN,ppM*N;printf(请输入44个整数:n);for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&xxij);printf(矩阵:n);for(i=0;iM;i+) for(j=0;jN;j+) printf(%4d ,xxij); printf(n);fun(xx,pp);printf(转换后的一维数组:n);for(i=0;iM*N;i+) printf(%4d ,ppi);printf(n);void fun(int xxN,int pp)int i,j;for(i=0;iM;i+) for(j=0;jN;j+) pp4*i+j=xxij;5.4#include stdio.h#include string.h#define N 80void deletechar(char str,char ch);void main()char strN,ch;printf(请输入一个字符串:n);gets(str);printf(请输入要删除的一个字符:n);ch=getchar();deletechar(str,ch);printf(n%sn,str); void deletechar(char str,char ch)int i,j=0;for(i=0;stri!=0;i+) if(stri!=ch)strj+=stri;strj=0;实验六 指针必做题6.1#include main() int a,b,c,t,*pa=&a,*pb=&b,*pc=&c; printf(Input a,b,c:); scanf(%d,%d,%d,&a,&b,&c); printf(n排序前:%d,%d,%dn,a,b,c); if(*pa*pb)t=*pa;*pa=*pb;*pb=t; if(*pa*pc)t=*pa;*pa=*pc;*pc=t; if(*pb*pc)t=*pb;*pb=*pc;*pc=t; printf(n从小到大排序:%d,%d,%dn,a,b,c);6.2#include stdio.h#include string.h#define N 80void fun(char *s);void main(void)char s1N;printf(n请输入一个字符串:n); gets(s1);fun(s1);printf(n逆置后:%sn,s1); void fun(char *s)int i,k,t;k=strlen(s);for(i=0;ik/2;i+)t=*(s+i);*(s+i)=*(s+k-1-i);*(s+k-1-i)=t;6.4#include stdio.h#include string.h#define N 80void scat(char *s1,char *s2);void main()char s12*N,s2N;printf(请输入第一个字符串:n);gets(s1);printf(请输入第二个字符串:n);gets(s2);scat(s1,s2);printf(输出连接后的字符串:n);puts(s1);printf(n); void scat(char *s1,char *s2)int i,k,m;k=strlen(s1);m=strlen(s2);for(i=0;s2i!=0;i+) s1k+i=s2i;s1k+m=0;6.5#define N 10#include float averf(int x,int n,int *max,int *min);main() int i,xN,max,min; float av; printf(请输入10个数组元素:n); for(i=0;iN;i+) scanf(%d,&xi); av=averf(x,N,&max,&min); printf(n10个数的平均:%f,最大:%d,最小:%dn,av,max,min); float averf(int x,int n,int *max,int *min)int j;float sum=x0,av;*max=*min=x0;for(j=1;j*max)*max=xj; if(xj*min)*min=xj; av=sum/n;return av;选做题6.1#include stdio.h#include string.h#define N 80int fun(char *s1,char *s2);void main()char s1N,s2N;printf(n请输入第一个字符串:n); gets(s1);printf(n请输入子字符串:n); gets(s2);if(fun(s1,s2) printf(n%s字符串是%s字符串的子串n,s2,s1);else printf(n%s字符串不是%s字符串的子串n,s2,s1);int fun(char *s1,char *s2)char *p1,*p2;while(*s1)p1=s1;p2=s2; while(*p2) if(*p1=*p2)p1+;p2+; else break; if(*p2=0)break; s1+;if(*s1!=0)return 1;return 0;6.2#include #define N 20void fun(int m,int k,int xx);int isprime(int m);main() int m,k,xxN,i; printf(请输入正整数m,k:n); scanf(%d,%d,&m,&k); fun(m,k,xx); for(i=0;ik;i+) printf(%d ,xxi); printf(n); void fun(int m,int k,int xx)int i,j=0;for(i=m+1;i+)if(isprime(i)xxj+=i; if(j=k)break;int isprime(int m)int j;for(j=2;jm/2)return 1;else return 0;6.3#include stdio.h#include string.h#define N 80void fun(char *s);void main()char sN;printf(n请输入一个字符串:n); gets(s);fun(s);printf(n%sn,s);void fun(char *s)char n=0,m,i;m=strlen(s);for(i=0;im;i+) if(*(s+i)=*)n+; else break; if(*(s+i)!=0) for(i=0;im-n;i+) *(s+i)=*(s+n+i);*(s+i)=0;6.4#include stdio.h#include string.h#define N 80void fun(char sN,char s1);void main()int i;char s4N,s14*N=0;printf(n请输入四个字符串:n); for(i=0;i4;i+) gets(si);fun(s,s1);printf(n%sn,s1);void fun(char sN,char s1)int i;for(i=0;i4;i+)strcat(s1,si); 实验七 结构与共用必做题7.1#include #include #define N 12typedef struct char num10; double s; STREC;double fun( STREC *a, STREC *b, int *n )int i,j=0;double av=0.0;for(i=0;iN;i+) av+=ai.s;av=av/N;for(i=0;i=av)strcpy(bj.num,ai.num);bj.s=ai.s;j+;*n=j;return av;main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64,GA06,87,GA09,60,GA11,79,GA12,73,GA10,90; STREC hN; FILE *out; int i,n; double ave; ave=fun( s,h,&n ); printf(The %d student data which is higher than %7.3fn,n,ave); for(i=0;in;i+) printf(%s %4.1fn,hi.num,hi.s);7.2#include #include #define N 12typedef struct char num10; double s; STREC;int fun( STREC *a, STREC *b)int i,j=0;double av=0.0,max=a0.s;for(i=1;imax)max=ai.s;for(i=0;iN;i+)if(ai.s=max)bj.s=ai.s;strcpy(bj.num,ai.num);j+;return j;main() STR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025学年高三上学期第三次模拟考试地理试题(含答案解析)
- 工勤考试收银审核员考试题库附答案
- 2025年美容整形医师应聘面试指南及专业问题解答技巧总结
- 2025年A特种设备相关管理(锅炉压力容器压力管道)操作证考试题库及答案
- 2025年企业安全生产管理知识培训资料及模拟题集
- 2025年电子商务运营团队负责人选拔面试题集与答案详解
- 2026届甘肃省玉门市一中化学高三上期中综合测试试题含解析
- 2025年旅游行业营销策划部招聘面试模拟题及解析
- 桌面运维高级知识培训课件
- 2025年陪诊师考试医学知识试题及答案
- 31个工种安全技术交底
- 糖尿病人的麻醉课件
- 2024年哈尔滨租房落户协议书模板
- 专项14-因式分解-专题训练(30道)
- 异位妊娠的课件
- 人教版2024年小学升学考试数学模拟测试卷(共5套)(含答案解析)
- (2024年)肺栓塞的护理课件
- (高清版)TDT 1031.6-2011 土地复垦方案编制规程 第6部分:建设项目
- 遥感数字图像处理课件
- 检验科实验室生物安全培训课件
- 《宠物解剖生理》课程标准
评论
0/150
提交评论