C Primer Plus 第十一章 习题总结……2015.5.10

C Primer Plus

        第五版

第十一章  字符串和字符串函数

1、没有加上字符串结尾标志 空字符‘\0‘;

2、#include<stdio.h>

int main(void)

{

char note[]="See you at snack bar: ";

char *ptr;

ptr=note;

puts(ptr);

puts(++ptr);

note[7]=‘\0‘;

puts(note);

puts(++ptr);

return 0;

}

3、#include<stdio.h>

#include<string.h>

int main(void)

{

char food[]="Yummy";

char*ptr;

ptr=food+strlen(food);

while(--ptr>=food)

puts(ptr);//指针后退一下,就多输出一个字符

return 0;

}

4、#include<stdio.h>

#include<string.h>

int main(void)

{

char goldwyn[40]="art of it all ";

char samuel[40]="I read p";

char*quote="the way through.";

strcat(goldwyn,quote);

strcat(samuel,goldwyn);

puts(samuel);

return 0;

}

#include<stdio.h>

char *pr(char*str)

{

char*pc;

pc=str;

while(*pc)

putchar(*pc++);

do

{

putchar(*--pc);

}while(pc-str);

return (pc);

}

int main(void)

{

char *str="what do you have?";

char *ptr;

ptr=*pr(str);

puts(ptr);

return 0;

}

先正序打印后倒序打印,指针char类型  指针减量运算    指向的

值减量运算  打印空字符 先判断后执行 先执行后判断 打印一个空

1 2

7、#include<stdio.h>

#include<string.h>

#define M1 "How are ya,sweetie?"

char M2[40]="Beat the clock";

char *M3="chat";

int main(void)

{

char words[80];

printf(M1);

puts(M1);

puts(M2);

puts(M2+1);

strcpy(words,M2);

strcat(words," Win a toy. ");

puts(words);

words[4]=‘\0‘;

puts(words);

while(*M3)

puts(M3++);

puts(--M3);

puts(--M3);

M3=M1;

puts(M3);

return 0;

}

8、

#include<stdio.h>

int main(void)

{

char str1[]="gawsie";

char str2[]="bletonism";

char *ps;

int i=0;

for(ps=str1;*ps!=‘\0‘;ps++)

{

if(*ps==‘a‘||*ps==‘e‘)

putchar(*ps);

else

(*ps)--;

putchar(*ps);

}

putchar(‘\n‘);

while(str2[i]!=‘\0‘)

{

printf("%c",i%3?str2[i]:‘*‘);

++i;

}

return 0;

}

9、#include<stdio.h>

int Return_long(char*ptr);

int main(void)

{

char *str="what are you ?";

printf("%d",Return_long(str));

return 0;

}

int Return_long(char*ptr)

{

int count=0;

while(*ptr++!=‘\0‘)

count++;

return count;

}

10、

#include<stdio.h>

#define MSG ‘ ‘

char *Return_long(char*ptr);

int main(void)

{

char *str="what are you ?";

printf("%d",*Return_long(str));

return 0;

}

char *Return_long(char*ptr)

{

int count=0;

while(*ptr++!=‘\0‘)

if(*ptr==MSG)

return ptr;

return  NULL;

}

11、

#include<stdio.h>

#include<string.h>

#include<ctype.h>

#define ANSWER "Grant"

int main(void)

{

char try[40];

puts("who is buried in Grant‘s tomb?");

gets(try);

try[0]=toupper(try[0]);

while(strcmp(try,ANSWER)!=0)

{

puts("No,that`s wrong.Try again.");

gets(try);

}

puts("that‘s right!");

return 0;

}

编程练习

1、#include<stdio.h>

void Read_array(char *ptr,int n);

int main(void)

{

char arr[10];

Read_array(arr,10);

return 0;

}

void Read_array(char *ptr ,int n)

{

int i=0;

for(i=0;i<n;i++)

*(ptr+i) =getchar();

for(i=0;i<n;i++)

putchar(ptr[i]);

}

2、

#include<stdio.h>

#include<string.h>

void Read_array(char *ptr,int n);

int main(void)

{

char arr[10];

Read_array(arr,10);

return 0;

}

void Read_array(char *ptr ,int n)

