C语言程序设计部分习题及例题参考程序.doc_第1页
C语言程序设计部分习题及例题参考程序.doc_第2页
C语言程序设计部分习题及例题参考程序.doc_第3页
C语言程序设计部分习题及例题参考程序.doc_第4页
C语言程序设计部分习题及例题参考程序.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.C语言程序设计部分例题及课后习题参考程序1.编程计算如下分段函数:y=2x+3 x10 4x 0x105x-6 x0参考程序#include int main()float x,y;printf(input x:);scanf(%f,&x);if(x=10)y=2*x+3;else if(x=0)y=4*x;elsey=5*x-6;printf(y=%.2fn,y);2编程将从键盘输入的百分制成绩转换为等级分,转换方法如下: 90以上(大于或等于90,下同)为A,80分以上为B,70分以上为C,60分以上为D,60分以下,即低于60分为E。参考程序#include int main()float score;char rank;printf(input a score:);scanf(%f,&score);if(score100|score0)printf(invalid score inputn);exit(-1);switch(int)score/10)case 10:case 9:rank=A;break;case 8:rank=B;break;case 7:rank=C;break;case 6:rank=D;break;default:rank=E;printf(%.2f:%cn,score,rank);return 0;3.编程判断以从键盘输入的三个数为边长,是否能构成三角形。参考程序#include int main()float a,b,c;printf(input a,b,c:);scanf(%f%f%f,&a,&b,&c);if(a0 & b0 & c0 & a+bc & a+cb & b+ca)printf(%.2f,%.2f,%.2f)能围成三角形n,a,b,c);elseprintf(%.2f,%2.2f,%.2f)不能围成三角形n,a,b,c);4.编程实现将从键盘输入的一个正整数逆序输出,如输入1234,输出3421参考程序#include int main()int n;printf(input a number:);scanf(%d,&n);doprintf(%d,n%10);n/=10;while(n!=0);return 0;5.输入一个110范围内的整数,计算该数的阶乘。参考程序#include int main()int n,s=1,i;printf(input a number(110):);scanf(%d,&n);for(i=2;i=n;i+)s*=i;printf(%d!=%dn,n,s);return 0;6.从键盘输入的一行字符,统计其含有多少个字符。【参考程序】#include int main()char ch;int cnt=0;printf(input a char line:);ch=getchar();while(ch!=n)cnt+;ch=getchar();printf(%dn,cnt);return 0;7.打印乘法口诀表。【参考程序】#include int main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-3d,j,i,i*j);printf(n);return 0;8.在屏幕上打印如下规律的图形,具体行数由键盘输入。 * * * * *【参考程序】#include int main()int i,j,n;printf(请输入打印图形的行数:);scanf(%d,&n);for(i=1;i=n;i+)for(j=1;j=n-i;j+)printf( );for(j=1;j=2*i-1;j+)printf(*);printf(n);return 0;9.从键盘输入一个正整数,编程判断其是否为素数(质数).【参考程序】#include int main()int i,n;printf(请输入一个正整数:);scanf(%d,&n);for(i=2;i*i=n;i+)if(n%i=0)break;if(i*i=n|n=1)printf(%d不是一个素数.n,n);elseprintf(%d是一个素数.n,n);return 0;10.从键盘输入100个整数,求其中正整数的和。【参考程序】#include #define N 100int main()int n,s=0,i;for(i=1;i=N;i+)printf(请输入第%d个整数:,i);scanf(%d,&n);if(n0)continue;s+=n;printf(%dn,s);return 0;11.从键盘输入1000个学生某门课程的百分制成绩,分别统计其中80分以上(即大于或等于80)、60分以上及低于60分的人数。【参考程序】#include #define N 1000int main()int m,n,k,i;float score;m=n=k=0;for(i=1;i100|score=80)m+;else if(score=60)n+;elsek+;printf(%d:%d:%dn,m,n,k);return 0;12.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于10-6时,停止计算。4=1-13+15-17+-1n-112n-1+【参考程序】#include int main()double pi=0.0,t=1.0;int sgn=1;while(t1000000)pi+=sgn/t;sgn=-sgn;t+=2;printf(Pi=%.6lfn,4*pi);return 0;13.古代某工地需要搬运砖块,已知男人每人每次搬3块,女人每人每次搬2块,小孩两人每次抬一块,现有45人一次正好搬完全部砖块,请问男人、女人、小孩各几人?【参考程序】#include int main()int w,m,c;for(m=0;m=15;m+)for(w=0;w=22;w+)c=45-m-w;if(m*3+w*2+c*.5=45)printf(%d:%d:%dn,m,w,c);return 0;14.从键盘输入两个正整数到m、n中,求它们的最大公约数和最小公倍数。【参考程序】#include int main()int m,n,m1,n1,r;printf(请输入两个正整数:);scanf(%d%d,&m,&n);m1=m;n1=n;r=m%n;while(r!=0)m=n;n=r;r=m%n;printf(gcd(%d,%d)=%dn,m1,n1,n);printf(lcm(%d,%d)=%dn,m1,n1,m1*n1/n);return 0;14.编程计算如下式子的值,直到n等于100。1-12+13-14+-1n-11n+【参考程序】#include int main()double s=0.0,t=1.0;int sgn=1;while(t=100)s+=sgn/t;sgn=-sgn;t+=1;printf(s=%.6lfn,s);return 0;15.计算如下规律式子的值。其中a与n的值都是由键盘输入确定。如当a为2,n为3时,该式子表示的含义为2+22+222,故结果为246。a+aa+aaa+aaaa(n个a)【参考程序】#include int main()int a,n,s=0,t;printf(input a,n:);scanf(%d%d,&a,&n);t=a;while(n0)s+=t;t=t*10+a;n-;printf(%dn,s);return 0;16.计算如下式子的值。1+32+54+76+101100【参考程序】#include int main()int n;float s=0.0;for(n=2;n=100;n+=2)s+=(float)(n+1)/n;printf(%.6fn,s);return 0;17.如数列第1项为2,此后各项的值均为其前一项的2倍再加3,编程计算该数列的前10项之和。【参考程序】#include int main()int n,s=0,i;n=2;for(i=1;i=3;i+)s+=n;n=n*2+3;printf(%dn,s);return 0;18.现要求将1角钱换成1分、2分或5分的硬币,请问有多少种换法,并输出每一种换法。【参考程序】#include int main()int one,two,five,cnt=0;for(five=0;five=2;five+)for(two=0;two=0)printf(%d:%d:%dn,one,two,five);cnt+;printf(一共有%d种换法n,cnt);return 0;20.编程统计并输出200到300以内的全部素数。【参考程序】#include int main()int m,i,k=0;for(m=201;m300;m+=2)for(i=3;i*im)k+;printf(%8d,m);if(k%5=0)printf(n);printf(n200到300之间一共有%d个素数n,k);return 0;21.打印所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数自身。如153【参考程序】#include int main()int m,n,k;for(m=1;m=9;m+)for(n=0;n=9;n+)for(k=0;k=9;k+)if(m*m*m+n*n*n+k*k*k=m*100+n*10+k)printf(%5d,m*100+n*10+k);printf(n);return 0;22.输出200到300之间满足如下条件的数,即各位数字之和为12,数字之积为42.【参考程序】#include int main()int m,n;for(m=0;m=9;m+)for(n=0;n=9;n+)if(m+n=10&m*n=21)printf(%5d,200+m*10+n);printf(n);return 0;23.编程将一个正整数进行质因数分解,例如输入90,须在屏幕上打印出90=2*3*3*5【参考程序】#include int main()int m,n;scanf(%d,&m);printf(%d=,m);n=2;while(m!=1)while(m%n=0)printf(%d,n);if(m!=n)printf(*);m/=n;n+;printf(n);return 0;24.输入一行字符,分别统计其中英文字母、空格、数字及其他字符的个数。【参考程序】#include int main()char ch;int letter,space,digit,other;letter=space=digit=other=0;printf(input a char line:);ch=getchar();while(ch!=n)if(ch=a&ch=A&ch=0&ch=9)digit+;else if(ch= )space+;elseother+;ch=getchar();printf(%d:%d:%d:%dn,letter,digit,space,other);return 0;25.编程输出1000以内的全部完数。所谓完数,是指该数恰好等于他的全部真因子的和。如6=1+2+3【参考程序】#include int main()int m,i,t;for(m=2;m=1000;m+)t=1;for(i=2;i*i=m;i+)if(m%i=0)t+=i;if(i*i!=m)t+=m/i;if(t=m)printf(%dn,m);return 0;26.从键盘输入10个整数,求这些整数的总和及平均值,并统计不低于平均值的元素个数。【参考程序】#include #define N 5int main()int aN,i,cnt=0;float aver;printf(请输入%d个整数:,N);aver=0.0;for(i=0;iN;i+)scanf(%d,&ai);aver+=ai;for(i=0;i=aver/N)cnt+;printf(这%d个整数的和是%.0f,平均值是%.2fn,N,aver,aver/10);printf(不低于平均值的数有%d个n,cnt);return 0;27.设有存放于数组中一组整数,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出其全部出现位置,否则输出“*不存在”,*代表该数值。【参考程序】#include #define N 10int main()int aN=16,35,48,29,56,43,93,64,90,48;int n,sgn,i;printf(请输入待查找的整数:);scanf(%d,&n);sgn=0;for(i=0;iN;i+)if(ai=n)sgn=1;printf(%d在数组中的%d位置出现.n,n,i+1);if(sgn=0)printf(%d不存在n,n);return 0;28.设有一存在有10个随机数的数组,请编程找出其中的最大数及其在数组中的位置。【参考程序】#include #include #include #define N 10int main()int aN,i,k;srand(time(NULL);for(i=0;iN;i+)ai=rand();printf(%6d,ai);k=0;for(i=1;iak)k=i;printf(n最大值是%d,它是数组的第%d个数n,ak,k+1);return 0;29.现有一未排序的整型数组,要求用选择法将该数组按由大到小的顺序排序。【参考程序】#include #define N 10int main()int aN,i,k,j,t;printf(请输入%d个整数:,N);for(i=0;iN;i+)scanf(%d,&ai);for(j=0;jN-1;j+)k=j;for(i=j+1;iak)k=i;t=aj;aj=ak;ak=t;printf(排序后的数组:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;30.现有一数组,其元素已按由大到小的顺序排列,现从键盘输入一个数,插入到该数组中,要求插入后的数组元素依然由大到小排列。【参考程序】#include #define N 10int main()int aN+1=98,96,87,78,72,64,56,51,43,36;int n,i;printf(插入前的数组:n);for(i=0;i=0;i-)if(ain)ai+1=ai;elsebreak;ai+1=n;printf(插入后的数组:n);for(i=0;i=N;i+)printf(%5d,ai);printf(n);return 0;31. 设有存放于一维数组中一组整数,且已按由小到大顺序排序,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出该数的出现位置,否则输出“*不存在”,*代表该数值。【参考程序】#include #define N 10int main()int aN=93,90,64,56,50,48,43,35,29,16;int n,sgn,top,bott,mid;printf(请输入待查找的整数:);scanf(%d,&n);sgn=0;top=0;bott=N-1;while(topn)top=mid+1;elsebott=mid-1;if(sgn=0)printf(%d不存在n,n);elseprintf(%d在第%d个数位置被发现.n,n,mid+1);return 0;32.按如下格式打印杨辉三角形,具体行数由键盘输入。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1【参考程序】#include #define N 20int main()int yangNN,n,i,j;printf(请输入要打印的的行数:);scanf(%d,&n);for(i=0;in;i+)yangi0=yangii=1;for(i=2;in;i+)for(j=1;ji;j+)yangij=yangi-1j+yangi-1j-1;for(i=0;in;i+)for(j=0;jn-i-1;j+)printf(%3c, );for(j=0;j=i;j+)printf(%6d,yangij);printf(n);return 0;33.编程实现从一字符串中删除指定的字符。【参考程序】#include #define N 80int main()char strN,ch,i,j=0;printf(请输入一个字符串:);gets(str);printf(请输入待删除的字符:);ch=getchar();for(i=0;stri!=0;i+)if(stri!=ch)strj+=stri;strj=0;printf(删除指定字符后的字符串:%sn,str);return 0;34.现有若干字符串存放于一个二维数组中,每行存放一个字符串,现要求用冒泡法将这些字符串按由小到大排序,即按字符母顺排序。【参考程序】#include #include #define N 80#define M 6int main()char strMN,tempN,i,j;printf(请输入%d个字符串:,M);for(i=0;iM;i+)gets(stri);for(i=0;iM-1;i+)for(j=0;j0)strcpy(temp,strj);strcpy(strj,strj+1);strcpy(strj+1,temp);printf(排序后的字符串:n);for(i=0;iM;i+)puts(stri);return 0;35.现有一个英文句子,请编程统计其中的单词数,已知单词之间用空格分隔(空格数大于等于1),不考虑单词是否为合法英语单词,特别提醒,第一单词之前也可能有若干空格。【参考程序】#include #define N 80int main()char strN,i,cnt;printf(请输入一个英文句子,以回车结束:);gets(str);if(str0= |str0=0)cnt=0;elsecnt=1;for(i=0;stri!=0;i+)if(stri= &stri+1!= &stri+1!=0)cnt+;printf(该句子一共含有%d个单词n,cnt);return 0;36.现有一实型一维数组,请编程分别找出其中的最大值和最小值,并将最大值与数组的最后一个元素交换,最小值与数组的第一个元素交换。【参考程序】#include #define N 10int main()float aN,t;int ma,mi,i;printf(请输入%d个实数:);for(i=0;iN;i+)scanf(%f,&ai);ma=mi=0;for(i=1;iama)ma=i;if(aiami)mi=i;t=a0;a0=ami;ami=t;if(ma=0)ma=mi;t=ama;ama=aN-1;aN-1=t;printf(处理后的数组:);for(i=0;iN;i+)printf(%6.2f,ai);printf(n);return 0;37.编程求一方阵的两条对角线元素和(包括主副对角线)【参考程序】#include #define N 5int main()int aNN,i,j,s=0;printf(请输入一个方阵:n);for(i=0;iN;i+)printf(请输入方阵的第%d行元素:,i+1);for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iN;i+)s+=aii;for(i=0;iN;i+)if(i!=N-i-1)s+=aiN-i-1;printf(该方阵的对角元素的和为%dn,s);return 0;38.编程将一个一维数组中的元素颠倒次序,即第1元素与最后一个元素交换位置,第2个元素倒数第2个元素交换位置,依此类推。【参考程序】#include #define N 10int main()int aN,i,t;printf(请输入%d个整数:,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN/2;i+)t=ai;ai=aN-i-1;aN-i-1=t;printf(颠倒后的数组:);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;39.用筛法求100以内的全部素数。【参考程序】#include #define N 100int main()int aN,i,j;for(i=0;iN;i+)ai=i+1;a0=0;for(i=0;i*i=N;i+)if(ai!=0)for(j=i+1;jN;j+)if(aj%ai=0)aj=0;printf(%d以内的全部素数:n,N);for(i=0;iN;i+)if(ai!=0)printf(%5d,ai);printf(n);return 0;40.对于从键盘输入的英文句子,将其中的空格用*替换。【参考程序】#include #define N 81int main()char strN,i;printf(请输入一个英文句子:);gets(str);for(i=0;stri!=0;i+)if(stri= )stri=*;printf(替换后的字符串:);puts(str);return 0;41.请写一个函数用于统计在一个一维数组中出现指定数值的次数,要求一维数组及指定数值都是由主函数通过参数传递。【参考程序】#include #define N 10int myseek(int a,int len,int n)int i,cnt=0;for(i=0;ilen;i+)if(ai=n)cnt+;return cnt;int main()int numN,n,i,count;printf(请输入%d个整数:,N);for(i=0;iN;i+)scanf(%d,&numi);printf(请输入待统计其出现次数的数:);scanf(%d,&n);count=myseek(num,N,n);printf(%d一共出现%d次.n,n,count);return 0;42.编写一个函数,用于判断给定的整数是否为素数,如是则返回1,否则返回0,并写一主函数调用上述函数,输出3100之间的所有素数。【参考程序】#include int isprime(int n)int i;for(i=2;i*i=n;i+)if(n%i=0)return 0;return 1;int main()int i;for(i=3;i100;i+=2)if(isprime(i)=1)printf(%5d,i);printf(n);return 0;43.编写了递归函数求Fibonacci数列的第n项,其中n由参数传递,并在主函数中调用该函数输出数列的前20项。【参考程序】#include long fib(int n)if(n=1|n=2)return 1;return fib(n-1)+fib(n-2);int main()int i;for(i=1;i21;i+)printf(%l8d,fib(i);printf(n);return 0;44.编写一函数,实现用冒泡法将数组元素按由大到小排列,其中排序的数组及参与排序的元素个数由参数传递。【参考程序】#include #define N 10void bubble_sort(int arr,int n)int i,j,t;for(i=0;in-1;i+)for(j=0;jn-i-1;j+)if(arrjarrj+1)t=arrj;arrj=arrj+1;arrj+1=t;int main()int aN,i;printf(请输入%d个整数:,N);for(i=0;iN;i+)scanf(%d,&ai);bubble_sort(a,N);printf(排序后的数组:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;45.编写一函数,实现用选择法将数组元素按由小到大排列,其中排序的数组及参与排序的元素个数由参数传递。【参考程序】#include #define N 10void select_sort(int arr,int n)int i,j,t,k;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(arrjarrk)k=j;t=arrk;arrk=arri;arri=t;int main()int aN,i;printf(请输入%d个整数:,N);for(i=0;iN;i+)scanf(%d,&ai);select_sort(a,N);printf(排序后的数组:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;46.编写一个函数,其原型为void delete_char(char str,char ch),功能是从参数str指定的字符串删除由ch指定的字符。【参考程序】#include #define N 81void del

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论