明解C語言入門篇練習題第九章
阿新 • • 發佈:2019-01-27
練習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;
}