继上次程序设计题后续。
第11题:在此程序中,函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在所指的数组中。例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符C的A SCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后所指的数组中的内容应是"BDF12345"。
#include<stdio.h> void fun(char *s,char t[]) { int i; for(i=0;*(s+i)!='\0';i++) { if(*(s+i)%2!=1||i%2!=0) { *(t++)=*(s+i); } } *(t++)=0; } void main() { char s[100],t[100]; gets(s); printf("\n\n"); fun(s,t); puts(t); }
第12题:在此程序中,编写一个函数fun, 它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入"abc4Efg", 则应输出"aBc4EFg".
#include<stdio.h> void fun(char *ss) { int i; for(i=0;*(ss+i)!='\0';i++) { if(*(ss+i)<='z'&&*(ss+i)>='a'&&i%2==1) *(ss+i)-=32; } } void main() { char tt[81]; gets(tt); printf("\n\n"); fun(tt); puts(tt); }
第13题:在此程序中,编写函数fun,其功能是:将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a=45,b=12,调用该函数c=4251。
#include<stdio.h> void fun(int a,int b,long *c) { *c=(a%10)*1000+(a/10%10)*10+(b%10)*100+(b/10%10); } void main() { int a,b; long c; scanf("%d %d",&a,&b); fun(a,b,&c); printf("%ld",c); }
第14题:在此程序中,m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平
均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、 30、 40、 50、 60、 70、80、 90时,函数返回的人数应该是4, below中的数据应为10、20、 30、 40。
#include<stdio.h> int fun(int score[],int m,int below[]) { int i,n=0; float x; for(i=0,x=0;i<m;i++) { x=score[i]/m+x; } for(i=0;i<m;i++) { if(score[i]<x) { n++; *(below++)=score[i]; } } return n; } void main() { int i,n,below[9]; int score[9]={10,20,30,40,50,60,70,80,90}; n=fun(score,9,below); printf("低于平均成绩人数为%d\n",n); for(i=0;i<n;i++) printf("%d ",below[i]); }
第15题:在此程序中,编写函数void fun (int x, int pp[], int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1、3、5. 15。
#include<stdio.h> void fun(int x,int pp[],int *n) { int i; for(i=1,*n=0;i<x;i++) if(x%i==0&&i%2!=0) pp[(*n)++]=i; } void main() { int x,aa[1000],n,i; scanf("%d",&x); fun(x,aa,&n); for(i=0;i<n;i++) printf("%d ",aa[i]); }
第16题:在此程序中,编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组。例如,若输入17,5,则应输出19、23、29、31、37。
#include<stdio.h> void fun(int m,int k,int xx[]) { int i; while(k) { m++; for(i=2;i<m;i++) { if(!(m%i)) break; } if(i>=m) { *(xx++)=i; k--; } } } void main() { int m,n,zz[100]; scanf("%d %d",&m,&n); fun(m,n,zz); for(m=0;m<n;m++) printf("%d ",zz[m]); }
第17题: 在此程序中,编写一个函数int fun(int s, int t, int k),用来求出数组的最大元素在数组中的下标并存放在k所指向的存储单元中。例如,输入如下整数:876 675 896101 301 401 980 431 451 777则输出结果为6,980。
#include<stdio.h> int fun(int *s,int t,int *k) { for(*k=t;t>=0;t--) { if(s[*k]<s[t]) *k=t; } return s[*k]; } void main() { int a[10]={876,675,896,101,301,401,980,431,451,777},k; fun(a,10,&k); printf("%d,%d",k,a[k]); }
第18题:在此程序中,编写函数fun,期能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。
公式:p=m!/n!(m-n)!
例如: m=12, n= 8时,运行结果为495.000000。
#include<stdio.h> float fun(int m,int n) { float p,p1=1.0,p2=1.0,p3=1.0; int i; for(i=1;i<=m;i++) p1=i*p1; for(i=1;i<=n;i++) p2=i*p2; for(i=1;i<=m-n;i++) p3=i*p3; return p1/p2/p3; } void main() { printf("p=%f\n",fun(12,8)); }
第19题:在此程序中,编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如,若n为1000时,程序输出应为: s = 153.909064。
#include<stdio.h> #include<math.h> double fun(int n) { int i; double x=0; for(i=0;i<1000;i++) if(i%3==0&&i%7==0) x+=i; return sqrt(x); } void main() { printf("s=%f",fun(1000)); }
第20题:在此程序中,编写函数fun,功能是:计算并输出下列多项式的值。
S=1/(1*2)+1/(2*3)+1/(3*4)+......+1/(n*(n+1))
例如,当n= 10时,函数值为0.909091。
#include<stdio.h> double fun(int n) { int i; double s=0; for(i=1;i<=n;i++) s=s+1.0/i/(i+1); //或者用数学方式s=1-1.0/(n+1); return s; } void main() { printf("s=%f",fun(10)); }
通过这么多次进行的模拟测验和所做的题目来看,很多题的思路是一样的,所以需要以后找出不同的,具有代表性的题目。
现在看起来都有一定难度了。
之前碰到二维数组和指针把我难哭了,看了一天才总结出来。
勤能补拙。我喜欢
撸代码就得撸多了才懂