明解C语言入门篇练习题第九章

练习9-1

#include<stdio.h>

int main(void)
{
	char str[] = "ABC\0DEF";
	printf("string str = %s\n",str);
	return 0;
}

练习9-2

#include<stdio.h>

int main(void)
{
	char s[] = "ABC";
	printf("string s = %s\n",s);
	s[0] = '\0';
	printf("string s = %s\n",s);
	printf("string s become null!\n");
	return 0;
}

练习9-3

#include<stdio.h>
#define NUM 3

int main(void)
{
	int i;
	char s[NUM][128];
	for (i = 0; i < NUM; i++)
	{
		printf("s[%d]:",i);
		scanf("%s",s[i]);
		if (strcmp(s[i], "$$$$$") == 0)//代码显示问题。。。
			break;
	}
	for (i = 0; i < NUM; i++) 
	{
		if (strcmp(s[i], "$$$$$") == 0)//代码显示问题。。。
			break;
		else
			printf("s[%d] = \"%s\"\n",i,s[i]);
	}
	
	return 0;
}

练习9-4

#include<stdio.h>

void null_string(char s[])
{
	s[0] = '\0';
}

int main(void)
{
	char s[] = "test string";
	printf("before null_string function\n");
	printf("%s\n",s);
	printf("after null_string function\n");
	null_string(s);
	printf("%s\n",s);
	printf("test end\n");

	return 0;
}

练习9-5

#include <stdio.h>

int str_char(const char s[], int c)
{
	int charflag = 0;
	while (s[charflag] != '\0')
	{
		if (s[charflag] == c)
			break;
		charflag++;
	}
	if (s[charflag] == '\0')
		charflag = -1;

	return charflag;
}

int main(void)
{
	int r;
	char c;//int c;
	char s[128];
	printf("input s = ");
	scanf("%s", s);
	getchar();//clear buffer.  important
	printf("input c = ");
	scanf("%c", &c);//格式化输入char 用%c
	r = str_char(s, c);
	printf("下标为 %d", r);

	return 0;
}

练习9-6

#include<stdio.h>

int str_chnum(const char s[], int c)
{
	int i=0;
	int num_c=0;
	while (s[i] != '\0')
	{
		if (s[i] == c)
			num_c++;
		i++;
	}
	return num_c;
}

int main(void)
{
	char s[128];
	char c;
	int num_c = 0;
	printf("input string s:");
	scanf("%s",s);
	getchar();// clear input buffer. important
	printf("input character c:");
	scanf("%c",&c);
	num_c = str_chnum(s,c);
	printf("string %s contains %d character %c",s,num_c,c);

	return 0;
}

练习9-7

#include<stdio.h>

void put_stringn(const char s[], int n)
{
	int i;
	for (i = 0; i < n; i++)
	{
		int j = 0;
		while (s[j] != '\0')
		{
			putchar(s[j]);
			j++;
		}
	}
	return;
}

int main(void)
{
	char s[128];
	int n;
	printf("input string s:");
	scanf("%s",s);
	getchar();// clear input buffer. important
	printf("input integer n:");
	scanf("%d",&n);
	put_stringn(s,n);
	printf("\n");

	return 0;
}

练习9-8

#include<stdio.h>

void put_stringr(const char s[])
{
	int str_len = 0;
	int i;
	while (s[str_len] != '\0')
	{
		str_len++;
	}
	while (str_len >= 0)
	{
		putchar(s[str_len]);
		str_len--;
	}
	return;
}

int main(void)
{
	char s[128];
	printf("input string s:");
	scanf("%s",s);//note:scanf function cannot receive string with space
	printf("reverse string s:");
	put_stringr(s);
	printf("\n");

	return 0;
}

练习9-9

#include<stdio.h>

void rev_string(char s[])
{
	char tmp[128];
	int ch_num=0;
	int i;
	while (s[ch_num] != '\0')
	{
		ch_num++;
	}
	for (i = 0; i < ch_num; i++)
	{
		tmp[i] = s[ch_num - 1 - i];
	}
	for (i = 0; i < ch_num; i++)
	{
		s[i] = tmp[i];
	}
	return;
}

int main(void)
{
	char s[128];
	printf("input string s:");
	scanf("%s",s);//note:scanf function cannot receive string with space.
	rev_string(s);
	printf("reverse string s:%s",s);
	printf("\n");

	return 0;
}

练习9-10

#include<stdio.h>

void del_digit(char s[])
{
	int i = 0;
	int j = 0;
	char tmp[128];
	while (s[i] != '\0')
	{
		if (s[i] < '0'||s[i] > '9')//s[i] is not a number
		{
			tmp[j] = s[i];
			j++;
		}
			i++;		
	}
	for (i = 0; i < j; i++)
	{
		s[i] = tmp[i];
	}
	s[j] = '\0';
	return;
}

int main(void)
{
	char s[128];
	printf("input string s:");
	scanf("%s",s);//note:scanf function cannot receive string with space.
	del_digit(s);
	printf("new string s:%s",s);
	printf("\n");

	return 0;
}

练习9-11

#include <stdio.h>
#define STR_NUM 5
#define CHA_NUM 128

void put_strary(const char s[][CHA_NUM], int n)
{
	int i;
	for (i = 0; i < n; i++)
	{ 
		if (strcmp(s[i], "$$$$$" )== 0)
			break;
		else
			printf("s[%d] = \"%s\"\n", i, s[i]);
	}
}

int main(void)
{
	int i;
	char cs[STR_NUM][CHA_NUM];
	for (i = 0; i < STR_NUM; i++)
	{
		printf("cs[%d] = ",i);
		scanf("%s",cs[i]);
		if (strcmp(cs[i], "$$$$$") == 0)
			break;
	}
	put_strary(cs, STR_NUM);

	return 0;
}

练习9-12

#include<stdio.h>
#define STR_NUM 2

void rev_string(char s[][128],int n)
{
	char tmp[STR_NUM][128];
	int ch_num = 0;
	int i;
	int j;
	for (i = 0; i < STR_NUM; i++)
	{
		while (s[i][ch_num] != '\0')
		{
			ch_num++;
		}
		for (j = 0; j < ch_num; j++)
		{
			tmp[i][j] = s[i][ch_num - 1 - j];
		}
		for (j = 0; j < ch_num; j++)
		{
			s[i][j] = tmp[i][j];
		}
	}
	
	return;
}

int main(void)
{
	int i;
	char s[STR_NUM][128];
	for (i = 0; i < STR_NUM; i++)
	{
		printf("s[%d] = ",i);
		scanf("%s",s[i]);
	}
	rev_string(s,STR_NUM);
	printf("after rev_string function:\n");
	for (i = 0; i < STR_NUM; i++)
	{
		printf("s[%d] = %s\n", i,s[i]);
	}
	printf("\n");

	return 0;
}

猜你喜欢

转载自blog.csdn.net/wofreeo/article/details/80598499