第三十一题
题目
给定程序modi1.c中,函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c所指数组中,形成一个新的字符串。
例如,若主函数中a字符串为: aBCDeFgH
主函数中b字符串为: ABcd
则c中的字符串应为: aBcdeFgH。
#include <stdio.h>
#include <string.h>
void fun(char *p ,char *q, char *c)
{
/************found************/
int k = 1;
/************found************/
while( *p != *q )
{ if( *p<*q ) c[k]=*q;
else c[k]=*p;
if(*p) p++;
if(*q) q++;
k++;
}
}
main()
{ char a[10]="aBCDeFgH", b[10]="ABcd", c[80]={'\0'};
fun(a,b,c);
printf("The string a: "); puts(a);
printf("The string b: "); puts(b);
printf("The result : "); puts(c);
getchar();
}
解析
int k = 0;
while( *p != '\0'|| *q != '\0' )
第三十二题
题目
给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。
例如:若
a={ 1 4 3 2
8 6 5 7
11 10 12 9
13 14 15 16}(矩阵)
则结果应为1,5,9,13,
#include <stdio.h>
#define N 4
void fun(int a[][N], int b[])
{ int i, j;
for (i=0; i<N; i++)
{
/**********found**********/
b[i] = a[0][0];
/**********found**********/
for (j=1; j<N-1; j++)
/**********found**********/
if ( b[i] < a[i][j] )
b[i] = a[i][j];
}
}
main()
{ int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i;
fun(a,b);
for (i=0; i<N; i++) printf("%d,", b[i]);
printf("\n");
getchar();
}
解析
b[i] = a[i][0];
for (j=1; j<N; j++)
if ( b[i] > a[i][j] )
第三十三题
题目
给定程序MODI1. C中函数fun的功能是:将一个十进制整数转换成r(二~十六)进制形式。
例如:输入125 16,则输出:7D
输入9 2,则输出:1001
#include <stdio.h>
void fun(int num, int r)
{ int i = 0, a[32];
char b[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
do
{
a[i] = num % r;
/************found************/
num %= r;
i++;
/************found************/
} while(num==0);
/************found************/
for(i; i>0; --i)
printf("%c", b[a[i]]);
}
int main()
{ int num, r;
printf("\n请输入整数和进制:");
scanf("%d %d", &num, &r);
fun(num, r);
printf("\n");
return 0;
}
解析
num /= r;
while(num>0);
for(i=i-1; i>=0; --i)
第三十四题
题目
给定程序MODI1. C中,函数fun的功能是:逐个判断字符串s2中的字符是否在字符串s1中出现过,并把出现过的字符按照原来在s2中的顺序形成新字符串s3,不去除重复字符。
例如:当s1为:”abcdefghijk",s2为: “zbcyedmnpggn”时,则s3应该是: "bcedgg”
#include <stdio.h>
#include <string.h>
void fun( char *s1, char *s2, char *s3)
{ int i,j,k=0;
for(i = 0; i<strlen(s2); i++)
{ for(j = 0; j<strlen(s1); j++)
/**********************found***********************/
if (s2[i] != s1[j])
break;
/**********************found***********************/
if (j>=strlen(s1))
/**********************found***********************/
s3[++k]=s2[i];
}
s3[k] = '\0';
}
void main()
{ char s1[128], s2[128], s3[128];
printf("Please input string1:");
gets(s1);
printf("Please input string2:");
gets(s2);
fun(s1,s2,s3);
printf("string:%s\n", s3);
}
解析
if (s2[i] == s1[j])
if (j<strlen(s1))
s3[k++]=s2[i];
第三十五题
题目
给定程序MODI1. C中,函数fun的功能是:将a串奇数位置(注意:不是下标)上的字符与
b串偶数位置上的字符交叉合并,形成一个新字符串存入c所指的存储空间。合并过程中,任何一个字符串到达串尾,则合并过程结束。
例如:a串为: asderty
b串为: zxcvb
则c串为: axdvr
#include <stdio.h>
void fun( char *a,char *b,char *c)
{ int i=0,j=0;
while( a[i]!='\0' && b[i]!='\0')
{
c[j++]=a[i];
/************found************/
if(b[i+1]=='\0')
c[j++]=b[i+1];
else
/************found************/
continue;
if (a[i+1]=='\0')
break;
i+=2;
}
/************found************/
c[j+1]='\0';
}
main()
{ char a[40]="asderty",b[40]="zxcvb",c[80];
fun(a,b,c);
puts(c);
}
解析
if(b[i+1] != '\0')
break;
c[j]='\0';
第三十六题
题目
#include <stdio.h>
#include <math.h>
/**********found**********/
double fun(double a, dounle x0)
{ double x1, y;
x1=(x0+ a/x0)/2.0;
/**********found**********/
if( fabs(x1-xo)>0.00001 )
y=fun(a,x1);
else y=x1;
return y;
}
main( )
{ double x;
printf("Enter x: "); scanf("%lf",&x);
printf("The square root of %lf is %lf\n",x,fun(x,1.0));
getchar();
}
解析
double fun(double a, double x0)
if( fabs(x1-x0)>0.00001 )
第三十七题
题目
#include <stdio.h>
/**************found**************/
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;
}
return(s) ;
}
main( )
{ int n = 5 ;
printf( "\nThe value of function is: %lf\n", fun ( n ) ) ;
getchar();
}
解析
double fun (int n )
c = a; a += b; b = c;
第三十八题
题目
给定程序MODI1.C中函数fun的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的原值为3。程序运行后a中的值为3,b中的值为8。
#include <stdio.h>
/*********found**********/
void fun(int x,int y)
{
int t;
/*********found**********/
t=x;x=y;y=t;
}
main()
{
int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d, %d\n",a,b);
getchar();
}
解析
void fun(int *x,int *y)
t=*x;*x=*y;*y=t;
第三十九题
题目
给定程序MODI1. C中,函数fun的功能是:将字符串s1和s2合并形成新字符串s3,假定s1
字符串的长度为L1,s2的长度为L2。合并方法为:把s2的第L2-i-1个字符插入到原s1的第i个字符后,如果s1比s2长,则s1剩余的部分按在s1中的顺序放在新生成的s3后;如果s2比s1长,则s2剩余的部分按在s2中的顺序的逆序放在新生成的s3后。
例如:当s1为:“123456789012345”,
s2为:“abcedfghijk”时,
输出结果应该是: “1k2j3i4h5g6f7 e8d9c0b1a2345”
#include <stdio.h>
#include <string.h>
void fun(char *s1, char *s2, char *s3)
{
int i,j,L2;
L2=strlen(s2);
for(i=0,j=0;(s1[i]!='\0')&&(s2[i]!='\0');i++,j=j+2)
{
s3[j]=s1[i];
/***********found**********/
s3[j+1]=s2[i];
}
/***********found**********/
if(s1[i]=='\0')
for(;s1[i]!='\0';i++,j+=1)
s3[j]=s1[i];
else if (s2[i]!='\0')
for(;s2[i]!='\0';i++,j++)
s3[j]=s2[L2-1-i];
/***********found**********/
s3[i]='0';
}
void main()
{
char s1[128], s2[128], s3[255];
printf("Please input string1:");
gets(s1);
printf("Please input string2:");
gets(s2);
fun(s1,s2,s3);
printf("string %s\n", s3);
}
解析
s3[j+1]=s2[L2-i-1];
if(s1[i]!='\0')
s3[j]='\0';
第四十题
题目
#include <stdio.h>
/************found************/
int fun ( int n )
{ float A=1; int i;
/************found************/
for (i=2; i<n; i++)
A = 1/(1+A);
return A ;
}
main( )
{ int n ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n", n, fun(n) ) ;
getchar();
}
解析
float fun ( int n )
for (i=2; i<=n; i++)
标签:s3,int,s2,31,40,程序修改,fun,found,s1 From: https://blog.csdn.net/2401_82772407/article/details/142266634