《C语言-程序设计部分习题及其例题参考程序.doc》由会员分享,可在线阅读,更多相关《C语言-程序设计部分习题及其例题参考程序.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言程序设计部分例题及课后习题参考程序 1.编程计算如下分段函数: =2 + 3 104 0 int main() float x,y; printf(“input x:“);scanf(“%f“, if(x=10) y=2*x+3; else if(x=0) y=4*x; else y=5*x-6; printf(“y=%.2fn“,y); 2编程将从键盘输入的百分制成绩转换为等级分,转换方法如下: 90 以上(大于或等于 90,下同)为 A,80 分以上为 B,70 分以上为 C,60 分以上为 D,60 分以下,即低于 60 分为 E。 参考程序 #include int main(
2、) float score; char rank; printf(“input a score:“); scanf(“%f“, if(score100|score int main() float a,b,c; printf(“input a,b,c:“); scanf(“%f%f%f“, if(a0 elseprintf(“(%.2f,%2.2f,%.2f)不能围成三角形n“,a,b,c); 4.编程实现将从键盘输入的一个正整数逆序输出,如输入 1234,输出 3421 参考程序 #include int main() int n; printf(“input a number:“); sc
3、anf(“%d“, do printf(“%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“,for(i=2;i int main() char ch; int cnt=0; printf(“input a char line:“); ch=getchar(); while(ch!=n) cnt+; ch=getchar(); printf(“%dn“
4、,cnt);return 0; 7.打印乘法口诀表。 【参考程序】 #include int main() int i,j; for(i=1;i int main() int i,j,n;printf(“请输入打印图形的行数:“); scanf(“%d“, for(i=1;i int main() int i,n;printf(“请输入一个正整数:“); scanf(“%d“, for(i=2;i*i #define N 100 int main() int n,s=0,i; for(i=1;i #define N 1000 int main() int m,n,k,i; float scor
5、e; m=n=k=0; for(i=1;i100|score=80) m+; else if(score=60) n+; else k+; printf(“%d:%d:%dn“,m,n,k); return 0; 12.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于 10-6时,停止计算。 4= 1 1 3+1 51 7+ +( 1) 11 2 1+ 【参考程序】 #include int main() double pi=0.0,t=1.0; int sgn=1; while(t int main() int w,m,c; for(m=0;m int main() int m,n,m
6、1,n1,r;printf(“请输入两个正整数:“); scanf(“%d%d“, 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 1 2+1 31 4+ +( 1) 11+ 【参考程序】 #include int main() double s=0.0,t=1.0; int sgn=1; while(t int main()
7、 int a,n,s=0,t; printf(“input a,n:“); scanf(“%d%d“, t=a; while(n0) s+=t; t=t*10+a; n-; printf(“%dn“,s);return 0; 16.计算如下式子的值。1 +3 2+5 4+7 6+ +101 100【参考程序】 #include int main() int n; float s=0.0; for(n=2;n int main() int n,s=0,i; n=2; for(i=1;i int main() int one,two,five,cnt=0; for(five=0;five=0) p
8、rintf(“%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;mm) k+; printf(“%8d“,m); if(k%5=0) printf(“n“); printf(“n200 到 300 之间一共有%d 个素数n“,k);return 0; 21.打印所有“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于 该数自身。如 1
9、53 【参考程序】 #include int main() int m,n,k; for(m=1;m int main() int m,n; for(m=0;m int main() int m,n; scanf(“%d“, 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 c
10、h; int letter,space,digit,other; letter=space=digit=other=0; printf(“input a char line:“); ch=getchar(); while(ch!=n) if(ch=a for(m=2;m #define N 5 int main() int aN,i,cnt=0; float aver;printf(“请输入%d 个整数:“,N); aver=0.0; for(i=0;i=aver/N) cnt+; printf(“这%d 个整数的和是%.0f,平均值是%.2fn“,N,aver,aver/10); print
11、f(“不低于平均值的数有%d 个n“,cnt); return 0; 27.设有存放于数组中一组整数,现从键盘输入一个整数,在数组中查找该数,如果数组中 含有该数,则输出其全部出现位置,否则输出“*不存在” ,*代表该数值。 【参考程序】 #include #define N 10 int main() int aN=16,35,48,29,56,43,93,64,90,48; int n,sgn,i;printf(“请输入待查找的整数:“); scanf(“%d“, sgn=0; for(i=0;i #include #include #define N 10 int main() int
12、aN,i,k; srand(time(NULL); for(i=0;iak) k=i; printf(“n 最大值是%d,它是数组的第%d 个数n“,ak,k+1); return 0; 29.现有一未排序的整型数组,要求用选择法将该数组按由大到小的顺序排序。 【参考程序】 #include #define N 10 int main() int aN,i,k,j,t;printf(“请输入%d 个整数:“,N); for(i=0;iak) k=i; t=aj;aj=ak;ak=t; printf(“排序后的数组:n“); for(i=0;i #define N 10 int main() i
13、nt aN+1=98,96,87,78,72,64,56,51,43,36; int n,i;printf(“插入前的数组:n“); for(i=0;i=0;i-) if(ai #define N 10 int main() int aN=93,90,64,56,50,48,43,35,29,16; int n,sgn,top,bott,mid;printf(“请输入待查找的整数:“); scanf(“%d“, sgn=0; top=0; bott=N-1; while(topn) top=mid+1; else bott=mid-1; if(sgn=0)printf(“%d 不存在n“,n)
14、; elseprintf(“%d 在第%d 个数位置被发现.n“,n,mid+1); return 0; 32.按如下格式打印杨辉三角形,具体行数由键盘输入。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1【参考程序】 #include #define N 20 int main() int yangNN,n,i,j;printf(“请输入要打印的的行数:“); scanf(“%d“, for(i=0;i #define N 80 int main() char strN,ch,i,j=0;printf(“请输入一个字符串:“); gets(str);printf(
15、“请输入待删除的字符:“); 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 6 int main() char strMN,tempN,i,j;printf(“请输入%d 个字符串:“,M); for(i=0;
16、i0) strcpy(temp,strj); strcpy(strj,strj+1); strcpy(strj+1,temp); printf(“排序后的字符串:n“); for(i=0;i #define N 80 int main() char strN,i,cnt;printf(“请输入一个英文句子,以回车结束:“); gets(str); if(str0= |str0=0) cnt=0; else cnt=1; for(i=0;stri!=0;i+) if(stri= printf(“该句子一共含有%d 个单词n“,cnt); return 0; 36.现有一实型一维数组,请编程分别找
17、出其中的最大值和最小值,并将最大值与数组的最 后一个元素交换,最小值与数组的第一个元素交换。 【参考程序】 #include #define N 10 int main() float aN,t; int ma,mi,i;printf(“请输入%d 个实数:“); for(i=0;iama) ma=i; if(ai #define N 5 int main() int aNN,i,j,s=0;printf(“请输入一个方阵:n“); for(i=0;i #define N 10 int main() int aN,i,t;printf(“请输入%d 个整数:“,N); for(i=0;i #d
18、efine N 100 int main() int aN,i,j; for(i=0;i #define N 81 int 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 10 int myseek(int a,int
19、len,int n) int i,cnt=0; for(i=0;i int isprime(int n) int i; for(i=2;i*i 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;i #define N 10 void bubble_sort(int arr,int n) int i,j,t; for(i=0;i #define N 10 void select_sort(int arr,int n) int i,j,t,k; for(i=0;i #d
20、efine N 81 void delete_char(char str,char ch) int i,j=0; for(i=0;stri!=0;i+) if(stri!=ch) strj+=stri; strj=0; int main() char sN,ch;printf(“请输入一个字符串:“); gets(s);printf(“请输入待删除字符:“); ch=getchar(); delete_char(s,ch);printf(“删除指定字符后的字符串:%sn“,s); return 0; 47. 输入 3 个数,判断能否构成三角形 【参考程序】#include int main()
21、 float a,b,c; scanf(“%f%f%f“, if(acelse printf(“边长为%f,%f,%f 的三条边不能构三角形.n“,a,b,c);return 0; 48. 从键盘输入若干整数(数量不定) ,求其中所有非负数的各,直到和大于 1000,程序 结束。 【参考程序】#include int main() int n,s; s=0; do printf(“请输入一个整数:“);scanf(“%d“, if(n0) s+=n; printf(“s=%dn“,s); while(s int main() int count, in,s=0; scanf(“%d“, pri
22、ntf(“%d 是一个“, in);count =0; if(in #define N 81 int rec_strlen(char str) if(str0=0) return 0; return rec_strlen( int non_rec_strlen(char str) int i; for(i=0;stri!=0;i+); return i; int main() char sN;printf(“请输入一个字符串:“); gets(s);printf(“递归函数:该字符串长度为%dn“,rec_strlen(s); printf(“非递归函数:该字符串长度为%dn“,non_rec_strlen(s); return 0;