《C语言编程案例》由会员分享,可在线阅读,更多相关《C语言编程案例(18页珍藏版)》请在金锄头文库上搜索。
1、C 语言编程经典 100 例(四) 【程序 76】 题目:编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+.+1/n,当输入 n 为奇数时, 调用函数1/1+1/3+.+1/n(利用指针函数) 1.程序分析: 2.程序源代码:main() #include “stdio.h“ main() float peven(),podd(),dcall(); float sum; int n; while (1) scanf(“%d“,if(n1)break; if(n%2=0) printf(“Even=“);sum=dcall(peven,n); else printf(“Odd=“)
2、;sum=dcall(podd,n); printf(“%f“,sum); float peven(int n) float s; int i; s=1; for(i=2;i=n;i+=2)s+=1/(float)i; return(s); float podd(n) int n; float s; int i; s=0; for(i=1;i=n;i+=2)s+=1/(float)i; return(s); float dcall(fp,n) float (*fp)(); int n; float s; s=(*fp)(n); return(s); = 【程序 77】 题目:填空练习(指向指针
3、的指针) 1.程序分析: 2.程序源代码:main() char *s=“man“,“woman“,“girl“,“boy“,“sister“; char *q; int k; for(k=0;k5;k+) ;/*这里填写什么语句*/printf(“%sn“,*q); = 【程序 78】 题目:找到年龄最大的人,并输出。请找出程序中有什么问题。 1.程序分析: 2.程序源代码:#define N 4 #include “stdio.h“ static struct man char name20; int age; personN=“li“,18,“wang“,19,“zhang“,20,“s
4、un“,22; main() struct man *q,*p; int i,m=0;p=person; for (i=0;iN;i+) if(mp-age)q=p+;m=q-age; printf(“%s,%d“,(*q).name,(*q).age); = 【程序 79】 题目:字符串排序。 1.程序分析: 2.程序源代码:main() char *str120,*str220,*str320; char swap(); printf(“please input three stringsn“); scanf(“%s“,str1); scanf(“%s“,str2); scanf(“%s“
5、,str3); if(strcmp(str1,str2)0) swap(str1,str2); if(strcmp(str1,str3)0) swap(str1,str3); if(strcmp(str2,str3)0) swap(str2,str3); printf(“after being sortedn“); printf(“%sn%sn%sn“,str1,str2,str3); char swap(p1,p2) char *p1,*p2; char *p20; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); = 【程序 80】 题目:海滩上有一堆桃子,
6、五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份, 又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样 做的,问海滩上原来最少有多少个桃子? 1.程序分析: 2.程序源代码:main()int i,m,j,k,count; for(i=4;i10000;i+=4) count=0; m=i; for(k=0;k5;k+) j=i/4*5+1;i=j;if(j%4=0)count+;elsebreak; i=m;if(count=4)printf(“%dn“,count);bre
7、ak; 【程序 81】 题目:809*?=800*?+9*?+1 其中?代表的两位数,8*?的结果为两位数,9*?的结果为 3 位数。求?代表的两位数,及 809*?后的结果。 1.程序分析: 2.程序源代码:output(long b,long i) printf(“n%ld/%ld=809*%ld+%ld“,b,i,i,b%i); main() long int a,b,i; a=809; for(i=10;i100;i+) b=i*a+1; if(b=1000 = 【程序 82】 题目:八进制转换为十进制 1.程序分析: 2.程序源代码:main() char *p,s6;int n;
8、p=s;gets(p); n=0; while(*(p)!=0) n=n*8+*p-0; p+; printf(“%d“,n); = 【程序 83】 题目:求 07 所能组成的奇数个数。 1.程序分析: 2.程序源代码:main() long sum=4,s=4; int j; for(j=2;j=8;j+)/*j is place of number*/ printf(“n%ld“,sum); if(j=2) s*=7; else s*=8; sum+=s; printf(“nsum=%ld“,sum); = 【程序 84】 题目:一个偶数总能表示为两个素数之和。 1.程序分析: 2.程序源
9、代码:#include “stdio.h“ #include “math.h“ main() int a,b,c,d; scanf(“%d“, for(b=3;b=a/2;b+=2) for(c=2;c=sqrt(b);c+) if(b%c=0) break; if(csqrt(b) d=a-b; else break; for(c=2;c=sqrt(d);c+) if(d%c=0) break;if(csqrt(d) printf(“%d=%d+%dn“,a,b,d); = 【程序 85】 题目:判断一个素数能被几个 9 整除 1.程序分析: 2.程序源代码:main() long int
10、m9=9,sum=9; int zi,n1=1,c9=1; scanf(“%d“, while(n1!=0) if(!(sum%zi) n1=0; else m9=m9*10; sum=sum+m9; c9+; printf(“%ld,can be divided by %d “9“,sum,c9); = 【程序 86】 题目:两个字符串连接程序 1.程序分析: 2.程序源代码:#include “stdio.h“ main() char a=“acegikm“; char b=“bdfhjlnpq“; char c80,*p; int i=0,j=0,k=0; while(a!=0i+; e
11、lse ck=bj+; k+; ck=0; if(a=0) p=b+j;else p=a+i; strcat(c,p); puts(c); = 【程序 87】 题目:回答结果(结构体变量传递) 1.程序分析: 2.程序源代码:#include “stdio.h“ struct student int x; char c; a; main() a.x=3; a.c=a; f(a); printf(“%d,%c“,a.x,a.c); f(struct student b) b.x=20; b.c=y; = 【程序 88】 题目:读取 7 个数(150)的整数值,每读取一个值,程序打印出该值个数的。
12、 1.程序分析: 2.程序源代码:main() int i,a,n=1; while(n=7) do scanf(“%d“,while(a1|a50); for(i=1;i=a;i+)printf(“*“); printf(“n“); n+; getch(); =【程序 89】 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密 规则如下:每位数字都加上 5,然后用和除以 10 的余数代替该数字,再将第一位和第四位交换, 第二位和第三位交换。 1.程序分析: 2.程序源代码:main() int a,i,aa4,t; scanf(“%d“, aa0=a%10; aa1=a%100/10; aa2=a%1000/100; aa3=a/1000; for(i=0;i=3;i+)aa+=5;aa%=10; for(i=0;i=3/2;i+)t=aa;aa=aa3-i;aa3-i=t; for(i=3;i=0;i-) printf(“%d“,aa); =【程序 90】 题目:专升本一题,读结果。 1.程序分析: 2.程序源代码:#include “stdio.h“ #define M 5 main() int a=1,2,3,4,5; int i,j,t; i=0;j=M-1; while(i t=*(a+i); *(a+i)=*(a+