整合營銷服務商

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

          免費咨詢熱線:

          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"中。


          主站蜘蛛池模板: 中文日韩字幕一区在线观看| 伊人久久大香线蕉AV一区二区 | 国产一区在线mmai| 福利一区二区三区视频午夜观看| 亚洲国产日韩在线一区| 91福利国产在线观看一区二区| 日本精品3d动漫一区二区| 九九久久99综合一区二区| 亚洲福利视频一区二区| 老湿机一区午夜精品免费福利| 性色av无码免费一区二区三区 | 无码精品不卡一区二区三区 | 一区二区三区影院| 国产高清在线精品一区小说 | 国产免费一区二区三区VR| 亚洲欧美日韩一区二区三区在线| 一区高清大胆人体| 日韩精品无码一区二区三区| 久久99精品一区二区三区| 亚洲一区二区三区高清| 久久久久人妻一区二区三区| 亚洲色偷偷偷网站色偷一区| 亚洲午夜电影一区二区三区 | 精品久久久久中文字幕一区| 亚洲爽爽一区二区三区| 91久久精一区二区三区大全| 国产区精品一区二区不卡中文| 成人精品视频一区二区三区不卡 | 国产综合视频在线观看一区| 在线不卡一区二区三区日韩| 福利片福利一区二区三区| 一区二区三区久久精品| 手机看片一区二区| 人妻无码视频一区二区三区| 在线观看国产一区二三区| 国产一区韩国女主播| 国产精品 视频一区 二区三区| 国产精品视频一区二区三区四| 精品女同一区二区三区免费站| 成人一区二区三区视频在线观看 | 亚洲一区二区三区香蕉|