整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          C語言經典100例 - 96-100

          C語言經典100例 - 96-100

          目 96

          題目:計算字符串中子串出現的次數

          #include<cstdio>
          #include<cstring>
          
          char s1[20],s2[20],*p1,*p2;
          int cnt;
          // 全局變量默認初始值為0 
          
          // 這里其實可以通過kmp算法或者ac自動機算法實現
          // 但是由于好久不寫了,就寫最簡單的算法吧
          // 如果有興趣的話可以學一下hash,可以做很多字符串的事情 
          
          int main()
          {
              //這里默認s1為母串,s2為子串 
              scanf("%s%s",s1,s2);
              p1=s1, p2=s2;
              while(*p1 !='\0')
              {
                  if(*p1==*p2)
                  {
                      while(*p1==*p2 && *p2 !='\0')
                          p1++,p2++;
                  }
                  else
                      p1++;
                  if(*p2=='\0')
                      cnt++;
                  p2=s2;//什么時候p2重置呢?
              }
              printf("%d",cnt);
          }
          

          題目 97

          題目:從鍵盤輸入一些字符,逐個把它們送到磁盤上去,直到輸入一個#為止。

          #include<cstdio>
          #include<cstdlib> 
          
          char ch,filename[10];
          
          int main()
          {
              FILE *fp;//文件指針 
              scanf("%s",filename);
              // 這里默認此文件與程序在同一文件夾 
              fp=fopen(filename,"w");
              // 實際上如果找不到的話,這里會自動創建一個
              // 要注意這個是相對路徑,如果要處理絕對路徑怎么辦? 
              if(fp==NULL)
              {
                  printf("don't find file named\"%s\"",filename);
                  exit(0);//強制在此處終止程序 
              }
              ch=getchar();//起到什么作用?
              while((ch=getchar()) !='#')
              {
                  // 不運行的話,下面的代碼哪個是寫入文件? 
                  fputc(ch,fp);//寫入文件,會換行嗎? 
                  putchar(ch);// 運行時候可以把這里注釋掉 
              }
              fclose(fp);//記得關掉 
          }
          

          題目 98

          題目:從鍵盤輸入一個字符串,將小寫字母全部轉換成大寫字母,然后輸出到一個磁盤文件“test”中保存。輸入的字符串以!結束。

          #include<cstdio>
          #include<cstdlib>
          
          char str[100],filename[10];
          int i;
          int main()
          {
              FILE *fp;
              fp=fopen("test","w");
              if(fp==NULL)
              {
                  printf("don't find file named\"%s\"",filename);
                  exit(0);//強制在此處終止程序 
              }
              gets(str);//讀取一行字符串,要注意!結尾 
              // 大寫字母與小寫字母的ascii碼差32 
              while(str[i]!='!')
              { 
                  if(str[i] >='a' && str[i] <='z')
                  str[i]=str[i]- 32;
                  i++;
              }
              fprintf(fp,"%s",str);
              //這個是直接向文件中輸出的
              // 是追加還是覆蓋呢? 這個由什么決定?
              // 由fopen的第二個參數決定https://www.runoob.com/cprogramming/c-function-fopen.html 
              fclose(fp);
          }
          

          題目 99

          題目:有兩個磁盤文件A和B,各存放一行字母,要求把這兩個文件中的信息合并(按字母順序排列),輸出到一個新文件C中。

          #include<cstdio>
          #include<cstdlib>
          #include<cstring>
          #define R register
          
          // 最簡單的想法就是兩個同時讀入到一個字符數組,再利用排序算法進行排序 
          // 兩個代碼都是這樣的 
          
          // 這里先用不同的方法進行實現 
          // 可以先了解一下fgets函數
          /*
          fgets(str,n,fp);
          str:指向一個字符數組的指針
          n:要讀取的最大字符數(包括最后的空字符)
          fp: 指向 FILE 對象的指針
          */ 
          
          void sswap(R char &x, R char &y)
          {
              char t=x;
              x=y;
              y=t;
          }   
          
          char a[100],b[100],c[200];
          
          int main()
          {
              FILE *fp;
              fp=fopen("A","r");
              // 這個不會自動生成的 
              if(fp==NULL)
              {
                  puts("don't find file \"A\"");
                  exit(0);//強制在此處終止程序
              }
              fgets(a,100,fp);
              fclose(fp);
          
              /*隔開*/
              fp=fopen("B","r");
              fgets(b,100,fp);
              if(fp==NULL)
              {
                  puts("don't find file \"B\"");
                  exit(0);//強制在此處終止程序
              }
              fclose(fp);
              /*隔開*/
          
              strcat(a,b);
              int len=strlen(a);
              for(R int i=1;i < len;i++)
                  for(R int j=0;j < len-1;j++)
                      if(a[j] > a[j+1])
                          sswap(a[j],a[j+1]);
              fp=fopen("C","w");
              fprintf(fp,"%s",a);
              fclose(fp);
          }
          

          下面是書中使用的代碼:

          #include<cstdio>
          #include<cstdlib>
          
          // 這里改了一下頭文件,調整了一下排版 
          // 基本原理相同 
          
          int main()
          { 
              FILE *fp;
              int i,j,n;
              char c[160],t,ch;
              if((fp=fopen("A","r"))==NULL)
              {
                  printf("file A cannot be opened\n");
                  exit(0);
              }
              printf("\n A contents are :\n");
              for(i=0;(ch=fgetc(fp)) !=EOF;i++)
              {
                  c[i]=ch;
                  putchar(c[i]);
              }
              fclose(fp);
          
              //分隔 
              if((fp=fopen("B","r"))==NULL)
              {
                  printf("file B cannot be opened\n");
                  exit(0);
              }
              printf("\n B contents are :\n");
              for(i=0;(ch=fgetc(fp)) !=EOF;i++)
              {
                  c[i]=ch;
                  putchar(c[i]);
              }
              fclose(fp);
              // 分隔 
              n=i;
              for(i=0;i < n;i++)
                  for(j=i + 1;j < n;j++)
                      if(c[i] > c[j])
                          {
                              t=c[i];
                              c[i]=c[j];
                              c[j]=t;
                          }
              printf("\n C file is:\n");
              fp=fopen("C","w");
              for(i=0;i < n;i++)
              { 
                  putc(c[i],fp);
                  putchar(c[i]);
              }
              fclose(fp);
          }
          

          題目 100

          題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數據(包括學生號,姓名,三門課成績),計算出平均成績,況原有的數據和計算出的平均分數存放在磁盤文件"stud"中。

          0

          本例參考了網上的例子,唯一不一樣的是,我這里的操作是一步一步講解,網上僅是源碼。

          一、我們先創建一張空白的網頁,網頁要自適應手機。

          圖1

          二、我們再創建網頁的頭部。

          圖2

          圖3

          三、做出來的網頁頭部太丑了,我們要去掉盒子與瀏覽器的間隙,還有給頭部加內部距離。

          圖4

          圖5

          四、給網頁頭部添加一些內容。

          圖6

          圖7

          五、接下來開始做導航條了。

          圖8

          圖9

          六、發現沒,導航條居然看不見,沒有東西在里面自然是看不見的,我們加三個鏈接吧。

          圖10

          圖11

          七、這回是看見了,不過樣式太丑,我們改改樣式。

          圖12

          圖13

          八、加上內部距離,就好看了許多,即然是鏈接,我們加點動態吧,當鼠標在鏈接上面時,鏈接塊變色。

          圖14

          圖15

          九、開始做網頁內容,網頁內容我分為三塊,左右兩邊是側欄,中間是主要內容。

          圖16

          圖17

          十、我想讓它橫著排,它卻是豎著排,改改各個塊的樣式。

          圖18

          圖19

          十一、給主體的各個塊加點內容。

          圖20

          圖21

          十二、內容是有了,但你會發現各塊之間沒有間隙,貼得太近了,我們改一下樣式,加個內部距離。

          圖22

          圖23

          十三、距離是有了,但有一個側欄跑到了另一行,怎么回事?原來padding是會改變盒子的整體寬度,我們原本是100%,現在多了padding的寬度,自然就換行了,解決一下吧。

          圖24

          圖25

          十四、這回終于在一行了,接下來可以做網頁底部了。

          圖26

          圖27

          十五、改改樣式,讓底部好看一點。

          圖28

          圖29

          十六,這個時候,網頁的整體版面就完成了,再補充一個小內容,讓網頁瀏覽器在小于600像素寬的時候,主體內容的三個塊由橫變豎。

          圖30

          圖31

          目 96

          題目:計算字符串中子串出現的次數

          #include<cstdio>
          #include<cstring>
          
          char s1[20],s2[20],*p1,*p2;
          int cnt;
          // 全局變量默認初始值為0 
          
          // 這里其實可以通過kmp算法或者ac自動機算法實現
          // 但是由于好久不寫了,就寫最簡單的算法吧
          // 如果有興趣的話可以學一下hash,可以做很多字符串的事情 
          
          int main()
          {
              //這里默認s1為母串,s2為子串 
              scanf("%s%s",s1,s2);
              p1=s1, p2=s2;
              while(*p1 !='\0')
              {
                  if(*p1==*p2)
                  {
                      while(*p1==*p2 && *p2 !='\0')
                          p1++,p2++;
                  }
                  else
                      p1++;
                  if(*p2=='\0')
                      cnt++;
                  p2=s2;//什么時候p2重置呢?
              }
              printf("%d",cnt);
          }
          

          題目 97

          題目:從鍵盤輸入一些字符,逐個把它們送到磁盤上去,直到輸入一個#為止。

          #include<cstdio>
          #include<cstdlib> 
          
          char ch,filename[10];
          
          int main()
          {
              FILE *fp;//文件指針 
              scanf("%s",filename);
              // 這里默認此文件與程序在同一文件夾 
              fp=fopen(filename,"w");
              // 實際上如果找不到的話,這里會自動創建一個
              // 要注意這個是相對路徑,如果要處理絕對路徑怎么辦? 
              if(fp==NULL)
              {
                  printf("don't find file named\"%s\"",filename);
                  exit(0);//強制在此處終止程序 
              }
              ch=getchar();//起到什么作用?
              while((ch=getchar()) !='#')
              {
                  // 不運行的話,下面的代碼哪個是寫入文件? 
                  fputc(ch,fp);//寫入文件,會換行嗎? 
                  putchar(ch);// 運行時候可以把這里注釋掉 
              }
              fclose(fp);//記得關掉 
          }
          

          題目 98

          題目:從鍵盤輸入一個字符串,將小寫字母全部轉換成大寫字母,然后輸出到一個磁盤文件“test”中保存。輸入的字符串以!結束。

          #include<cstdio>
          #include<cstdlib>
          
          char str[100],filename[10];
          int i;
          int main()
          {
              FILE *fp;
              fp=fopen("test","w");
              if(fp==NULL)
              {
                  printf("don't find file named\"%s\"",filename);
                  exit(0);//強制在此處終止程序 
              }
              gets(str);//讀取一行字符串,要注意!結尾 
              // 大寫字母與小寫字母的ascii碼差32 
              while(str[i]!='!')
              { 
                  if(str[i] >='a' && str[i] <='z')
                  str[i]=str[i]- 32;
                  i++;
              }
              fprintf(fp,"%s",str);
              //這個是直接向文件中輸出的
              // 是追加還是覆蓋呢? 這個由什么決定?
              // 由fopen的第二個參數決定https://www.runoob.com/cprogramming/c-function-fopen.html 
              fclose(fp);
          }
          

          題目 99

          題目:有兩個磁盤文件A和B,各存放一行字母,要求把這兩個文件中的信息合并(按字母順序排列),輸出到一個新文件C中。

          #include<cstdio>
          #include<cstdlib>
          #include<cstring>
          #define R register
          
          // 最簡單的想法就是兩個同時讀入到一個字符數組,再利用排序算法進行排序 
          // 兩個代碼都是這樣的 
          
          // 這里先用不同的方法進行實現 
          // 可以先了解一下fgets函數
          /*
          fgets(str,n,fp);
          str:指向一個字符數組的指針
          n:要讀取的最大字符數(包括最后的空字符)
          fp: 指向 FILE 對象的指針
          */ 
          
          void sswap(R char &x, R char &y)
          {
              char t=x;
              x=y;
              y=t;
          }   
          
          char a[100],b[100],c[200];
          
          int main()
          {
              FILE *fp;
              fp=fopen("A","r");
              // 這個不會自動生成的 
              if(fp==NULL)
              {
                  puts("don't find file \"A\"");
                  exit(0);//強制在此處終止程序
              }
              fgets(a,100,fp);
              fclose(fp);
          
              /*隔開*/
              fp=fopen("B","r");
              fgets(b,100,fp);
              if(fp==NULL)
              {
                  puts("don't find file \"B\"");
                  exit(0);//強制在此處終止程序
              }
              fclose(fp);
              /*隔開*/
          
              strcat(a,b);
              int len=strlen(a);
              for(R int i=1;i < len;i++)
                  for(R int j=0;j < len-1;j++)
                      if(a[j] > a[j+1])
                          sswap(a[j],a[j+1]);
              fp=fopen("C","w");
              fprintf(fp,"%s",a);
              fclose(fp);
          }
          

          下面是書中使用的代碼:

          #include<cstdio>
          #include<cstdlib>
          
          // 這里改了一下頭文件,調整了一下排版 
          // 基本原理相同 
          
          int main()
          { 
              FILE *fp;
              int i,j,n;
              char c[160],t,ch;
              if((fp=fopen("A","r"))==NULL)
              {
                  printf("file A cannot be opened\n");
                  exit(0);
              }
              printf("\n A contents are :\n");
              for(i=0;(ch=fgetc(fp)) !=EOF;i++)
              {
                  c[i]=ch;
                  putchar(c[i]);
              }
              fclose(fp);
          
              //分隔 
              if((fp=fopen("B","r"))==NULL)
              {
                  printf("file B cannot be opened\n");
                  exit(0);
              }
              printf("\n B contents are :\n");
              for(i=0;(ch=fgetc(fp)) !=EOF;i++)
              {
                  c[i]=ch;
                  putchar(c[i]);
              }
              fclose(fp);
              // 分隔 
              n=i;
              for(i=0;i < n;i++)
                  for(j=i + 1;j < n;j++)
                      if(c[i] > c[j])
                          {
                              t=c[i];
                              c[i]=c[j];
                              c[j]=t;
                          }
              printf("\n C file is:\n");
              fp=fopen("C","w");
              for(i=0;i < n;i++)
              { 
                  putc(c[i],fp);
                  putchar(c[i]);
              }
              fclose(fp);
          }
          

          題目 100

          題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數據(包括學生號,姓名,三門課成績),計算出平均成績,況原有的數據和計算出的平均分數存放在磁盤文件"stud"中。


          主站蜘蛛池模板: 久久精品黄AA片一区二区三区| 亚洲码一区二区三区| 日本不卡一区二区三区| 日本一区二区三区久久| 麻豆文化传媒精品一区二区| 久久久久人妻精品一区三寸蜜桃| 无码人妻精品一区二区三区久久久 | 免费一区二区无码视频在线播放 | 在线精品一区二区三区电影| 无码精品国产一区二区三区免费| 国产精品被窝福利一区| 日本一区二区三区不卡视频中文字幕| 亚洲综合av一区二区三区 | 好爽毛片一区二区三区四| 精品一区二区三区3d动漫| 亚洲av无码一区二区三区天堂| 亚洲一区精品视频在线| 色噜噜狠狠一区二区三区| 欧洲无码一区二区三区在线观看| 国产av一区二区三区日韩 | 精品一区二区三区在线观看l | 3d动漫精品成人一区二区三| 香蕉久久av一区二区三区| 久久精品一区二区三区日韩| 亚欧色一区W666天堂| 日韩精品区一区二区三VR | 久久亚洲中文字幕精品一区| 国产日韩高清一区二区三区| 国产激情一区二区三区| 熟女性饥渴一区二区三区| 久久精品国产一区二区三区日韩| 看电影来5566一区.二区| 精品无码人妻一区二区免费蜜桃| 精品视频无码一区二区三区| 91精品福利一区二区| 国产精品美女一区二区三区 | 国产一区二区三区免费看| 亚州国产AV一区二区三区伊在| 91国在线啪精品一区| 99久久人妻精品免费一区| 精品久久久久久无码中文字幕一区 |