1、C语言作业7.1 用筛法求之内的素数。 main() int i,j,a100; for(i=2;i100;i+) ai=i; for(j=2;j=i;j+) if(ji) if(ai%j=0) break; if(ai-j=0) printf(%5d,ai); printf(n); 或 #includemath.h main() static int i,j,k,a98; for(i=2;i100;i+) ai=i;k=sqrt(i); for(j=2;j=ai;j+) if(j=k+1) printf(%5d,ai); printf(n); 7.2用选择法对10个整数从小到大排序。 mai
2、n() int i,j,a10,t; for(i=0;i10;i+) scanf(%d,&ai); for(j=1;j10;j+) for(i=0;iai+1) t=ai+1;ai+1=ai;ai=t; for(i=0;i10;i+) printf(%5d,ai); 或 main() static int a10,i,j,k,t; for(i=1;i11;i+) scanf(%d,&ai); for(j=1;j10;j+) for(i=1;iai+1) t=ai+1;ai+1=ai;ai=t; for(i=1;i11;i+) printf(%d,ai); printf(n); 7.3求一个33
3、矩阵对角线元素之和。 main() int i=0,j=0,a33,s1,s2; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s1=a00+a11+a22; s2=a02+a11+a20; printf(s1=%d,s2=%dn,s1,s2); 或 main() static int i,j,s1,s2,a33; for(i=1;i=3;i+) for(j=1;j0;i-) if(aiai-1) t=ai-1;ai-1=ai;ai=t; for(i=0;i10;i+) printf(%5d,ai);printf(n); 或 main() stat
4、ic int a5=1,4,5,6,7; int i,t,b; scanf(%d,&b); for(i=0;i5;i+) if(b=ai) t=ai;ai=b;b=t; printf(%d ,ai); printf(%d,b); 7.5将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。 main() int i,b10; for(i=0;i-1;i-) printf(%5d,bi); printf(n); 7.6打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 main() static int
5、 m,n,k,b1515; b01=1; for(m=1;m15;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn);printf(n); 或 main() int i,j,n,k,a1010; static a1=1,1,1,1,1,1,1,1,1,1; a11=1; for(k=2,k11;k+) for(i=2;i=k;i+) for(j=2;j=i;j+) aij=ai-1j-1+ai-1j; for(k=1;k11;k+) for(i=1;i=k;i+) for(j=1;j=i;j+) printf(%d,aij); 7.7
6、 打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为 8 1 6 3 5 7 4 9 2 要求打印出由1n2的自然数构成的魔方阵。 解: #include main() int a1616,i,i,k,p,m,n; p=1; while(p=1) /*要求阶数为115的商数*/ printf(Enter n(n=115):); scanf(%d,&n); if(n!=0)&(n=15)&(n%2!=0) p=0; for(i=1;i=n;i+) /*初始化*/ for(j=1;j=n;j+) aij=0; j=n/2+1; /*建立魔方阵*/ a
7、1j=1; for(k=2;k=n*n;k+) i=i-1; j=j+1; if(in) i=i+2; j=j-1; else if(in) j=1; if(aij=0) aij=k; else i=i+2; j=j-1; aij=k; for(i=1;i=n;i+) /*输出魔方阵*/ for(j=1;j=n;j+) printf(%4d,aij); printf(n); 7.8找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。 main() int a55,b5,c5,d55,k=0,l=0;int i,j; for(i=0;i5;i+) for(j=0
8、;j5;j+) scanf(%d,&dij); for(i=0;i5;i+) for(j=0;j5;j+,aij=dij); for(i=0,k=0;i5;i+,k+) for(j=0;j=aij+1) bk=aij+1=aij; else bk=aij+1; for(j=0,l=0;j5;j+,l+) for(i=0;i4;i+) if(aij=ai+1j) cl=ai+1j=aij; else cl=ai+1j; for(i=0,k=0;i5;i+,k+) for(j=0,l=0;j5;j+,l+) if(dij-bk=0) if(dij-cl=0) printf(d%d%d=%dn,i,
9、j,dij); else printf(d%d%d=%d isnot andin,i,j,dij); 7.9有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出无此数 #includemath.h main() static int i,j,m,a15=1,4,9,13,21,34,55,89,144,233,377,570,671,703,812; scanf(%d,&m); for(j=0;j15;j+) printf(%4d,aj); printf(n); i=7; while(fabs(i-7)8) if(ma7
10、) if(ai-m=0) printf(it is at (%d)n,i+1);break;i+; else printf(8n); if(fabs(i-7)-8=0) printf(There is notn); 7.10有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。 main() int i,j=0,k=0,l=0,m=0,n=0;char str0301,str1100,str2100,str3100; gets(str1);gets(str2);gets(str3); strcat(str0,str1);strcat(st
11、r0,str2);strcat(str0,str3); for(i=0;str0i!=0;i+) if(str0i=65&str0i=97&str0i=48&str0i=57) l+; else if(str0i=32) m+; else n+; printf(Daxie Xiaoxie Shuzi Kongge Qitan); printf(%5d %7d %5d %6d %4dn,j,k,l,m,n); 7.11打印以下图案 main() int i,j,k;char a55; for(i=0;i5;i+) for(j=0;j5;j+) aij=*;printf(%c,aij); prin
12、tf(n); for(k=1;kZa-z B-Yb-y C-Xc-x 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。 main() int i;char str1100,str2100; gets(str1); for(i=0;str1i!=0;i+) if(str1i=65&str1i=97&str1iS2,输出一个正数;S1=S2,输出0;S1S2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,A与C相
13、比,由于AC,应输出负数,由于A与C的码差值为2,因此应输出-2。同理:And和Aid比较,根据第2个字符比较结果,n比i大5,因此应输出5。 #include #include main() int i,resu; char s1100,s2100; printf(n input string1:); gets(s1); printf(n Input string2:); gets(s2); i=0; while(s1i=s2i&s1i!=0) i+; if(s1i=0&s2i=0) resu=0; else resu=s1i-s2i; printf(n result:%dn,resu);
14、7.15 编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,0也要拷贝过去,0后面的字符不拷贝。 解: #include stdio.h main() char s180,s280; int i; printf(Input s2:); scanf(%s,s2); for(i=0;istrlen(s2);i+) s1i=s2i; printf(s1:%sn,s1); #include int main() int a10; int i = 0,j=0; int max,temp; for(i=0;i8;+i) printf(Please input th
15、e %dth number:,i+1); scanf(%d,&ai); printf(The arry has been input is:n); for(i=0;i8;i+) printf(%d,ai); printf(n); for(i=0;i8;i+) max=i; for(j=i;jamax)?j:max); temp=amax; amax=ai; ai=temp; printf(The arry after sort is:n); for(i=0;i8;+i) printf(%d,ai); printf(n); printf(Plesae input another number:)
16、; scanf(%d,&temp); for(i=0;iai) break; for(j=8;j=i;-j) aj=aj-1; ai=temp; for(i=0;i9;i+) printf(%d ,ai); getchar(); return 0; 6.1输入两个正整数m和n,求其最大公约数和最小公倍数。 main() long m,n,i=1,j,s; scanf(%ld,%ld,&m,&n); for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); printf(s=%ld,j=%ldn,s,j); 6.2输入一行字符,分别统计出其中英文
17、字母、空格、数字和其他字符的个数。 #includestdio.h main() char c;int i=0,j=0,k=0,l=0; while(c=getchar()!=n) if(c=65&c=97&c=48&c=57) j+; else if(c=32) k+; else l+; printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l); 6.3求Sn=a+aa+aaa+aaaaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。 #includemath.h main() int n,sum=0,i=1,s=2
18、; scanf(%d,&n); while(i=n) sum=sum+s;s=s+2*pow(10,i); i+; printf(sum=%dn,sum); 6.4 求 ,(即求1!+2!+3!+4!+5!+20!) main() int n,i=1;long sum=0,s=1; scanf(%d,&n); while(i=n) s=s*i;sum=sum+s;i+; printf(sum=%ldn,sum); 6.5 求 main() double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum; for(;i=100;i+) s1=s1+i; for(;j=50;j+) s
19、2=s2+j*j; for(;k=100&x1000) a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x=(pow(a,3)+pow(b,3)+pow(c,3) printf(%5d,x);x+; 6.7一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6itsfactorsare1、2、3 main() int m,i,j,s; for(m=6;m10000;m+) s=1; for(i=2;im;i+) if(m%i=0) s=s
20、+i; if(m-s=0) printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if(m%j=0) printf(%d ,j);printf(n); 或 main() int m,i,j,s; for(m=6;m1000;m+) s=m-1; for(i=2;im;i+) if(m%i=0) s=s-i; if(s=0) printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if(m%j=0) printf(%d ,j);printf(n); 6.8有一分数序列: 求出这个数列的前20项之和。 main()
21、int i=1,n;double t,x=1,y=2,s,sum=0; scanf(%ld,&n); while(i=n) s=y/x;sum=sum+s;t=y;y=y+x;x=t;i+; printf(%fn,sum); 6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main() int i,n;double h=100,s=100; scanf(%d,&n); for(i=1;i=n;i+) h*=0.5;if(i=1) continue;s=2*h+s; printf(h=%f,s=%fn,h,s); 6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。 main() int i=1,sum=0; for(;i=10;sum=2*sum+1,i+); printf(sum=%dn,sum); 6.11用迭代法求 。求平方根的迭代公式为: 要
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1