{

int i=0,a;

char ch;

ch=getchar();

while(ch!=‘\n‘&&ch!=‘ ‘&&i<n)

{

*(ptr+i) = ch;

ch=getchar();

i++;

a=i;

}

for(i=0;i<a;i++)

putchar(ptr[i]);

}

3.

#include<stdio.h>

#include<string.h>

void Read_array(char *ptr,char arr[]);

int main(void)

{

char arr1[20],arr2[20];

gets(arr1);

Read_array(arr1,arr2 );

return 0;

}

void Read_array(char *ptr ,char arr[])

{

int i=0;

char ch;

while((ch=*(ptr+i))!=‘ ‘ )

{

arr[i]=*(ptr+i) ;

i++;

}

arr[i]=‘\0‘;

for(i=0;i<strlen(arr);i++)

putchar(ptr[i]);

}

4、

#include<stdio.h>

#include<string.h>

int Read_array(char *str,char check_ch);

int main(void)

{

char *ptr="what are you doing ?";

char ch;

ch=getchar();

printf(" %c is *ptr in %d place",ch,Read_array(ptr,ch

)) ;

return 0;

}

int Read_array(char *str ,char check_ch)

{

int i=0;

while(*(str+i)!=check_ch )

{

i++;

}

return ++i;

}

5、

#include<stdio.h>

#include<string.h>

#include<string.h>

int Read_array(char *str,char check_ch);

int main(void)

{

char *ptr="what are you doing ?";

char ch;

while((ch=getchar())!=‘#‘)

{

if(Read_array(ptr,ch ))

printf(" %s has %c\n ",ptr,ch);

else

printf(" %s has not  %c \n ",ptr,ch);

while((ch=getchar())!=‘\n‘)

continue;

}

return 0;

}

int Read_array(char *str ,char check_ch)

{

int i ;

for(i=0;i<strlen(str);i++)

if(*(str+i)==check_ch)

return str+i;

return NULL;

}

5

#include<stdio.h>

#include<string.h>

#include<string.h>

int Read_array(char *str,char check_ch);

int main(void)

{

char *ptr="what are you doing ?";

char ch;

while((ch=getchar())!=‘#‘)

{

if(Read_array(ptr,ch ))

printf(" %s has %c\n ",ptr,ch);

else

printf(" %s has not  %c \n ",ptr,ch);

while((ch=getchar())!=‘\n‘)

continue;

}

return 0;

}

int Read_array(char *str ,char check_ch)

{

int i ;

for(i=0;i<strlen(str);i++)

if(*(str+i)==check_ch)

return 1;

return 0;

}

6、#include<stdio.h>

#include<string.h>

char * Strncmp(char*s1,char* s2,int n);

int main(void)

{

char ptr[100]="what are you doing ?";

char *ch="AAAA";

printf("%s",Strncmp(ptr,ch,5))  ;

return 0;

}

char * Strncmp(char*s1,char *s2,int n)

{

int i;

int num;

num=strlen(s1);

for(i=0;i<n;i++)

if(*(s2+i)!=‘\0‘)

s1[num+i]=s2[i];

if(n==i)

s1[num+i]=‘\0‘;

else

s1[num+i+1]=‘\0‘;

return s1;

}

#include<stdio.h>

#include<string.h>

#define MAX 100

char*string_in(char*ptr,char*str,int n);

int main(void)

{

char arr1[MAX],arr2[MAX];

char *char_string;

int n;

printf("Please enter two character string.\n");

gets(arr1);

n=strlen(arr1);

gets(arr2);

char_string= string_in(arr1,arr2, n);

printf("%s",char_string);

return 0;

}

char*string_in(char*ptr,char*str,int n)

{

int i;

for(i=0;i<n;i++)

{

if(!strcmp(ptr+i,str))

return ptr+i;

}

return NULL;

}

8、

#include<stdio.h>

#include<string.h>

#define MAX 100

char string_in(char*ptr ,int n );

int main(void)

{

char arr1[MAX]  ;

int n;

printf("Please enter  character string.\n");

gets(arr1);

n=strlen(arr1);

string_in(arr1,  n);

return 0;

}

char string_in(char*ptr,int n)

{

int i;

for(i=n-1;i>=0;i--)

{

putchar(*(ptr+i));

}

}

#include<stdio.h>

#include<string.h>

#define MAX 100

char string_in(char*ptr ,int n );

int main(void)

{

char arr1[MAX]  ;

int n;

printf("Please enter  character string.\n");

while(1)

{  gets(arr1);

if(*arr1==‘\0‘)

{

break;

}

n=strlen(arr1);

string_in(arr1,  n);

printf("\n");

}

return 0;

}

char string_in(char*ptr,int n)

{

int i;

for(i=n-1;i>=0;i--)

{

putchar(*(ptr+i));

}

}

9、#include<stdio.h>

#define MAX 100

char string_in(char*ptr ,char arr[] );

int main(void)

{

char arr1[MAX] ,arr2[MAX] ;

int n;

printf("Please enter  character string.\n");

while(1)

{

gets(arr1);

if(*arr1==‘\0‘)

{

break;

}

string_in(arr1,  arr2);

}

return 0;

}

char string_in(char*ptr,char arr[])

{

int i=0 ;

while(*ptr)

{

if(*ptr!=‘ ‘)

{

arr[i]=*ptr ;

i++;

}

ptr++;

}

arr[i]=‘\0‘;

puts(arr);

}

10 字符串排序是排序指针而不是字符串

正确

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define LINE 3

#define RANK 100

void charater_string(int n,char*ptr[ ]);

void alphabet_list(int n,char*str[]);

void string_length(int n,char*ptr[]);

void First_word_length(int n,char*ptr[]);

int string_in(char *ptr);

void Quit();

int main(void)

{

int i,j,num;

char arr[LINE][RANK];

char *string[LINE];

printf("Please enter charater string.\n");

for(i=0;i<LINE;i++)

{

gets(arr[i]) ;

string[i]=arr[i];

}

while(1)

{

printf("Please choice number:\n");

printf("1)输出字符串列表       2)按ASCII顺序输出字符

串\n");

printf("3)按长度递增输出       4)按字符串第一个单词长

度输出    5)退出\n");

scanf("%d",&num);

switch(num)

{

case 1:charater_string(LINE,string);

break;

case 2:alphabet_list(LINE,string);

break;

case 3:string_length(LINE,string);

break;

case 4:First_word_length(LINE,string);

break;

case 5:Quit();

break;

default:break;

}

}

return 0;

}

void charater_string( int n,char*ptr[ ])

{

int i=0;

for(i=0;i<n;i++)

puts(ptr[i]);

}

void alphabet_list(int n,char*str[ ])

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if(strcmp(str[i],str[j])>0)

{

temp= str[j];

str[j]= str[i];

str[i]= temp;

}

}

}

charater_string(n,str);

}

