题目:实现一个函数,计算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;
}