练习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;
}
#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;
}