23、给定程序中fun函数的功能是:给一维数组a输入任意4个整数,并按下列的规律输出。例如输入1,2,3,4,程序运行后输出以下方阵。
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
#include <stdio.h>
#define M 4
/**************found**************/
void fun(int a) 改为:void fun(int a[M])
{ int i,j,k,m;
printf("Enter 4 number : ");
for(i=0; i<M; i ) scanf("%d",&a[i]);
printf("\n\nThe result :\n\n");
for(i=M;i>0;i--)
{ k=a[M-1];
for(j=M-1;j>0;j--)
/**************found**************/
aa[j]=a[j-1]; 改为:a[j]=a[j-1];
a[0]=k;
for(m=0; m<M; m ) printf("%d ",a[m]);
printf("\n");
}
}
main()
{ int a[M];
fun(a); printf("\n\n"); }
24、在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。给定程序中fun函数的功能是:计算数组元素中值为正数的平均值(不包括0)。例如,数组中元素中值依次为:39,-47,21,2,-8,15,0,则程序运行结果为19.250000。
#include <stdio.h>
double fun ( int x[])
{
/************found************/
int sum = 0.0; 改为:double sum = 0.0;
int c=0, i=0;
while (x[i] != 0)
{ if (x[i] > 0) { sum = x[i]; c ; }
i ; }
/************found************/
sum \= c; 改为:sum /= c;
return sum;
}
main( )
{ int x[1000]; int i=0;
printf( "\nPlease enter some data (end with 0): " );
do { scanf("%d", &x[i]); } while (x[i ] != 0);
printf("%f\n", fun ( x ));
}
25、给定程序中fun函数的功能是:根据整形形参m,计算如下公式的值:
例如,若m中的值为5,则应输出1.463611。
#include <stdio.h>
double fun ( int m )
{ double y = 1.0 ;
int i;
/**************found**************/
for(i = 2 ; i < m ; i ) 改为:for(i = 2 ; i <= m ; i )
/**************found**************/
y = 1 / (i * i) ; 改为:y = 1.0 / (i * i) ;
return( y ) ;
}
main( )
{ int n = 5 ;
printf( "\nThe result is %lf\n", fun ( n ) ) ; }
26、给定程序中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。例如,若输入“I am a student to take the examination.”,则应输出“I aM A studenT tO takE thE examinatioN.”。
#include <ctype.h>
#include <stdio.h>
void fun( char *p )
{ int k = 0;
for( ; *p; p )
if( k )
{
/**********found***********/
if( p == ' ' ) 改为:if(* p == ' ' )
{ k = 0;
/**********found***********/
* (p-1) = toupper( *( p - 1 ) ) 改为:* (p-1) = toupper( *( p - 1 ) );
}
}
else k = 1;
}
main( )
{ char chrstr[64];
int d ;
printf( "\nPlease enter an English sentence within 63 letters: ");
gets(chrstr); d=strlen(chrstr) ;
chrstr[d] = ' ' ; chrstr[d 1] = 0 ;
printf("\n\nBefore changing:\n %s", chrstr);
fun(chrstr);
printf("\nAfter changing:\n %s", chrstr);
}
27、给定程序中fun函数的功能是:将n个无序整数从小到大排序。
#include <stdio.h>
#include <stdlib.h>
fun ( int n, int *a )
{ int i, j, p, t;
for ( j = 0; j<n-1 ; j )
{ p = j;
/************found************/
for ( i=j 1; i<n-1 ; i ) 改为:for ( i=j 1; i<n ; i )
if ( a[p]>a[i] )
/************found************/
t=i; 改为:p=i;
if ( p!=j ) { t = a[j]; a[j] = a[p]; a[p] = t; }
}
}
putarr( int n, int *z )
{ int i;
for ( i = 1; i <= n; i , z )
{ printf( "%4d", *z );
if ( !( i%10 ) ) printf( "\n" ); }
printf("\n");
}
main( )
{ int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa );
fun( n, aa );
printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa ); }
28、给定程序中fun函数的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。
#include <stdio.h>
#include <ctype.h>
void fun (char *s)
{
/**********found***********/
while(*s!='@') 改为:while(*s!='\0')
{ if(*s>='A' & *s<='Z' || *s>='a' && *s<='z')
{ if(*s=='Z') *s='A';
else if(*s=='z') *s='a';
else *s = 1;
}
/**********found***********/
(*s) ; 改为:s ;
}
}
main( )
{ char s[80];
printf("\n Enter a string with length < 80. :\n\n "); gets(s);
printf("\n The string : \n\n "); puts(s);
fun ( s );
printf ("\n\n The Cords :\n\n "); puts(s);
}
29、给定程序中fun函数的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。(注意:字符串的长度最长允许为79)。
#include <stdio.h>
#include <string.h>
/**********found***********/
void fun ( char s[], int n ) 改为:void fun ( char *s, int n )
{ char a[80] , *p;
int i;
/**********found***********/
s=p; 改为:p=s;
for(i=0; i<n; i ) a[i]='*';
do
{ a[i]=*p;
i ; }
/**********found***********/
while(*p); 改为:while(*p );
a[i]=0;
strcpy(s,a);
}
main( )
{ int n; char s[80];
printf("\nEnter a string : "); gets(s);
printf("\nThe string \"%s\"\n",s);
printf("\nEnter n ( number of * ) : "); scanf("%d",&n);
fun(s,n);
printf("\nThe string after inster : \"%s\" \n" ,s);
}
30、给定程序中fun函数的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出结果为a=65 b=60。
#include <stdio.h>
/**********found**********/
void fun ( int a, b ) 改为:void fun ( int * a, int * b )
{ int t;
/**********found**********/
t = b; b = a ; a = t; 改为:t = *b; *b = *a ; *a = t;
}
main ( )
{ int a, b;
printf ( "Enter a , b : "); scanf ( "%d%d", &a, &b );
fun ( &a , &b ) ;
printf (" a = %d b = %d\n ", a, b );
}
31、给定程序中fun函数的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1efg”;而当a所指字符串中的内容为“1234”,b所指字符串中的内容为时“abcdefg”,c所指数组中的内容应该为“1g2f3e4dcba”。
#include <stdio.h>
#include <string.h>
void fun( char *a, char *b, char *c )
{ int i , j; char ch;
i = 0; j = strlen(b)-1;
/************found************/
while ( i > j ) 改为:while ( i < j )
{ ch = b[i]; b[i] = b[j]; b[j] = ch;
i ; j--; }
while ( *a || *b ) {
if ( *a ) { *c = *a; c ; a ; }
if ( *b ) { *c = *b; c ; b ; }
}
/************found************/
c = 0; 改为:*c = ‘\0'
}
main( )
{ char s1[100],s2[100],t[200];
printf("\nEnter s1 string : ");scanf("%s",s1);
printf("\nEnter s2 string : ");scanf("%s",s2);
fun( s1, s2, t );
printf("\nThe result is : %s\n", t );
}
32、给定程序中fun函数的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如:若输入edcba,则应输出abcde。
#include <stdio.h>
void fun( char t[] )
{ char c;
int i, j;
/**********found***********/
for( i = strlen( t ); i; i-- ) 改为:for( i = strlen( t ); i>0; i-- )
for( j = 0; j < i; j )
/**********found***********/
if( t[j] < t[ j 1 ] ) 改为:if( t[j] > t[ j 1 ] )
{ c = t[j]; t[j] = t[ j 1 ]; t[j 1 ] = c; }
}
main( )
{ char s[81];
printf( "\nPlease enter a character string: " );
gets( s );
printf( "\n\nBefore sorting:\n \"%s\"", s );
fun( s );
printf( "\nAfter sorting decendingly:\n \"%s\"", s );
}
33、给定程序中fun函数的功能是:将一个八进制数字字符组成的字符串转换为其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。例如,若输入77777,则输出将是32767。
#include <stdio.h>
int fun( char *p )
{ int n;
/**********found**********/
n= *P-'o'; 改为:n= *p-'0';
p ;
while( *p!=0 ) {
/**********found**********/
n=n*7 *P-'o'; 改为:n=n*8 *p-'0';
p ; }
return n;
}
main()
{ char s[6]; int i; int n;
printf("Enter a string (Ocatal digits): "); gets(s);
if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }
for(i=0; s[i]; i )
if(s[i]<'0'||s[i]>'7')
{ printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }
printf("The original string: "); puts(s);
n=fun(s);
printf("\n%s is convered to integer number: %d\n\n",s,n);
}
34、给定程序中fun函数的功能是:求出以下分数序列的前n项之和。
和的值通过函数值返回main函数。
#include <stdio.h>
/**************found**************/
fun (int n ) 改为:double fun (int n )
{ int a = 2, b = 1, c, k ;
double s=0.0 ;
for ( k = 1; k <= n; k )
{ s = s 1.0 * a / b ;
/**************found**************/
c = a; a = b; b = c; 改为:c = a; a = b; b = c;
}
return(s) ;
}
main( )
{ int n = 5 ;
printf( "\nThe value of function is: %lf\n", fun ( n ) ) ; }
35、给定程序中fun函数的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,t所指字符串的内容为“ab”,则函数返回整数3.
#include <stdio.h>
#include <string.h>
int fun (char *s, char *t)
{ int n; char *p , *r;
n = 0;
while ( *s )
{ p = s; r = t;
while ( *r )
/************found************/
if ( r == p ) { 改为:if ( *r == *p ) {
/************found************/
r ; p 改为:r ; p ;
}
else break;
/************found************/
if ( r == '\0' ) 改为:if ( *r == '\0' )
n ;
s ;
}
return n;
}
main()
{ char s[100], t[100]; int m;
printf("\nPlease enter string S:"); scanf("%s", s);
printf("\nPlease enter substring t:"); scanf("%s", t);
m = fun( s, t);
printf("\nThe result is: m = %d\n", m); }
36、给定程序中fun函数的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。例如,当s所指的字符串为“ABCDE”时,则t所指的字符串应为“EDCBAABCDE”
#include <stdio.h>
#include <string.h>
void fun (char *s, char *t)
{
/************found************/
int i; 改为:int i, s1;
sl = strlen(s);
for (i=0; i<sl; i )
/************found************/
t[i] = s[sl-i]; 改为:t[i] = s[sl-i-1];
for (i=0; i<sl; i )
t[sl i] = s[i];
t[2*sl] = '\0';
}
main( )
{ char s[100], t[100];
printf("\nPlease enter string s:"); scanf("%s", s);
fun(s, t);
printf("The result is: %s\n", t); }
37、给定程序中fun函数的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
#include <stdio.h>
void fun(char *s)
{ int i,j;
for(i=0,j=0; s[i]!='\0'; i )
if(s[i]>='0' && s[i]<='9')
/**********found**********/
s[j]=s[i]; 改为:s[j ]=s[i];
/**********found**********/
s[j]="\0"; 改为:s[j]= ‘\0’;
}
main( )
{ char item[80];
printf("\nEnter a string : ");gets(item);
printf("\n\nThe string is : \"%s\"\n",item);
fun(item);
printf("\n\nThe string of changing is : \"%s\"\n",item ); }
38、给定程序中fun函数的功能是:统计字符串中各元音字母(即A,E,I,O,U)的个数。注意,字母不分大小写。例如输入:THIs is a boot,则输出应该是:1、0、2、2、0。
#include <stdio.h>
/**********found**********/
fun ( char *s, int num[5] ) 改为:void fun(char *s, int num[5] )
{ int k, i=5;
for ( k = 0; k<i; k )
/**********found**********/
num[i]=0; 改为:num[k]=0;
for (; *s; s )
{ i = -1;
/**********found**********/
switch ( s ) 改为:switch ( *s )
{ case 'a': case 'A': {i=0; break;}
case 'e': case 'E': {i=1; break;}
case 'i': case 'I': {i=2; break;}
case 'o': case 'O': {i=3; break;}
case 'u': case 'U': {i=4; break;} }
if (i >= 0) num[i] ; }
}
main( )
{ char s1[81]; int num1[5], i;
printf( "\nPlease enter a string: " ); gets( s1 );
fun ( s1, num1 );
for ( i=0; i < 5; i ) printf ("%d ",num1[i]); printf ("\n"); }
39、给定程序中fun函数的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
#include <stdio.h>
long fun (long num)
{
/************found************/
long k; 改为:long k=1;
do
{ k*=num%10 ;
/************found************/
num\=10 ; 改为:num/=10 ;
} while(num) ;
return (k) ;
}
main( )
{ long n ;
printf("\Please enter a number:") ; scanf("%ld",&n) ;
printf("\n%ld\n",fun(n)) ; }


