练习9-1
#include <stdio.h>
int main()
{
char str[] = "ABC\0DEF";
printf("字符串str为\"%s\"。\n", str); /* 显示 */
return 0;
}
练习9-2
/*---让该初始化赋值得到的字符串s变成空字符串:char s[] = "ABC"---*/
#include <stdio.h>
int main ()
{
char s[] = "ABC";
s[0] = '\0';//*str = 0;
printf("字符串s为:%s",s);
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;//s[0]='\0';
}
int main()
{
char s[] = "asd";
null_string(s);
printf("%s", s);
return 0;
}
练习9-5
#define num 128
int str_char(const char s[],int c)
{
int i;
for(i = 0;i < num;i++)
{
if(s[i] == 'c')// *s++ == 'c'
{
break; // return i;
}
}
return i; // return -1;
}
int main()
{
char arr[num];
printf("输入字符串:");
scanf("%s", arr);
printf("%s ", arr);
printf("%d", str_char(arr, 'c'));
return 0;
}
练习9-6
#define num 128
int str_char(const char s[],int c)
{
int i;
int cnt = 0;
for(i = 0;i < num;i++)
{
if(s[i] == 'c')// *s++ == 'c'
{
cnt++;
}
}
return cnt;
}
int main()
{
//char c = 'c';
char arr[num];
printf("输入字符串:");
scanf("%s", arr);
printf("%s ", arr);
putchar('\n');
printf("%d", str_char(arr, 'c'));
return 0;
}
练习9-7
#define num 128
void put_stringn(const char s[], int n)
{
int i=0;
int j;
for (j = 0; j < n; j++)
{
while (s[i])
{
putchar(s[i++]);
}
i = 0;
}
}
int main()
{
char x[num];
int n;
printf("请输入字符串:");
scanf("%s", x);
printf("%s", x);
printf("显示次数:");
scanf("%d", &n);
putchar('\n');
put_stringn(x, n);
return 0;
}
练习9-8
#include<stdio.h>
#include<string.h>
int put_stringr(const char s[])
{
int i;
int j;
j=strlen(s)-1;
for(i=0;i<strlen(s);i++)
{
putchar(s[j-i]);
}
}
int main()
{
char ch[128];
int i;
printf("请输入字符串: ");
scanf("%s", ch);
put_stringr(ch);
return 0;
}
练习9-9
#include<stdio.h>
#include<string.h>
int rev_string(char s[])
{
int i;
int j;
j=strlen(s)-1;
char temp[128];
for(i=0;i<=j;i++)
{
temp[i]=s[j-i];
}
for(i=0;i<=j;i++)
{
s[i]=temp[i];
}
}
int main()
{
char ch[128];
int i;
printf("请输入字符串: ");
scanf("%s", ch);
rev_string(ch);
printf("更新后的字符串: %s",ch);
return 0;
}
练习9-10
#include <stdio.h>
#define num 128
void del_digit( char s[])
{
int i=0;
while(s[i] != '\0') {
if (s[i] >= '0' && s[i] <= '9')
{
s[i++];
}
else
{
putchar(s[i]);
i++;
}
}
}
int main()
{
char s[num];
printf("输入字符串:");
scanf("%s", s);
printf("%s\n", s);
del_digit(s);
return 0;
}
练习9-11
#include <stdio.h>
#define num 5
#define number 6
/*--- 显示字符串数组 ---*/
void put_strary(const char* s[number], int n)
{
int i;
for (i = 0; i < n; i++) {
if (strcmp(s[i], "$$$$$") == 0) {
break;
}
printf("s[%d] = \"%s\"\n", i, s[i]);
}
}
int main(void)
{
char* cs[number] = { "Turbo", "NA", "DOHC","$$$$$","EWGEWGE" };
put_strary(cs, num);
return 0;
}
练习9-12
这个题目没有思路,网上抄的,网上有很多种写法,个人认为这个写法不错。
#include <stdio.h>
void rev_string(char s[][128], int n) {
int i, j;
for (i = 0; i < n; i++) {
int j = 0;
int g = strlen(s[i]);
printf("s[%d]=\"", i);
while (s[i][j])
{
putchar(s[i][(g - (j++) - 1)]);
}puts("\"");
}
}
int main() {
int n;
printf("将字符串逆向显示的个数:");
scanf("%d", &n);
char s[][128] = { "asdg","abc","cba","gfdaa" };
rev_string(s,n);
}