《[理学]C习题.doc》由会员分享,可在线阅读,更多相关《[理学]C习题.doc(37页珍藏版)》请在三一办公上搜索。
1、/*功能:求三个整数中的最大值创建:2010/11/01*/#includevoid main() int a,b,c,max; printf(请输入三个整数,并用逗号隔开:); scanf(%d,%d,%d,&a,&b,&c); if(a=b&a=c) max=a; else if(b=a&b=c) max=b; else max=c; printf(最大值=%dn,max); /*功能:判断三个数能否构成三角形,若能再求三角形的面积创建:2010/11/01*/#include#includevoid main() double a,b,c,x,s; printf(请输入三个数:); sc
2、anf(%lf,%lf,%lf,&a,&b,&c); if(a=0|b=0|c=0) puts(必须是三个正数!); return; if(a+b=c|a+c=b|b+c=a) puts(不能构成三角形!); return; /求三角形面积 x=(a+b+c)/2; s=sqrt(x*(x-a)*(x-b)*(x-c); printf(面积为:%f/n,s); /*功能:求一个实数的绝对值创建:2010/11/01*/#includevoid main() float a,b; printf(请输入一个实数:); scanf(%f,&a); if(a0) b=a; else b=-a; pri
3、ntf(其绝对值为:%fn,b);/*功能:检查函数getchar和getch所得到的回车值是n还是r创建:2001/11/17*/#include#include/getch函数的头文件void main() char a,b; printf(请敲回车); a=getchar(); printf(请敲回车n); b=getch();/处理 if(a=n) printf(getchar得到的回车键值是换行n); else if(a=r) printf(getchar得到的回车键值是回车n); if(b=10) printf(getch得到的回车键值是换行n); else if(b=13) pr
4、intf(getch得到的回车键值是回车n);/*功能:求两个正整数的百分比创建:201/11/06*/#includevoid main() float a,b,c; printf(请输入两个正整数,用逗号隔开:); scanf(%f,%f,&a,&b); c=100.0*a/b; printf(%f%n,c);/*功能:计算|sin|的平方根再除以e的x次方创建:2010/11/01*/#include#includevoid main() double x,a,b,c,d,m;printf(请输入一个数,按回车键确认:);scanf(%lf,&x);a=sin(x);b=fabs(a);
5、c=sqrt(b);d=exp(x);m=c/d;printf(%lf,m); /*功能:计算股数、总开销金额、用于股票的金额、用于股票之外的金额、剩余金额创建:2010/11/20*/#includevoid main()int h;/h代表手double a ,p;/a是总金额,p是单价scanf(%lf,%lf,&a,&p); h=a/(100*p*1.0045+0.1);printf(能购买的股数为:%dn,h*100);printf(总开销金额为:%.2lfn,h*(100*p*1.0045+0.1);printf(用于股票的金额为:%.2lfn,p*h*100);printf(用于
6、股票之外的金额为:%.2lfn,h*(0.1+100*p*0.0045);printf(剩余金额为:%.2lfn,a-(h*(100*p*1.0045+0.1);#includevoid main() char c; printf(请输入一串字符,按enter键结束:); while (c!=n) c=getchar(); if(c=a&c=z) putchar(c-32); else putchar(c); #includevoid main() int row,sp,star; for(row=1;row=4;row+) for(sp=1;sp=4-row;sp+) putchar( );
7、 for(star=1;star=2*row-1;star+) putchar(*); printf(n); for(row=5;row=7;row+) for(sp=1;sp=row-4;sp+) putchar( ); for(star=1;star=15-2*row;star+) putchar(*); printf(n); #includevoid main() int a,b,c,d,t;printf(请输入4个数用逗号隔开:);scanf(%d,%d,%d,%d,&a,&b,&c,&d);if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;if(ad) t=
8、a;a=d;d=t;if(bc) t=b;b=c;c=t;if(bd) t=b;b=d;d=t;if(cd) t=c;c=d;d=t;printf(排序结果为:%d,%d,%d,%d,a,b,c,d);printf(n);# includevoid main() double jc,i; jc=1; for(i=1;i=15;i+) jc*=i; printf(结果=%.0lfn,jc);#includevoid main() int M,a,b,c; printf(水仙花数为:); for( M=100;M=999;M+) a=M/100; b=(M-a*100)/10; c=M%10; i
9、f(M=a*a*a+b*b*b+c*c*c) printf(%d ,M); printf(n);#includevoid main() int M,N,i,j,s,x; printf(亲密数对有以下几组:); for(M=1;M10000;M+) s=0; for(i=1;iM;i+) if(M%i=0) s=s+i; N=s; x=0; for(j=1;jN;j+) if(N%j=0) x=x+j; if(x=M&MN) printf(%d,%d ,M,N); printf(n); #include void main() unsigned int i, a; printf(请输入一个自然数
10、:n); scanf(%d, &a); printf(%d, a); while (a!=1) if (a&1) a = a*3 + 1; else a /= 2; printf( - %d, a); printf(n);#include#includedouble f(double x) return x+exp(x);double root(double x0,double x1,double eps) double x; while(fabs(x1-x0)eps) x=(x0+x1)/2; if(f(x0)*f(x)0) x0=x; else x1=x; return(x0+x1)/2;
11、void main() printf(根为%lfn,root(-1,1,1.0E-10);#includevoid main() int m,n,s=0; printf(请输入两个整数,用逗号隔开:); scanf(%d,%d,&m,&n); for(;m=n;m=m-n) s+; printf(商为%d,余数为%dn,s,m);#includevoid main() int af,bf, cf,az,bz,cz; af=1,bf=2,cf=3; az=(bfaf)+(af=bf);/1 bz=(afbf)+(afcf);/0 cz=(cfbf)+(bfaf);/2 if(azbz&bzcz)
12、 puts(饭量大小顺序为:C,B,A); af=1,bf=3,cf=2; az=(bfaf)+(af=bf);/1 bz=(afbf)+(afcf);/0 cz=(cfbf)+(bfaf);/1 if(azcz&czbz) puts(饭量大小顺序为:B,C,A); af=2,bf=1,cf=3; az=(bfaf)+(af=bf);/0 bz=(afbf)+(afcf);/1 cz=(cfbf)+(bfaf);/1 if(bzaz&azcz) puts(饭量大小顺序为:C,A,B); af=2,bf=3,cf=1; az=(bfaf)+(af=bf);/1 bz=(afbf)+(afcf);
13、/1 cz=(cfbf)+(bfaf);/1 if(czaz&azbz) puts(饭量大小顺序为:B,A,C); af=3,bf=1,cf=2; az=(bfaf)+(af=bf);/0 bz=(afbf)+(afcf);/2 cz=(cfbf)+(bfaf);/1 if(bzcz&czaz) puts(饭量大小顺序为:A,C,B); af=3,bf=2,cf=1; az=(bfaf)+(af=bf); bz=(afbf)+(afcf); cz=(cfbf)+(bfaf); if(czbz&bzaz) puts(饭量大小顺序为:A,B,C);#include void main() int
14、a,b,c; for(a=0;a=1;a+) for(b=0;b=1;b+) for(c=0;c=1;c+) if(a&!b|!a&b) & (b&!c|!b&c) & (c&a+b=0|!c&a+b!=0) printf(A told a %s.n,a?truth:lie); printf(B told a %s.n,b?truth:lie); printf(C told a %s.n,c?truth:lie); #includevoid main() int i,j,m,s=0; for(i=0;i=100;i+) for(j=0;j=50;j+) for(m=0;m=20;m+) if(
15、i+2*j+5*m=100)s+; printf(共有%d种兑换方法,s); printf(n);#includevoid main() int m,a,b; printf(这些数为:); for(m=1000;m=9999;m+) a=m/100; b=m%100; if(a+b)*(a+b)=m) printf(%d ,m); printf(n);#include#include#include#define N 10void output(int a)int i;for(i=0;iN;i+)printf(%dt,ai);printf(n);void insert(int a,int i,
16、int j)int t;while(ij)t=ai;ai=aj; aj=t;i+;j-;void GenRend(int a)int i;srand(unsigned)time(NULL);for(i=0;iN;i+)ai=(int)(1+99*(double)rand()/RAND_MAX);int main() int p; int aN=0; GenRend(a); printf(交换前的数据:n); output(a); printf(请输入您要交换的前后数据个数(几项)(小于5):); scanf(%d,&p); insert(a,0,p-1); insert(a,p,N-1-p);
17、 insert(a,N-p,N-1); insert(a,0,N-1); printf(交换后的数据:n); output(a); return 0;#include#define N 100void output(int a,int tag)int i;for(i=0;itag;i+)printf(%dt,ai);printf(n);void main()int i,j,k,x,aN,tag=0; for(i=0;iN;i+)printf(请输入数字,按enter结束:);scanf(%d,&x);tag+;for(j=0;jx) break;for(k=i;kj;k-)ak=ak-1;aj
18、=x; printf(顺序为:); output(a,tag);#include#define N 10int find(int x,int a)int m,l=0,r=N-1;while(l=r)m=(l+r)/2; if(x=am)return m;if(xam) r=m-1;else l=m+1;return -1;void main()int aN=1,4,6,9,12,14,17,23,25,68,y,x,m;printf(请输入要查找的数:);scanf(%d,&x); y=find(x,a); if(y!=-1) printf(该数在数组的位置为:%dn,y);else prin
19、tf(查找错误n);#include#define N 5void main()int i,j,aN;for(i=0;i=1;j-)aj=aj+aj-1;for(j=0;j=i;j+)printf(%dt,aj);printf(n);#includevoid output(int a,int h)int j;for(j=0;j=h;j+)printf(%dt,aj);printf(n);void huanhang(int a,int m) int i,j;for(i=0;i=1;j-)aj=aj+aj-1; output(a,i);void main()int a100;int N;print
20、f(请输入要输出的杨辉三角的行数:);scanf(%d,&N); huanhang(a,N);#include#include#include#define M 3#define N 3void Genrend(int aMN)int i,j;srand(unsigned)time(NULL);for(i=0;iN;i+)for(j=0;jM;j+) aij=rand()%99+1;void main()int aMN;int i,j,k,min,max,p,tag=0;Genrend(a);for(i=0;iM;i+)j=0;min=aij;for(k=1;kN;k+)if(aikmin)m
21、in=aik;j=k;for(p=j;pN;p+) if(aip=min)max=a0p;for(k=1;kmax)max=akj;if(max=aij)tag=1;printf(%d,%d,%d)n,i,p,max); if(tag=0) printf(没有鞍点n);#includevoid main()int count=0,i;char str100;printf(请输入一串字符:);gets(str);if(str0!= ) count+;for(i=0;stri!=0;i+) if(stri!= &stri-1= )count+;printf(单词个数为:%dn,count);#in
22、cludevoid main() int i;char str100; printf(请输入一串字符:); gets(str); printf(串中元音字母如下:); for(i=0;stri!=0;i+) switch(stri) case a: case A: case e: case E: case i: case I: case o: case O: case u: case U: putchar(stri); printf(:n);#include#includechar findandreplace(char *text,char *s1,char *s2)int i,j,k;fo
23、r(i=0;texti;i+)for(j=0;s1j;j+)if(texti+j!=s1j)break;if(s1j=0)if(strlen(s2)strlen(s1) for(i=strlen(text);i(strlen(text)-(strlen(s2)-strlen(s1);i-) texti+1=texti;if(strlen(s2)strlen(s1)for(j=i+strlen(s2);textj!=0;j+) textj=textj+1;for(j=i;j(i+strlen(s2);j+)for(k=0;s2k!=0;k+)textj=s2k;return *text; ret
24、urn -1;void mian()char text100,s1100,s2100;gets(text);gets(s1);gets(s2);text100=findandreplace(text,s1,s2);puts(text);/*输入一串字符串,然后输入要查找的字符串,在输入要替换的字符串,程序在原字符串中替换并输出*/#include#include#define N 100char*replaceAll(char*str1, char*str2, char*str3); /*声明函数为查找替换函数*/main()char string1N,string2N,string3N,*p
25、tr; printf(输入源字符串:);gets(string1); printf(请输入被替换的字符串:); gets(string2); printf(请输入替换目标字符串:); gets(string3);ptr=replaceAll(string1,string2,string3); printf(替换后的字符串是:); puts(ptr); system(pause);return 0;char*replaceAll(char*str1, char*str2, char*str3)int size1, size2, size3, i, j, k, judge,distance; /*
26、定义size为对应字符串大小,judge是否找到,distance为size2与size3之差*/for(size1=0;str1size1;size1+); /*计算size13*/for(size2=0;str2size2;size2+);for(size3=0;str3size3;size3+);for(i=0;str1i;i+=k) /*字符串大循环*/ for(j=0;jsize3) for(k=j+i;k=i+j;k-) str1k+distance=str1k; for(k=0;k=size3-1;k+) str1i+k=str3k; else k=1;return str1;
27、#includevoid main()char s1100=I am a student.,s2100;int i,j,tag=0;printf(请输入要查找的字符串:);gets(s2);for(i=0;s1i!=0;i+)for(j=0;s2j!=0;j+)if(s1i+j!=s2j)break;if(s2j=0) printf(起始位置为:%dn,i); tag=1; if(tag=0)printf(-1n);#includeint H2D(char * h)int i,c,d=0;for(i=0;hi!=0;i+)if(hi=0&hi=a&hi=A&hi=F)c=hi-A+10;d=d
28、*16+c;return d;void main()char s9;printf(请输入一个十六进制数:);gets(s);printf(它转化为十进制数是:%dn,H2D(s);#include#include#define N 100struct studentchar No10;char Name15;int score;struct student stuN;int Input()int n;for(n=0;nN;n+)printf(请输入第%d个学生的信息:n,n+1);printf(请输入学号(直接按回车键进入查找):); gets(stun.No);if(stun.No0=0)b
29、reak;printf(请输入姓名:);scanf(%s,stun.Name); printf(请输入成绩:);scanf(%d,&stun.score);getchar();return n;void main()char x15;int i,j; j=Input(); printf(请输入要查找的学号或者姓名:);gets(x);for(i=0;ij;i+)if(strcmp(stui.No,x)=0|strcmp(stui.Name,x)=0)printf(学号:%sn,stui.No); printf(姓名:%sn,stui.Name);printf(成绩:%dn,stui.score
30、);break;if(i=j)printf(不存在!n);#includevoid dispel(int x,int y)int i,m=x,n=y;if(x0)m=-x;if(y0) n=-y;i=mn?m:n;while(m%i!=0|n%i!=0)i-;m=m/i;n=n/i;if(x0)x=-m;else x=m;if(y0)y=-n;else y=n;if(x=1) printf(结果为:%dn,y);else printf(结果为:%d/%dn,y,x);void plus(int fz1,int fm1,int fz2,int fm2) int a,b;a=fm1*fm2;b=fz1*fm2+fm1*fz2;dispel(a,b);void minus(int fz1,int fm1,int fz2,int fm2) int a,b;a=fm1*fm2;b=fz1*fm2-fm1*fz2; dis