C语言经典100例80
题目 76
题目: 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) #include #define R register // 指针函数这部分内容之前我并没有学习过 // 这里直接复现一下 // 可能写的很奇怪( int n; double *odd(R int n)//奇数 { double *sum; (*sum) = 0.0; for(R int i = 1;i <= n;i+=2) (*sum) += 1/(double)i; return sum; } double *even(R int n)//偶数 { double *sum; (*sum) = 0.0; for(R int i = 2;i <= n;i+=2) (*sum) += 1/(double)i; return sum; } int main() { scanf("%d",&n); double *result=NULL; if(n & 1) result = odd(n); else result = even(n); printf("%lf",*result); } 题目 77
题目: 填空练习(指向指针的指针) #include #define R register char *s[] = {"man","woman","girl","boy"}; char **q; int main() { for(R int i = 0 ;i < 4;i++) { // 第一种填法 q = &s[i]; // 第二种填法 // q = (s+i); printf("%s ",*q); } } 题目 78
题目: 找到年龄最大的人,并输出。
//原题目是纠错,这里直接给出程序 #include #define R register struct person { char name[20]; int age; }p[5] = {"li",18,"zhi",17,"san",26,"si",42}; // 这里没用指针写,可以想想用指针怎么写 int main() { int mxx = -1,pos; for(R int i = 0; i <= 3;i++) { if(mxx < p[i].age) { pos = i; mxx = p[i].age; } } printf("%s,%d",p[pos].name,mxx); } 题目 79
题目: 字符串排序。 #include #include #define R register //按字典序排序,从小到大 // 其实就是ascii码排序 char s1[20],s2[20],s3[20]; inline void sswap(char *str1,char *str2) { //strcpy(a,b) 将b的内容复制到a中 char p[20]; strcpy(p,str1); strcpy(str1,str2); strcpy(str2,p); } int main() { scanf("%s",s1);scanf("%s",s2);scanf("%s",s3); /* strcmp(a,b): >0 字符串a的字典序比b大 =0 字符串a = 字符串 b <0 字符串a 的字典序比b小 */ if(strcmp(s1,s2)>0) sswap(s1,s2); if(strcmp(s1,s3)>0) sswap(s1,s3); if(strcmp(s2,s3)>0) sswap(s2,s3); printf("%s %s %s",s1,s2,s3); } 题目 80
题目: 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,第二只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? #include #define R register // 通过枚举查看哪个结果符合题目要求 int main() { int tmp,n = 1; bool flg = false; for(;;n++) { flg = false;tmp = n; for(R int i = 1; i <= 5; i++) { // 满足题目要求的动作就继续 // 不满足题目要求就跳出,flg标记是不是五只猴子进行了动作 if((tmp - 1) % 5 == 0) tmp = (tmp - 1) / 5 * 4; else { flg = true; break; } } if(!flg) break; } printf("%d ", n); return 0; }