C语言练习-day29

题目:使用函数输出一个整数的逆序数。本题要求实现一个求整数的逆序数的简单函数。

输入:需要逆序的数n,类型为int。

输出:输出n逆序的值。

优化目标:无。

思想:其中函数reverse须返回用户传入的整型number的逆序数。定义一个新的数sum(存储逆序数),每次取number(n)的个位传到sum(自身10倍后)的个位,然后将number除10,直到number等于0。

#include <stdio.h>

int reverse( int number );
    
int main()
{
    int n;

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

    return 0;
}

int reverse( int number ){
	if(number == 0){
		return 0;
	}
	int flag = 1,x,sum = 0;
	if(number<0){
		flag = -1;
		number = -number;
	}
	while(number){
		x = number%10;
		sum = sum*10+x;
		number/=10;
	}
	sum*=flag;
	
	return sum;
	
}

输入:-12340

输出:-4321

题目:计算两数的和与差。本题要求实现一个计算输入的两数的和与差的简单函数。

输入:需要计算的两个数a, b,类型都为int。

输出:输出a和b的和与差。

优化目标:无。

思想:其中函数中的op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。直接给*psum赋值两个数的和,*pdiff赋值两个数的差。

#include <stdio.h>

void sum_diff( float op1, float op2, float *psum, float *pdiff );

int main()
{
    float a, b, sum, diff;

    scanf("%f %f", &a, &b);
    sum_diff(a, b, &sum, &diff);
    printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);
    
    return 0; 
}

void sum_diff( float op1, float op2, float *psum, float *pdiff ){
	*psum = op1+op2;
	*pdiff = op1-op2;
}

输入:7 5

输出:

The sum is 12.00

The diff is 2.00

题目:移动字母。本题要求编写函数,将输入字符串的前3个字符移到最后。

输入:一个一维字符串,类型都为char。

输出:字符串左移3个字符后,输出移动后的字符串。

优化目标:无。

思想:其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。利用c[3]存储前三个元素,然后数组元素依次往前移动3位。再把c数组内元素赋在s的后面,最后一位赋‘\0’。

#include <stdio.h>
#include <string.h>

#define MAXS 10

void Shift( char s[] );

void GetString( char s[] );

int main()
{
    char s[MAXS];

    GetString(s);
    Shift(s);
    printf("%s\n", s);
    
    return 0; 
}

void GetString( char s[] ){
	gets(s);
}


void Shift( char s[] ){
	char c[3];
	int i,j = 0;
	for(i=0;i<=2;i++){
		c[i] = s[i];
	}
	while(s[i]!='\0'){
		s[j] = s[i];
		j++;i++;
	}
	for(i=0;i<=2;i++,j++){
		s[j] = c[i];
	}
	s[j] = '\0';
}

输入:12346515xsxsj

输出:46515xsxsj123

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

输入:一个需要拆分的数,类型都为float。

输出:输出输入的数的整数部分和小数部分。

优化目标:无。

思想:其中x是被拆分的实数(0≤x<10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。直接给*intpart赋值输入值的整数部分(除1),给*fracpart赋值x减*intpart。

#include <stdio.h>

void splitfloat( float x, int *intpart, float *fracpart );

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;
}
void splitfloat( float x, int *intpart, float *fracpart ){
	*intpart = x/1;
	*fracpart = x-*intpart;
	
}

输入:2.718

输出:

The integer part is 2

The fractional part is 0.718

今日总结:虽然已经复试完了,多练吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值