发布时间 : 星期六 文章上机考试题2011秋季学期(验证正确)更新完毕开始阅读
for(h=0;h<=6;h++) {
if(i+j+h==k) n++; } return(n); }
void main() {int x,n;
scanf(\ n=fun(x);
printf(\ }
13. 编写函数void fun(char *str),功能:对形参str所指字符串中的字符按ASCII码升序排序。例如,下面程序运行时输入:The C Programming Language<回车> 输出: CLPTaaaeegggghimmnnorru #include
{
int i,j,t;
for(i=0;str[i]!='\\0';i++) {
for(j=i+1;str[j]!='\\0';j++) {
if(str[j] t=str[j];str[j]=str[i];str[i]=t; } } } } void main() {char s[100]; gets(s); fun(s); puts(s); } 14. 请编写函数void fun(int *a, int n, int y),它的功能是:把y值插入到有n个数的a数组中,a数组中的数已按由大到小的次序排好,y的值从键盘读入。 插入后,数组中的数仍然有序。对照下面三种情况运行程序: 1) 插在最前 2) 插在最后 3) 插在中间 若输入数11, 输出 20 18 16 14 12 11 10 8 6 4 2 输入数1, 输出 20 18 16 14 12 10 8 6 4 2 1 输入数33, 输出 33 20 18 16 14 12 10 8 6 4 2 #include void fun(int *a,int n,int y) { int i,j; if(y<=a[n-1]) a[n]=y; else if(y>a[0]) { for(i=n;i>=0;i--) a[i]=a[i-1]; a[0]=y; } else { for(i=0;i if(y<=a[i]&&y>a[i+1]) { for(j=n;j>=i+2;j--) { a[j]=a[j-1];} a[i+1]=y; break; } } } } void main() {int i,a[11]={20,18,16,14,12,10,8,6,4,2},x; void fun(int *,int n,int y); scanf(\ fun(a,10,x); for(i=0;i<11;i++) printf(\ } 15. 编写函数int fun(char *s1,char *s2),在字符串s1中统计字符串s2出现的次数并返回。若s2在s1中未出现,则返回0。例如: 若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4 若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find #include 5 #include int fun(char *s1,char *s2) { int i,j,p,n,num=0; for(i=0;s2[i]!='\\0';i++); n=i; for(i=0;s1[i]!='\\0';i++) { if(s1[i]==s2[0]) { p=1; for(j=i+1;s2[p]!='\\0';j++,p++) {if(s1[j]!=s2[p]) break;} if(p==n) num++; } } return num; } void main() { char a[80],b[80]; int n; printf(\input the first string:\ gets(a); printf(\input the second string:\ gets(b); n=fun(a,b); if(n==0) printf(\ else printf(\} 16. 编写函数int fun(char *str),功能是:统计字符串str中不同字符的个数并做为函数值返回。例如,下面程序运行时若输入:One world,One dream! 输出:n=13 #include { int i,j,num=1; for(i=1;str[i]!='\\0';i++) { for(j=0;j {if(str[i]==str[j]) break;} if(j==i) num++; } return num; } void main() {char s[80]; int n; gets(s); n=fun(s); printf(\} 17. 编写函数int fun(int m,int n,int *p),要求将范围[m,n]之间所有的fibonacci数写入p所指的一维数组中,fibonacci数的个数通过函数返回值带回。例如,[0,30]之间的fibonacci数有7个,它们是:1 2 3 5 8 13 21 ;[1000,32767]之间有7个,它们是:1597 2584 6765 10946 17711 28657 。 #include int fun(int m,int n,int *p) { int i,j=0,num=0; int a[1000]={1,2}; for(i=2;i<1000;i++) { a[i]=a[i-1]+a[i-2];} for(i=0;i<1000;i++) { if(a[i]>=m&&a[i]<=n) { num++; p[j]=a[i]; j++; } } return num; } void main() {int a,b,n,c[22],i; scanf(\ n=fun(a,b,c); for(i=0;i printf(\ printf(\ } 18. 编写函数char *fun(char *s1,char *s2,int n),将字符串s1中后面的n个字符复制到s2所指数组中,若s1不足n个字符,则用*在前端补齐至n个字符,写入s2中。函数返回字符串s2的指针。例如,下面程序运行时, 若输入:“abcd1234”和6,则输出“cd1234” 若输入:“abcd1234”和10,则输出 6 “**abcd1234” #include char *fun(char *s1,char *s2,int n) { int i,j,m; for(i=0;s1[i]!='\\0';i++); m=i; if(m>=n) { for(j=0,i=m-n;j<=n-1;i++,j++) s2[j]=s1[i]; s2[n]='\\0'; } else { for(j=0;j for(i=0,j=n-m;i<=m-1;i++,j++) s2[j]=s1[i]; s2[n]='\\0'; } return s2; } void main() {char c1[80],c2[80]; gets(c1); fun(c1,c2,6); puts(c2); puts(fun(c1,c2,30)); } 19. 编写函数void fun(char *a,char *b,char *c),逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 #include char *fun(char *s,char *b,char *c) { int i,j; for(i=0,j=0;i if(a[i]>b[i]) c[i]=a[i]; else c[i]=b[i]; } if(i==strlen(a)) { for(;j for(;i } void main() {char s[80]; gets(s); puts(fun(s)); } 20. 编写函数void fun(char *s),将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符原有的前后次序。 例如,若输入:num is 0532-66ouc78,OK. 执行结果为:num is -ouc,OK.05326678 #include int i,j=0,n,n1=0; int a[80]; for(i=0;s[i]!='\\0';i++); n=i; for(i=0;i if(s[i]>='0'&&s[i]<='9') { n1++; a[j]=s[i]; j++; } } for(i=0;i if(s[i]>='0'&&s[i]<='9') { for(j=i;j 7 } for(i=n-n1,j=0;i void main() {char a[80]; gets(a); fun(a); puts(a); } 8