C primer plus第11章(字符串和字符函数)习题(10选择排序)
来源:互联网 发布:电子证书制作软件 编辑:程序博客网 时间:2024/05/20 08:21
#include <stdio.h>int main(int argc,char *argv[]){ char note[] = "abcdef"; //++note;不能对note++ char *a; a = note; puts(++a);//bcdef puts(a++);//bcdef puts(a);//cdef return 0;}
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;}
打印结果
How are ya,sweetieHow are ya,sweetie
Beat the clock.
eat the clock.
Beat the clock.Win a toy.
Beat
chat
hat
at
t
t
at
How are ya,sweetie
9.
#include <stdio.h>#include <string.h>int mystrlen(char *p);int main(void){ char words[] = "sdsaddssad"; printf("%d",mystrlen(words)); return 0;}int mystrlen(const char *p) { int i= 0; while(*p++) { i++; } return i;}
10.
#include <stdio.h>#include <string.h>char* hasspace(char *p);int main(void){ char words[] = "sdsaddss ad"; printf("%s",hasspace(words)); return 0;}char* hasspace(const char *p){ while(!isspace(*p)) { p++; } if(*p == '\0') { return NULL; } return p;}
11.
#include <stdio.h>#include <string.h>#include <ctype.h>#define ANSWER "GRANT"#define MAX 40int main(void){ char try[MAX]; char *p = try; puts("Who is buried"); gets(try); do { if(islower(*p)) { *p = toupper(*p); } } while(*p++); while(strcmp(try,ANSWER) != 0) { puts("No"); gets(try); } puts("Yes"); return 0;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
编程
1
#include <stdio.h>int main(void){ char a[90]; my_input(a); puts(a); return 0;}int my_input(char * pt){ gets(pt);}
2
#include <stdio.h>#define N 20char* my_input(char * pt);int main(void){ char a[N+1]; my_input(a); puts(a); return 0;}char* my_input(char * pt){ int i; char ch; for(i=0; i<N; i++) { ch = getchar(); if(ch != EOF && !isspace(ch)) { pt[i] = ch; } else { break; } } if(ch == EOF || isspace(ch)) return NULL; else { pt[i] ='\0'; return pt; }}
3.自己
#include <stdio.h>#define N 20char* my_input(char * pt);int main(void){ char a[N+1]; my_input(a); puts(a); return 0;}char* my_input(char * pt){ char p[N+1]; char *pp = p; gets(p); //puts(pp); int c = 0; do { if(c == 0 && !isspace(*pp)) { c = 1; } if(c == 1 && isspace(*pp)) { *pt = '\0'; break; } if(!isspace(*pp)) { *pt = *pp; pt++; } }while(*pp++); if(!isspace(pt)) { *pt = '\0'; } return pt;}答案
#include <stdio.h>#define LEN 80char* getword(char * str);int main(void){ char input[LEN]; char *chk; while(getword(input) != NULL) { puts(input); } puts("Done.\n"); return 0;}char* getword(char * str){ int i; int ch; while((ch = getchar()) != EOF && !isspace(ch)) { *str++ = ch;//下面2行与此等价 //*str = ch; //str++; } *str = '\0'; if(ch == EOF) { return NULL; } //去除第一个空行后的所有字符 while(ch != '\n') { ch = getchar(); } return str;}
4.
#include <stdio.h>char* search_str(char * str,char * target);int main(void){ char str[10]; char target[50]; char *pos; while(gets(str) && str[0] != '\0' && gets(target) && target[0]!='\0') { pos = search_str(str,target); printf("%p\n",pos); puts(pos); } return 0;}char* search_str(char * str,char * target){ int n = strlen(str); int m = strlen(target); int i,j; char *pos = NULL; for(i=0,j=0; i<n,j<m; j++) { if(str[i] == target[j]) { pos = pos==NULL ? &str[i] : pos; i++; } else { pos = i != n ? NULL : pos; i =0; } } return pos;}
5.
#include <stdio.h>int is_within(char ch,char * target);int main(void){ char ch; char target[50]; int isexist; while((ch = getchar()) && getchar() && gets(target) && target[0]!='\0') { isexist = is_within(ch,target); printf("%d\n",isexist); } return 0;}int is_within(char ch,char * target){ do { if(ch == *target) { return 1; } } while(*target++!= '\0'); return 0;}
6.
#include <stdio.h>void mystrncpy(char * str1,char * str2,int len);int main(void){ char str1[100]; char str2[100]; while(gets(str1) && str1[0] != '\0' && gets(str2) && str2[0]!='\0') { mystrncpy(str1,str2,20); printf("%s",str1); } return 0;}void mystrncpy(char * str1,char * str2,int len){ int i,j; while(*str1!='\0') { str1++; } for(i=0; i<len; i++) {*str1++ = (*str2 != '\0') ? *str2++ : '\0';//与下面的等价 /*if(*str2 != '\0') { *str1 = *str2; str2++; } else { *str1 ='\0'; } str1++;*/ }}
7.
#include <stdio.h>char* string_in(char * target,char * str);int main(void){ char str[10]; char target[50]; char *pos; while(gets(str) && str[0] != '\0' && gets(target) && target[0]!='\0') { pos = string_in(str,target); printf("%p\n",pos); puts(pos); } return 0;}char* string_in(char * target,char * str){ int n = strlen(str); int m = strlen(target); int i,j; char *pos = NULL; for(i=0,j=0; i<n,j<m; j++) { if(str[i] == target[j]) { pos = (pos==NULL) ? &str[i] : pos; i++; } else { pos = (i == n) ? pos : NULL; i =0; } } return pos;}
8.
#include <stdio.h>char* str_anti(char * str);int main(void){ char target[50]; while(gets(target) && target[0]!='\0') { puts(str_anti(target)); } return 0;}char* str_anti(char * str){ int l = strlen(str); int i; char temp; for(i=0; i<l; i++) { if(i==(l/2)) { break; } temp = str[i]; str[i] = str[l-1-i]; str[l-1-i] = temp; } return str;}
9.
#include <stdio.h>void del_space(char * str);int main(void){ char target[50]; while(gets(target) && target[0]!='\0') { del_space(target); puts(target); } return 0;}void del_space(char * str){ char *temp = str; if(isspace(*temp)) { do { *temp = *(temp+1); } while(*temp++ != '\0'); } //尾递归 if(*str != '\0') { del_space(++str); }}
10
#include <stdio.h>#define ROW 3#define COL 50int main(void){ int i,j,tem,flag; char target[ROW][COL]; int temp[ROW]; char ch; for(i=0; i<ROW; i++) { gets(&target[i]); if(target[i][0]==EOF) { break; } } printf("请输入选择:\n"); while((ch = getchar()) != 'q') { getchar(); for(i=0; i<ROW; i++) { temp[i] = i; } if(ch != '1') { //选择排序 for(i=0; i<ROW-1; i++) { for(j=i+1; j<ROW; j++) { //1:正常 2:asc||顺序 3:长度顺序 4:第一个字符串的长度 if((strcmp(target[temp[i]],target[temp[j]]) > 0 && ch == '2') || (strlen(target[temp[i]])>strlen(target[temp[j]]) && ch == '3') || (fstrlen(target[temp[i]])>fstrlen(target[temp[j]]) && ch == '4')) { tem = temp[i]; temp[i] = temp[j]; temp[j] = tem; } } } } for(i=0; i<ROW; i++) { puts(&target[temp[i]]); } } return 0;}//字符串中第一个单词的长度int fstrlen(char* str){ int flag = 0; while(*str != '\0') { if(flag== 0 && isspace(*str)) { str++; continue; } else if(flag >0 && isspace(*str)) { break; } flag++; str++; } return flag;}
11
#include <stdio.h>#include <ctype.h>int main(void){ char c; int i,j,k,l,m,n,flag; i=j=k=l=m=flag =0; //CTRL+Z为EOF while((c = getchar()) != EOF) { if(isupper(c)) { i++; } else if(islower(c)) { j++; } else if(ispunct(c)) { k++; } else if(isdigit(c)) { l++; } if(flag == 0 && !isspace(c)) { flag = 1; m++; } else if(flag != 0 && isspace(c)) { flag = 0; } } printf("i=%d,j=%d,k=%d,l=%d,m=%d",i,j,k,l,m); return 0;}
12
#include <stdio.h>int main(int argc,char *argv[]){ int i; for(i=argc-1;i>=0;i--) puts(argv[i]); return 0;}
13
#include <stdio.h>#include <stdlib.h>;#include <math.h>int main(int argc,char *argv[]){ //必须引入<stdlib.h> 要不atof错误 double num = atof(argv[1]); int n = atoi(argv[2]); printf("%lf的%d次方等于%lf",num,n,pow(num,n)); return 0;}
14(未考虑正负等情况)
#include <stdio.h>#include <stdlib.h>;#include <math.h>int main(){ printf("%d",myatoi("2222")); return 0;}int myatoi(char* ch) { int i; int n = strlen(ch); int total=0; for(i=n-1;i>=0;i--) { //也可直接-48代替'0'(asc||为48)所有的数字-48的ASCII等于它对应的数字 total = i * 10 + (ch[i]-'0') ; } return total;}
15
#include <stdio.h>#include <stdlib.h>;#include <ctype.h>int main(int argc,char *argv[]){ int i,j,k,l; for(i=0,j=0; i<argc; i++) { if(strcmp(argv[i],"-p") == 0) { for(k=0; k<argc; k++) { puts(argv[k]); } } else if(strcmp(argv[i],"-u") == 0) { for(k=0; k<argc; k++) { for(l=0; l<strlen(argv[k]); l++) { if(islower(argv[k][l])) { argv[k][l] = toupper(argv[k][l]); } } puts(argv[k]); } } else if(strcmp(argv[i],"-l") == 0) { for(k=0; k<argc; k++) { for(l=0; l<strlen(argv[k]); l++) { if(isupper(argv[k][l])) { argv[k][l] = tolower(argv[k][l]); } } puts(argv[k]); } } } return 0;}
- C primer plus第11章(字符串和字符函数)习题(10选择排序)
- C primer plus第9章(函数)习题
- C primer plus第8章(字符输入/输出和输入确认)习题
- C primer plus第4章(字符串和格式化输入/输出)习题
- C primer plus第10章(指针)习题
- C primer plus第1章(概览)习题
- C primer plus第3章(数据和C)习题
- C primer plus第7章(C控制语句:分支和跳转)习题
- c primer plus第11章总结:字符串和字符串函数
- C primer plus第5章(运算符、表达式和语句)习题
- C primer plus第12章(存储类、链接和内存管理)习题
- c primer plus第14章习题
- c++primer plus 第12章习题
- 【C Primer Plus】第十一章 字符串和字符串函数(一)
- 【C Primer Plus】第十一章 字符串和字符串函数(二)
- C primer plus第2章(C语言概述)习题
- C primer plus第6章(c控制语句:循环)习题
- C++ primer plus 第11章习题
- 数组中找出第k大的值
- linux服务器,svn认证失败,配置问题,防火墙等等
- python批量转换文件编码
- VS2010 cocos2d-x 工程配置
- PHP程序员从入门到大师
- C primer plus第11章(字符串和字符函数)习题(10选择排序)
- android中Touch事件的处理逻辑
- 随笔
- 关于不同版本qt上字体问题的解决方案
- 汇编语言的标志寄存器和条件转移指令
- ListCtrl获取首列值相同的插入算法
- C#数据库还原与备份
- 走出浮躁的泥沼:仅专注就能胜过大部分人
- (C# 版描述)选择排序算法以及排序时间的测试 --数据结构