void string_length( int n,char*ptr[ ])

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if((strlen(ptr[i])-strlen(ptr

[j]))>0)

{

temp=ptr[j];

ptr[j]=ptr[i];

ptr[i]= temp;

}

}

}

charater_string(n,ptr);

}

void First_word_length(int n,char*ptr[ ])

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if((string_in(ptr[i])-string_in

(ptr[j]))>0)

{

temp=ptr[j];

ptr[j]=ptr[i];

ptr[i]=temp;

}

}

}

charater_string(n,ptr);

}

void Quit()

{

exit(1);

}

int string_in(char *ptr)

{

int i=0 ;

while(*ptr)

{

if(*ptr==‘ ‘)

return i;

i++;

*ptr++;

}

}

/////*******************************///////

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define LINE 5

#define RANK 100

void charater_string(char*ptr[],int n);

void alphabet_list(char*str[],int n);

void string_length(char*ptr[],int n);

void First_word_length(char*arr[],int n);

int string_in(char*ptr);

void Quit();

int main(void)

{

int i,j,num;

char arr[LINE][RANK];

printf("Please enter charater string.\n");

for(i=0;i<LINE;i++)

{

for(j=0;j<RANK;j++)

{

arr[i][j]=getchar();

}

}

printf("Please choice number:\n");

printf("1)输出字符串列表       2)按ASCII顺序输出字符

串\n");

printf("3)按长度递增输出       4)按字符串第一个单词长

度输出    5)退出\n");

scanf("%d",&num);

switch(num)

{

case 1:charater_string(arr[LINE],LINE);

break;

case 2:alphabet_list(arr[LINE],LINE);

break;

case 3:string_length(arr[LINE],LINE);

break;

case 4:First_word_length(arr[LINE],LINE);

break;

case 5:Quit();

break;

default:break;

}

}

void charater_string( char*ptr[],int n)

{

int i=0;

for(i=0;i<n;i++)

puts(ptr[i]);

}

void alphabet_list(char*str[],int n)

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if(strcmp(str[i],str[j])>0)

{

temp=str[j];

str[j]=str[i];

str[i]=temp;

}

}

}

