题目:使用函数输出一个整数的逆序数。本题要求实现一个求整数的逆序数的简单函数。
输入:需要逆序的数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
今日总结:虽然已经复试完了,多练吧。