返回首页   进站必读

0823练习题


1.

将一个数组用100以内的整数填充,然后将其进行排序,将奇数放在数组的前半部分,偶数放在数组的后半部分。1.c

/** 
* @file 1.c
* @brief 将一个数组用100以内的整数填充,然后将其进行排序,将奇数放在数组的前半部分,偶数放在数组的后半部分
* @author GaoJinlong
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define LEN 10

void init(int *num, int len)
{
	int i;

	srand(time(NULL));
	for (i = 0; i < len; i++) 
		num[i] = rand() % 100;
}

void print(int *num, int len)
{
	int i;

	for (i = 0; i < len; i++) 
		printf("%d ", num[i]);
	printf("\n");
}

void sort(int *num, int len)
{
	int i, j, tmp;

	for (i = 0,j= len - 1;i <= j; i++) 
	{
		if(num[i] % 2 == 0)
		{
			tmp = num[i];
			num[i] = num[j];
			num[j] = tmp;
			i--;
			j--;
		}
		print(num, 5);
	}
}

int main(int argc, const char *argv[])
{
	int num[5];

	init(num, 5);
	print(num, 5);
	sort(num, 5);
	print(num, 5);

	return 0;
}

2,

计算在一个子串在字符串中出现的次数,如”he”在”helloheo”出现了2次。(使用strstr()函数)。2.c

/** 
* @file 2.c
* @brief 计算在一个子串在字符串中出现的次数,如”he”在”helloheo”出现了2次。(使用strstr()函数)
* @author GaoJinlong
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>
#include <string.h>

int parse(char *str, char *substr)
{
	int count = 0;
	char *tmp;

	while(*str)
	{
		if(tmp = strstr(str, substr))
		{
			count++;
			str = tmp + strlen(substr);
		}
		else
			break;
	}

	return count;
}

int main(int argc, const char *argv[])
{
	char str[100];
	char substr[20];

	printf("Enter a string: ");
	fgets(str, 100, stdin);
	str[strlen(str) - 1] = '\0';

	printf("Enter a substring: ");
	fgets(substr, 20, stdin);
	substr[strlen(substr) - 1] = '\0';

	printf("%d %s in %s.\n", parse(str, substr), substr, str);

	return 0;
}

3.

将一个字符串以空格为分隔,分割为多个字符串,如str = “hello every body”,分割为str1 = hello; str2 = every; str3 = body。 every body3.c

/** 
* @file 3.c
* @brief 将一个字符串以空格为分隔,分割为多个字符串,如str = “hello every
* body”,分割为str1 = hello; str2 = every; str3 = body
* @author GaoJinlong
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>
#include <string.h>

int divide(char *str, char *store[])
{
	int i = 0;

	store[i++] = str;
	while(*str)	
	{
		if (*str == ' ') 
		{
			*str = '\0';
			store[i++] = str + 1;
		}
		str++;
	}

	return i;
}

int main(int argc, const char *argv[])
{
	char str[100];
	char *store[10];
	int num, i;

	fgets(str, 100, stdin);
	str[strlen(str) - 1] = '\0';
	num = divide(str, store);

	for (i = 0; i < num; i++) 
	{
		printf("%s\n", store[i]);
	}

	return 0;
}

4.

编程实现int atoi(char *str),将函数实现将整数字符串转换为一个整数,如”-1234”转换为整数类型的-1234。4.c

/** 
* @file 4.c
* @brief atoi
* @author GaoJinlong
* @version 0.1
* @date 2011-09-09
*/
#include <stdio.h>

int myatoi(char *str)
{
	int flag = 0;
	int num = 0;

	if (*str == '-') 
	{
		flag = 1;
		str++;
	}
	while(*str)
	{
		num *= 10;
		num += *str++ - '0';
	}
	if(flag)
		num = -num;

	return num;
}

int main(int argc, const char *argv[])
{
	char buf[100];

	scanf("%s", buf); 
	printf("%d\n", myatoi(buf));
	j
	return 0;
}