charater_string(str,n);

}

void string_length( char*ptr[],int n)

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if((strlen(ptr[i])-strlen(ptr

[j]))>0)

{

temp=ptr[j];

ptr[j]=ptr[i];

ptr[i]=temp;

}

}

}

charater_string(ptr,n);

}

void First_word_length(char*arr[],int n)

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if((string_in(ptr[i])-string_in

(ptr[j]))>0)

{

temp=ptr[j];

ptr[j]=ptr[i];

ptr[i]=temp;

}

}

}

charater_string(ptr,n);

}

void Quit()

{

exit(1);

}

int string_in(char*ptr)

{

int i=0 ;

while(*ptr)

{

if(*ptr==‘ ‘)

return i;

i++;

ptr++;

}

}

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define LINE 3

#define RANK 100

void charater_string(int n,char(*ptr)[RANK]);

/*

void alphabet_list(int n,char(*str)[RANK]);

void string_length(int n,char(*ptr)[RANK]);

*/

void First_word_length(int n,char(*ptr)[RANK]);

int string_in(char**ptr);

void Quit();

int main(void)

{

int i,j,num;

char arr[LINE][RANK];

printf("Please enter charater string.\n");

for(i=0;i<LINE;i++)

{

gets(arr[i]) ;

}

while(1)

{

printf("Please choice number:\n");

printf("1)输出字符串列表       2)按ASCII顺序输出字符

串\n");

printf("3)按长度递增输出       4)按字符串第一个单词长

度输出    5)退出\n");

scanf("%d",&num);

switch(num)

{

case 1:charater_string(LINE,arr);

break;/*

case 2:alphabet_list(LINE,arr);

break;

case 3:string_length(LINE,arr);

break;*/

case 4:First_word_length(LINE,arr);

break;

case 5:Quit();

break;

default:break;

}

}

return 0;

}

void charater_string( int n,char(*ptr)[RANK])

{

int i=0;

for(i=0;i<n;i++)

puts(ptr[i]);

}

/*

void alphabet_list(int n,char(*str)[RANK])

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if(strcmp(str[i],str[j])>0)

{

temp= *str[j];

*str[j]= *str[i];

*str[i]= temp;

}

}

}

charater_string(n,str);

}

void string_length( int n,char(*ptr)[RANK])

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if((strlen(ptr[i])-strlen(ptr

[j]))>0)

{

temp=*ptr[j];

*ptr[j]=*ptr[i];

*ptr[i]= temp;

}

}

}

charater_string(n,ptr);

}

*/

void First_word_length(int n,char(*ptr)[RANK])

{

int i,j;

char *temp;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if((string_in(ptr[i])-string_in

(ptr[j]))>0)

{

temp=*ptr[j];

*ptr[j]=*ptr[i];

*ptr[i]=temp;

}

}

}

charater_string(n,ptr);

}

void Quit()

{

exit(1);

}

int string_in(char**ptr)

{

int i=0 ;

while(**ptr)

{

if(**ptr==‘ ‘)

return i;

i++;

*ptr++;

}

}

////**********************************///

11\

#include<stdio.h>

#include<ctype.h>

int main(void)

{

int count=0;

int words=0;

int Big_char=0;

int Small_char=0;

int  n=0;

int num=0,i=0;

char arr[]="ANJDNjdcj,saefnhc,1248nsm,lsd.";

char *ptr;

ptr=arr;

while(*ptr)

{ if(isupper(*ptr))

Small_char++;

if(*ptr==‘ ‘)

words++;

if(isalpha(*ptr))

count++;

if(ispunct(*ptr))

{

n++;

words++;

}

if(isdigit(*ptr))

num++;

ptr++;

}

printf("%d %d %d %d %d \n",words,count,Small_char,n,num);

printf("%d",Small_char);

return 0;

}

时间: 2024-10-15 01:49:09

