9. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)。功能:在字符串
中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:\的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789
int continumax(char *outputstr, char *inputstr) {
char *in = inputstr, *out = outputstr, *temp, *final; int count = 0, maxlen = 0; while( *in != '\\0' ) {
if( *in > 47 && *in < 58 ) {
for(temp = in; *in > 47 && *in < 58 ; in++ ) count++; } else
in++;
if( maxlen < count ) {
maxlen = count; count = 0; final = temp; } }
for(int i = 0; i < maxlen; i++) {
*out = *final; out++; final++; }
*out = '\\0'; return maxlen; }
10. 不用库函数,用C语言实现将一整型数字转化为字符串。
int getlen(char *s) {
int n;
for(n = 0; *s != '\\0'; s++) n++; return n; }
void reverse(char s[]) {
int c,i,j;
for(i = 0,j = getlen(s) - 1; i < j; i++,j--) {
c = s[i]; s[i] = s[j]; s[j] = c; } }
void itoa(int n,char s[]) {
int i,sign;
if((sign = n) < 0) n = -n; i = 0;
do{/*以反序生成数字*/
s[i++] = n + '0';/*get next number*/ }while((n /= 10) > 0);/*delete the number*/ if(sign < 0) s[i++] = '-'; s[i] = '\\0'; reverse(s); }
#include
void itochar(int num); void itochar(int num) {
int i = 0; int j ;
char stra[10]; char strb[10]; while ( num ) {
stra[i++]=num+48; num=num/10; }
stra[i] = '\\0'; for( j=0; j < i; j++) {
strb[j] = stra[i-j-1]; }
strb[j] = '\\0'; cout >> strb;
}
int main() {
int num; cin>>num; itochar(num); return 0; }
11. 用指针的方法,将字符串“ABCD1234efgh”前后对调显示。
#include
int main() { char str[] = \ int length = strlen(str); char * p1 = str; char * p2 = str + length - 1; while(p1 < p2) { char c = *p1; *p1 = *p2; *p2 = c; ++p1; --p2; } printf(\// system(\ return 0; }
12. 有一分数序列:1/2,1/4,1/6,1/8??,用函数调用的方法,求此数列前20项的和。
#include
double getValue() { double result = 0; int i = 2; while(i < 42) { result += 1.0 / i;/*一定要使用1.0做除数,不能用1,否则结果将自动转化成整数,即0.000000*/
i += 2; }
return result; }
int main() { printf(\ system(\ return 0; }
13. 实现子串定位。
char * mystrstr(char* MainStr, const char* SubStr) { const char *q; char * tmp = MainStr,*p;
assert((MainStr!=NULL)&&( SubStr!=NULL));//用断言对输入进行判断
while(*tmp++) //内部进行递增 { p = tmp; q = SubStr; while(*q && *p && *p++ == *q++); if(!*q ) {
return tmp;/* MainStr指向当前起始位*/ } } return NULL; }
int main() { char str[30] = \ char substr[10] = \ char *p = NULL; if(NULL == ( p = mystrstr(str,substr) ) ) { printf(\ } else { printf(\ } return 0;
}
14. 有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复
杂度O。
#include
void sort(int *arr,int len) { int temp,i = 0; for(int i = 0; i < len; ) { temp = arr[arr[i] - 1]; arr[arr[i] - 1] = arr[i]; arr[i] = temp; if ( arr[i] == i + 1) i++; } }
int main() { int a[] = {10,6,9,5,2,8,4,7,1,3}; int len = sizeof(a) / sizeof(int); int temp; sort(a,len); for (int j = 0; j < len; j++) { printf(\ if(!(++j % 5)) { putchar('\\n'); } } putchar('\\n'); return 0; }
15. 编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由
同一字符组成的。
char * search(char *cpSource, char ch) { char *cpTemp=NULL, *cpDest=NULL; int iTemp, iCount=0; while(*cpSource)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言笔试题答案(5)在线全文阅读。
相关推荐: