题目:使用函数输出一个整数的逆序数。本题要求实现一个求整数的逆序数的简单函数。
输入:需要逆序的数n,类型为int。
输出:输出n逆序的值。
优化目标:无。
思想:其中函数reverse须返回用户传入的整型number的逆序数。定义一个新的数sum(存储逆序数),每次取number(n)的个位传到sum(自身10倍后)的个位,然后将number除10,直到number等于0。
#includeint reverse( int number ); int main() { int n; scanf("%d", &n); printf("%dn", 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赋值两个数的差。
#includevoid 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 %.2fnThe diff is %.2fn", 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的后面,最后一位赋‘ ’。
#include#include #define MAXS 10 void Shift( char s[] ); void GetString( char s[] ); int main() { char s[MAXS]; GetString(s); Shift(s); printf("%sn", 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]!=' '){ s[j] = s[i]; j++;i++; } for(i=0;i<=2;i++,j++){ s[j] = c[i]; } s[j] = ' '; }
输入:12346515xsxsj
输出:46515xsxsj123
题目:拆分实数的整数与小数部分。本题要求实现一个拆分实数的整数与小数部分的简单函数。
输入:一个需要拆分的数,类型都为float。
输出:输出输入的数的整数部分和小数部分。
优化目标:无。
思想:其中x是被拆分的实数(0≤x<10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。直接给*intpart赋值输入值的整数部分(除1),给*fracpart赋值x减*intpart。
#includevoid 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 %dn", intpart); printf("The fractional part is %gn", 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
今日总结:虽然已经复试完了,多练吧。



