明解C语言(基础篇)—第九章

练习9-1:显示{字符串"ABC"}

#include <stdio.h>

int main(void)
{
	char str[] = "ABC\0DEF";

	printf("字符串\"%s\"\n", str);

	return 0;
}

 

练习9-2

#include <stdio.h>

int main(void)
{
	char str[] = "ABC";

	int i;
	for (i = 0; i < 4; i++) {
		str[i] = '\0';
	}
	printf("string=%s\n", str);

	return 0;
}

 

练习9-3:本题使用了strcmp函数,具体讲解请见链接http://c.biancheng.net/cpp/html/162.html。strcmp函数简略介绍如下:

strcmp(s1,s2)是一个用来比较两个字符串的函数。

规则:当s1<s2时:返回负值;当s1=s2时:返回零;当s1>s2时:返回正值

#include <stdio.h>
#include <string.h>

#define NUMBER 5

int main(void)
{
	int i, j=0;
	char s[NUMBER][128];

	for (i = 0; i < NUMBER; i++) {
		printf("s[%d]:", i);
		scanf_s("%s", s[i],128);
		if (strcmp(s[i], "$$$$$") == 0)
			break;
		j++;
	}

	for (i = 0; i < j; i++) {
		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 str[128];
	printf("请输入字符串:");
	scanf_s("%s", str, 16);
	null_string(str);
	printf("字符串为\"%s\"\n", str);
	return 0;
}

 

练习9-5:本题借鉴了他人思路,因为作者疑似注销,就不贴名字上来了。链接如下https://blog.csdn.net/weixin_42916038/article/details/88252176?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162199405916780269829443%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162199405916780269829443&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-4-88252176.pc_search_result_cache&utm_term=%E6%98%8E%E8%A7%A3c%E8%AF%AD%E8%A8%80%E5%85%A5%E9%97%A8%E7%AF%87%E7%AC%AC%E4%B9%9D%E7%AB%A0&spm=1018.2226.3001.4187

#include <stdio.h>

int str_char(const char s[], int c)
{
	int i = 0;
	while (s[i]) {
		if (s[i] == 'c')
			return i;
		i++;
	}
	return -1;
}

int main(void)
{
	char str[128];
	int c='c';

	printf("请输入字符串:");
	scanf_s("%s", str, 32);

	printf("下标为%d\n", str_char(str, c));

	return 0;
}

 

练习9-6

#include <stdio.h>

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

int main(void)
{
	int c = 'c';
	char str[128];
	int i;

	printf("请输入字符串:");
	scanf_s("%s", str, 32);

	i = str_chnum(str, c);

	printf("字符串str中c的个数为%d\n", i);
	return 0;
}

 

练习9-7

#include <stdio.h>

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

int main(void)
{
	char str[128];
	int num;

	printf("请输入字符串:");
	scanf_s("%s", str, 32);

	printf("请输入循环次数:");
	scanf_s("%d", &num);

	put_string(str, num);
	return 0;
}

 

练习9-8

#include <stdio.h>

void put_string(const char s[])
{
	int i = 0;
	int j;
	
	while (s[i]) {
		i++;
	}

	for (j = i ; j >= 0; j--) {
		putchar(s[j]);
	}
}

int main(void)
{
	char str[128];

	printf("请输入字符串:");
	scanf_s("%s", str, 32);
	put_string(str);
	putchar('\n');
	return 0;
}

 

练习9-9

#include <stdio.h>

void rev_string(char s[])
{
	int i=0, j;
	char a[128];
	while (s[i])
		i++;
	for (j = 0; j < i; j++) {
		a[j] = s[i-j-1];
	}

	for (j = 0; j < i; j++) {
		s[j] = a[j];
	}
	j = 0;
	while (s[j]) 
		putchar(s[j++]);
}

int main(void)
{
	char str[128];
	int i = 0;

	printf("请输入字符串:");
	scanf_s("%s", str, 64);
	
	printf("更新后的数组:");
	rev_string(str);
	return 0;

}

 

练习9-10

#include <stdio.h>

void del_digit(char s[])
{
	int s_len = 0;
	int i, j = 0;
	char a[128];

	while (s[s_len])
		s_len++;

	for (i = 0; i < s_len; i++) {
		if (s[i]<'0' || s[i]>'9') {
			a[j] = s[i];
			j++;
		}
	}
	for (i = 0; i < j; i++)
		s[i] = a[i];
	s[j] = '\0';
}

int main(void)
{
	char str[128];

	printf("请输入字符串:");
	scanf_s("%s", str, 32);

	del_digit(str);
	printf("字符串去掉数字后变成%s\n", str);
	return 0;
}

 

练习9-11

#include <stdio.h>
#include <string.h>

#define NUM1 5
#define NUM2 128

void put_str(const char s[NUM1][NUM2], int n)
{
	int i, j;
	char a[NUM1][NUM2];

	for (i = 0; i < NUM1; i++) {
		if (strcmp(s[i],"$$$$$")==0)
			break;
		else
			printf("s[%d]=%s\n", i, s[i]);
	}

}

int main(void)
{
	char str[NUM1][NUM2] = { "TURBo","EBOFYO&EWYF","EWB*FYEW","$$$$$","cygdygf" };

	put_str(str, NUM1);

	return 0;

}

 

练习9-12

#include <stdio.h>

void rev_string(char s[][128], int n)
{
	int i, k;
	int j;
	char a[6][128];
	for (i = 0; i < n; i++) {
		j = 0;
		while (s[i][j])
			j++;
		for (k = 0; k < j; k++) {
			a[i][j - k - 1] = s[i][k];
		}
	}
	
	for (i = 0; i < n; i++) {
		j = 0;
		while (s[i][j])
			j++;
		for (k = 0; k < j; k++) {
			s[i][k] = a[i][k];
		}
	}

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

int main(void)
{
	char str[][128] = { "ABGDUD","ygheaygh","uwthgowiy3y","uherot3" };

	printf("字符串逆向显示:\n");
	rev_string(str, 4);
	return 0;
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值