C/PTA —— 13.指针2(课内实践) 一.函数题 6-1使用函数实现字符串部分复制 6-2 拆分实数的整数部分和小数部分 6-3 存在感 二.编程题
一.函数题
6-1使用函数实现字符串部分复制
void strmcpy ( char * t, int m, char * s)
{ int len = 0 ; char * ret = t; while ( * ret != '\0' ) { ret++ ; len++ ; } if ( m > len) * s = '\0' ; else { t = t + m - 1 ; while ( * t != '\0' ) { * s = * t; s++ ; t++ ; } * s = * t; }
}
6-2 拆分实数的整数部分和小数部分
void splitfloat ( float x, int * intpart, float * fracpart)
{ int num1 = ( int ) x; * intpart = num1; float num2 = x- ( float ) num1; * fracpart = num2;
}
6-3 存在感
int frequency ( char * paragraph, char * from, char * to)
{ int x = 0 ; for ( int i = 0 ; paragraph[ i] != '\0' ; i++ ) { if ( paragraph[ i] == * from) { int flag = 1 ; for ( int j = 0 ; j < ( to - from + 1 ) ; j++ ) if ( paragraph[ i + j] != * ( from + j) ) { flag = 0 ; break ; } if ( flag) x++ ; } } return x;
}
二.编程题
7-1 单词反转
# include <stdio.h>
# include <string.h>
int main ( )
{ char ch[ 999 ] ; gets ( ch) ; int len = strlen ( ch) , k = 0 , i, j, flag1 = 0 , flag2 = 0 ; ch[ len] = ' ' ; while ( k <= len) { if ( ch[ k] != ' ' && flag1 == 0 ) { i = k; flag1 = 1 ; } if ( ch[ k] == ' ' && flag2 == 0 && flag1 == 1 ) { flag2 = 1 ; j = k - 1 ; } if ( flag1 == 1 && flag2 == 1 ) { flag1 = 0 ; flag2 = 0 ; for ( ; j >= i; j-- ) printf ( "%c" , ch[ j] ) ; printf ( " " ) ; } k++ ; } return 0 ;
}