C Primer Plus 第十一章 编程练习 1-15题

    xiaoxiao2021-03-25  70

    第1题 #include<stdio.h> void readChar(char* words , int len); int main(void) { int LEN; printf("Please Input The Max Lenght:\n"); scanf("%d",&LEN); getchar(); char Letters[LEN]; readChar(Letters,LEN); for(int i = 0 ; i < LEN ; ++i) printf("%c ",*(Letters+i)); return 0; } void readChar(char* words , int len) { printf("Please Input %d Chars.",len); fgets(words,len+1,stdin); } 第3题 #include<stdio.h> const char stop_1 = ' '; const char stop_2 = '\t'; const char stop_3 = '\n'; const int LEN = 100; int getWord(char* words , int Len , char* firstWord); int main(void) { char getWords[LEN]; char FWord[LEN]; printf("Please Input:\n"); fgets(getWords,LEN,stdin); int realLen = getWord(getWords,LEN,FWord); printf("First Word Is :"); for(int i = 0 ; i < realLen ; ++i) printf("%c",*(FWord+i)); return 0; } int getWord(char* words , int Len , char* firstWord) { char mid; int i = 0; for( ; i < Len ; ++i) // *-* { mid = *(words+i); if(mid == stop_1 || mid == stop_2 || mid == stop_3) { *(firstWord+i) = '\0'; break; } else *(firstWord+i) = mid; } return i; } 第4题 #include<stdio.h> const int MLen = 100; const char unKnowChar = '\0'; const char* findChar(const char* sourceWord , int Len ,char targetChar); int main(void) { const char tarChar = 'a'; // the target char is 'a' char TestWord[MLen]; printf("Please Input Any Words:"); fgets(TestWord,MLen,stdin); const char* FChar = findChar(TestWord,MLen,tarChar); if(FChar == &unKnowChar) { printf("We Can't Find 'a' on This Word."); return 0; } for(int i = 0 ; i < MLen ; ++i) { if(FChar == (TestWord+i)) printf("We Find Letter That's 'a' On %dth.",i+1); } return 0; } const char* findChar(const char* sourceWord , int Len ,char targetChar) { for(int i = 0 ; i < Len ; ++i) { if(*(sourceWord+i) == targetChar) return sourceWord+i; } return &unKnowChar; } 第5题 #include<stdio.h> #include<stdbool.h> const char MLen = 100; bool findChar(const char* source , char tarChar); int main(void) { const char tarChar = 'a'; char words[MLen]; printf("Please Input Ant Words:"); fgets(words,MLen,stdin); bool result = findChar(words,tarChar); if(result == true) printf("We Find THe Char On This Word.\n"); else printf("We Can't Find.\n"); return 0; } bool findChar(const char* source , char tarChar) { for(int i = 0 ; ; ++i) { if(*(source+i) == tarChar) return true; if(*(source+i) == '\0') break; } return false; } 第6题 #include<stdio.h> const int MLen = 100; const int copyLen = 10; char* myCopy(char* tar , const char* source , int Len); int main(void) { char cinWord[MLen]; char tarWord[copyLen]; printf("Please Intpu Any Words:"); fgets(cinWord,MLen,stdin); myCopy(tarWord,cinWord,copyLen); for(int i = 0 ; i < copyLen ; ++i) { if(*(tarWord+i) == '\0') printf("*"); printf("%c",*(tarWord+i)); } return 0; } char* myCopy(char* tar , const char* source , int Len) { for(int i = 0 ; i < Len ; ++i) *(tar+i) = *(source+i); return tar; } 第7题 #include<stdio.h> #include<stdbool.h> const int MLen = 100; const char None = '\0'; const char* string_in(const char* source , const char* tar); int main(void) { const char tarChar[3] = {'a','t'}; char cinWord[MLen]; printf("Please Input Any Words To Test:"); fgets(cinWord,MLen,stdin); const char* findChar = string_in(cinWord,tarChar); if(findChar == &None) { printf("This Word Don't Include Words \"at\"."); return 0; } int index; for(int i = 0 ; i < MLen ; ++i) { if(findChar == cinWord+i) { index = i; break; } } printf("The TargetWord begin %dth Letters.\n",index+1); return 0; } const char* string_in(const char* source , const char* tar) { char FChar = *tar; int beginIndex = 0; bool result = true; for(int i = 0 ; ; ++i) //find first char { if(*(source+i) == '\0') break; if(*(source+i) == FChar) beginIndex = i; } if(beginIndex == 0) //Don't Find Word result = false; for(int i = 0 ; *(tar+i) != '\0' ; ++i) { if((*(source+beginIndex+i)) != (*(tar+i))) { result = false; break; } } if(result == true) return source+beginIndex; else return &None; } 第8题 #include<stdio.h> #include<string.h> const int MLen = 100; void turnChar(char* word , int Len); int main(void) { char cinWord[MLen]; printf("PLease Input Any Word To Test:"); fgets(cinWord,MLen,stdin); int realLen = strlen(cinWord); turnChar(cinWord,realLen); for(int i = 0 ; i < realLen ; ++i) printf("%c",*(cinWord+i)); return 0; } void turnChar(char* word , int Len) { char mid[Len]; strncpy(mid,word,Len); int j = Len-1; for(int i = 0; i < Len ; ++i,--j) strcpy(word+i,mid+j); } 第9题 #include<stdio.h> #include<string.h> const int MLen = 100; void popSpace(char* source , int Len); int main(void) { char words[MLen]; printf("Please Input Any Words To Test:"); fgets(words,MLen,stdin); popSpace(words,MLen); fputs(words,stdout); return 0; } void popSpace(char* source , int Len) { char mid[Len]; strcpy(mid,source); for(int i = 0 , j = 0; i < Len ; ++i) { if(*(mid+i) == ' ') continue; else { strcpy(source+j,mid+i); ++j; } } } 第10题 #include<stdio.h> #include<string.h> #include<stdbool.h> const int MLen = 100; const int EleLen = 10; void putASCII(char (*word)[MLen] , int n); void putSource(char (*word)[MLen] , int n); void putLenght(char (*word)[MLen] , int n); void putFirstWord(char (*word)[MLen] , int n); int LenForFirstWord(char* word , int n); // Lenght For First Words int main(void) { char TestWord[EleLen][MLen]; int realLen = 0; for(int i = 0 ; i < EleLen ; ++i) { printf("PLease INput %dth Words:",i+1); fgets(*(TestWord+i),MLen,stdin); ++realLen; } bool on_off = true; while(on_off) { printf("A:ouput B:by ASCII C: by Lenght\n"); printf("D:by Lenght Of First Word Q:quit\n"); char ch; scanf("%c",&ch); getchar(); switch(ch) { case 'A':putSource(TestWord,realLen); break; case 'B':putASCII(TestWord,realLen); break; case 'C':putLenght(TestWord,realLen); break; case 'D':putFirstWord(TestWord,realLen); break; case 'Q':on_off = false; break; default:on_off = false; break; } } printf("Done!n"); return 0; } void putASCII(char (*word)[MLen] , int n) { for(int i = 0 ; i < n ; ++i) { for(int j = 0 ; j < MLen ; ++j) { char ch = *(*(word+i)+j); if(ch == '\0') break; printf("%d ",ch); } printf("\n"); } } void putSource(char (*word)[MLen] , int n) { for(int i = 0 ; i < n ; ++i) fputs(*(word+i),stdout); } void putLenght(char (*word)[MLen] , int n) { char mid[n][MLen]; for(int i = 0 ; i < n ; ++i) strcpy(*(mid+i),*(word+i)); for(int i = 0 ; i < n ; ++i) //sort by lenght { for(int j = i ; j < n ; ++j) { char midChar[MLen]; if(strlen(*(mid+i)) > strlen(*(mid+j))) { strcpy(midChar,*(mid+i)); strcpy(*(mid+i),*(mid+j)); strcpy(*(mid+j),midChar); } } } for(int i = 0 ; i < n ; ++i) fputs(*(mid+i),stdout); } void putFirstWord(char (*word)[MLen] , int n) { char mid[n][MLen]; for(int i = 0 ; i < n ; ++i) { printf("%d\n",LenForFirstWord(*(word+i),MLen)); printf("%d\n",LenForFirstWord(*(mid+i),MLen)); strcpy(*(mid+i),*(word+i)); } for(int i = 0 ; i < n ; ++i) //sort by lenght { for(int j = i ; j < n ; ++j) { char midChar[MLen]; if(LenForFirstWord(*(mid+i),MLen) > LenForFirstWord(*(mid+j),MLen)) { strcpy(midChar,*(mid+i)); strcpy(*(mid+i),*(mid+j)); strcpy(*(mid+j),midChar); } } } for(int i = 0 ; i < n ; ++i) fputs(*(mid+i),stdout); } int LenForFirstWord(char* word , int n) { int Lenght = 0; for(int i = 0 ; i < n ; ++i) { if((*(word+i)) == ' ') { Lenght = i; break; } } return Lenght; } 第11题 #include<stdio.h> #include<ctype.h> const int MaxLen = 100; int main(void) { char Word[MaxLen]; printf("Please Inupt Any Words To Test:\n"); int Counts = 0; while(Counts < MaxLen-1) //input { char ch = getchar(); if(ch != EOF) { Word[Counts] = ch; ++Counts; } if(ch == EOF) break; } Word[Counts] = '\0'; int Letters = 0; int upLetters = 0; int lowLetters = 0; int punct = 0; int digit = 0; for(int i = 0 ; i < Counts ; ++i) { if(isalpha(Word[i])) ++Letters; if(isupper(Word[i])) ++upLetters; if(islower(Word[i])) ++lowLetters; if(ispunct(Word[i])) ++punct; if(isdigit(Word[i])) ++digit; } printf("\nWe Get %d Letters,%d Upper,%d Lower,%d Punct,%d Digit.\n",Letters,upLetters,lowLetters,punct,digit); return 0; } 第12题 #include<stdio.h> int main(int argc , char* argv[]) { if(argc == 1) { printf("Bye!\n"); return 0; } for(int i = argc-1 ; i > 0 ; --i) { fputs(*(argv+i),stdout); printf(" "); } return 0; } 第13题 #include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<math.h> int myAtoi(char* v); int main(int argc , char* argv[]) { if(argc != 3) { printf("Wrong Element!\n"); printf("Done!\n"); return 0; } double D = atof(argv[1]); int E = myAtoi(argv[2]); double Pows = 1; for(int i = 0 ; i < E ; ++i) Pows *= D; printf("%.2lf\n",Pows); printf("Done!\n"); return 0; } int myAtoi(char* v) { int Index; for(int i = 0 ; ; ++i) { if(!isdigit(v[i])) { Index = i; break; } } int Value = 0; for(int i = Index-1,j=0 ; i >= 0 ; --i,++j) { int mid = v[i]; Value += (mid-48)*pow(10,j); } printf("%d\n",Value); return Value; } 第14题 #include<stdio.h> #include<string.h> #include<ctype.h> #include<math.h> int main(int argc , char** argv) { if(argc != 2) { printf("Wrong Element."); return 0; } int Len = 0; int allLen = strlen(*(argv+1)); for(int i = 0 ; i < allLen ; ++i) { if(((*(argv+1))[i]) > 47 && (*(argv+1))[i] < 59) Len += 1; } int Res = 0; for(int i = 0 ; i < Len ; ++i) Res += ((*(argv+1))[i] - 48)* pow(10,Len-1-i); //on ASCII, char '0' = 48(int) printf("%d",Res); return 0; } 第15题 #include<stdio.h> #include<string.h> #include<ctype.h> const int MaxLen = 100; const char choose_1[3] = "-p\0"; const char choose_2[3] = "-u\0"; const char choose_3[3] = "-l\0"; int main(int argc , char* argv[]) { if(argc != 2) { printf("Wrong Element!\n"); printf("Done!\n"); return 0; } char words[MaxLen]; int Counts = 0; printf("Please Inupt Any Words To Test:\n"); while(Counts < MaxLen-1) { char ch = getchar(); if(ch != EOF) { words[Counts] = ch; ++Counts; } if(ch == EOF) break; } words[Counts] = '\0'; printf("\n"); if(strncmp(*(argv+1),choose_1,2) == 0) { fputs(words,stdout); return 0; } if(strncmp(*(argv+1),choose_2,2) == 0) { for(int i = 0 ; i <= Counts ; ++i) { if(islower(words[i])) words[i] = toupper(words[i]); } fputs(words,stdout); return 0; } if(strncmp(argv[1],choose_3,2) == 0) { for(int i = 0 ; i <= Counts ; ++i) { if(isupper(words[i])) words[i] = tolower(words[i]); } fputs(words,stdout); return 0; } }
    转载请注明原文地址: https://ju.6miu.com/read-15325.html

    最新回复(0)