C Primer Plus 第十一章 习题总结……2015.5.10的相关文章

网络操作系统第十、十一章习题

第十章习题 1.什么是域名系统?描述域名解析的过程. 答 :域名系统用于实现IP地址和主机名之间的映射. 域名解析过程(1)DNS客户机提出域名解析请求 ,并将该请求发给本地的域名服务器(2)当本地的域名服务器接收到请求后,先查询本地的缓存,有该记录就直接把查询的结果返回(3)如果不存在该记录,则本地域名服务器就直接把请求发给跟域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器地址 (4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查看

第十一章习题答案

第十一章练习题答案?1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来?awk -f ':' '$3 > 500' /etc/passwd? 2. awk中 nr,nf两个变量表示什么含义awk -f ':' '{print $nr}' /etc/passwd 会打印出什么结果出来?nr表示行数,nf表示一共有多少段?awk -f ':' '{print $nr}' /etc/passwd 会依次打印对应的行数的段,第一行打印第一段,第二行打印第二段... 到了最后就

Objective-C 程序设计(第六版)第十一章习题答案

1. 1 #import "Fraction.h" 2 3 @interface Fraction (MathOps) 4 5 - (Fraction *) add: (Fraction *) f; 6 7 - (Fraction *) mul: (Fraction *) f; 8 9 - (Fraction *) sub: (Fraction *) f; 10 11 - (Fraction *) div: (Fraction *) f; 12 13 - (Fraction *) in

结构体的处理(以c++primer plus 第六章习题4为例)

1 const unsigned int strsize = 50; 2 struct bop //结构体就像一个数据类型如int 使用前应该先给他一个变量如本题中的bop 3 { 4 char fullname[strsize]; // real name 5 char title[strsize]; // job title 6 char bopname[strsize]; // secret BOP name 7 int preference; // 0 = fullname, 1 = t

C Primer Plus 第十二章程序清单……2015.5.10

C Primer Plus           第五版 第十二章  程序清单 #include<stdio.h> int main() { int x=30; printf("x in outer block:%d\n",x); { int x=77; printf("x in inner block:%d\n",x); } printf("x in outer block:%d\n",x); while(x++<33) { i

C Primer Plus 第十三章 学习总结……2015.5.8

第十三章:文件的输入/输出 这一章学习起来,很迷惑,和上面几章并不太连贯,介绍了好多 用于文件输入输出的函数,就像高中学习数学一样,一下子出现好多 公式,虽然每个公式都知道是干什么的.怎么用,但就不一定把习题 做出来了.把本章看完后,只是大致了解了文件的各种输出输入,打 开等方式.所以还需要进一步的了解,实践应用. <重定向运算符,  echo_eof<words 该运算符把words文件与 stdin流关联起来,将该文件words内容引导至echo_eof程序中. echo_eof将键盘输入

《鸟哥linux》--第十一章课后习题答案

1.在linux上可以找到哪些shell?哪个档案记录可用的shell?儿linux预设的shell是? 1./bin/bash,/bin/tcsh,/bin/csh 2./etc/shells 3.bash,亦即是/bin/bash 2.在shell环境下,有个提示符(prompt),他可以修改吗?要改什么?默认的提示符内容是? 可以修改,改PS1变量,这个PS1的变量默认的内容为:[\[email protected]\h\W]\$ 3.如何显示HOME这个变量 echo $HOME 4.如

第十一章 泛型算法 C++ PRIMER

vector<int>::const_iterator result = find(vector.begin(). vector.end(),search_value); 如果查找失败,分会end()  如果有两个,会返回哪一个的迭代器? int *reauslt = find(ia,ia+6,search_value); 也可以同样处理字符串 算法要以<algorithm><numeric>,依赖于迭代器和迭代器的算法实现,算法可能改变值,可能移动元素,单从不直接添加

c++ primer 5th 笔记:第十一章

第十一章:关联容器 笔记 1. 关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的.与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的. 2. 关联容器支持高效的关键字查找和访问,两个主要的关联容器类型是map和set.map中的元素是一些关键字-值对:关键字起到索引的作用,值则表示与索引相关联的数据.set中每个元素只包含一个关键字:set支持高效的关键字查询操作--检查一个给定关键字是否在set中. 3. 当从map中提取一个元素时,会得到一个pair