C语言编程练习day24

题目:实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。

输入:数组个数N。数组的N个数据元素

输出:数组中的奇数以及这些奇数之和.

优化目标:无

#include 

#define MAXN 10

/*
*判断一个数是否为奇数
*@n:待判断的数
*/
int even(int n){
	if(n % 2 != 0){
		return 1;//n为奇数
	}else{
		return 0;//n为偶数
	}
}
/*
*统计奇数的和
*@List[]:待判断的数组
*@N:数组中元素的个数
*/
int OddSum( int List[], int N ){
	int sum = 0;
	for(int i=0; i<N; i++){
		if(even(List[i])){
			printf("%d ", List[i]);
			sum += List[i];
		}
	}
	printf("\n");
	return sum;
}

int main()
{    
    int List[MAXN], N, i;

    scanf("%d", &N);
    for ( i=0; i<N; i++ ) {
        scanf("%d", &List[i]);
    }
    
    printf("The sum is: %d\n", OddSum(List, N));
    
    return 0;
}

题目:实现一个求整数的逆序数的简单函数。

输入:-12340

输出:-4321

优化目标:无

#include 

/*
*数组反向输出
*@number:待反向输出的数
*/
int reverse( int number ){
	int result = 0;
	int flag = 0;
	//如果是负数,先取反,然后将负数的标志置为1
	if(number < 0){
		number = -number;
		flag = 1;
	}
	//取反
	while(number > 0){
		result = result * 10 + number % 10;
		number = number / 10;
	}
	if(flag == 1){
		return -result;
	}else{
		return result;
	}
}
    
int main()
{
    int n;

    scanf("%d", &n);
    printf("%d\n", reverse(n));

    return 0;
}

题目:实现一个拆分实数的整数与小数部分的简单函数。

输入:2.718

输出:整数部分2;小数部分0.718

优化目标:无

#include 

/*
*拆分函数
*@x:待拆分的数
*@intpart:整数部分
*@fracpart:小数部分
*/
void splitfloat( float x, int *intpart, float *fracpart ){
	//x为float类型,将其强转为int类型,小数直接就舍去了
	*intpart=(int)x;
	*fracpart=x-*intpart;
}

int main()
{
    float x, fracpart;
    int intpart;

    scanf("%f", &x);
    splitfloat(x, &intpart, &fracpart);
    printf("The integer part is %d\n", intpart);
    printf("The fractional part is %g\n", fracpart);

    return 0;
}

题目:编写函数,将输入字符串的前n个字符移到最后。要求n<字符串长度

输入:n=3,字符串:abcdef

输出:defabc

优化目标:无

#include 
#include 

#define MAXS 10

/*
*移动函数
*@s:数组
*@n:移动的个数
*/
void Shift(char *s, int n){
	char str[MAXS];
	//先将s中前n个元素保存在str中
	for(int i=0; i<n; i++){
		str[i] = s[i];
	}
	//将s数组中从第n个元素开始依次往前移
	for(int j=n; j<strlen(s); j++){
		s[j-n] = s[j];
	}
	//将str中元素再放入如s中
	for(int k=0; k<n; k++){
		s[k+strlen(s)-n] = str[k];
	}
}


int main(){
    
	char s[MAXS];
	int n;
	
	scanf("%d\n", &n);
	
	gets(s);
    Shift(s, n);
    printf("%s\n", s);
    
    return 0; 
}

题目:编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

输入:m=7 ;字符串happy new year

输出:new year

优化目标:无

#include 
#include 
#define MAXN 20

/*
*复制任意位置字串函数
*@t:原字符数组
*@m:开始复制的字符
*@s:存放复制字符串的数组
*/
void strmcpy( char *t, int m, char *s ){
	for(int i=m-1; i<strlen(t); i++){
		s[i-m+1] = t[i];
	}
}

int main()
{
    char t[MAXN], s[MAXN];
    int m;
    
    scanf("%d\n", &m);
    gets(t);
    strmcpy( t, m, s );
    printf("%s\n", s);

    return 0;
}

你可能感兴趣的:(c语言)