第二次作業




【6-7】 刪除字符串中數字字符
1.設計思路:定義函數,引入變量,通過for循環,在循環中判斷條件,刪除字符。
2.實驗代碼:
`

                void delnum(char *s)

                    {

                int i,j;

                for(;*(s+i)!='\0';)

                {

	            if('0'<=*(s+i)&&*(s+i)<='9')

	            {

		            for(j=i;*(s+j)!='\0';j++)

		            {

			            *(s+j)=*(s+j+1);

		            }
	        
	            }else{i++;

    	                        
	           }

	    
                }    

`
3.本題調試過程碰到問題及解決辦法:無。
4.流程圖:

【6-8】 統計子串在母串出現的次數
1.設計思路:通過題目給出的字符串,使用雙重for循環,從循環中先找出相同的字符串,再判斷出現次數。

2.實驗代碼:
`

    int fun(char *str,char *substr)

    {

          int n=0,i,j,count=0;

              for(i=0;*(str+i)!='\0';i++)

                 {

                          for(j=0;*(substr+j)!='\0';j++)

                              {

                                        if(*(substr+j)==*(str+i+j))

                                                count=1;

                                         else

                                                count=0;

                                 }

                      if(count)

      {

        n++;

        count=0;

      }

    }

    return n;

    }

`
3.本題調試過程碰到問題及解決辦法:最開始寫代碼時只有思路,但不知從何下手,具體細節不會做,在同學講解幫助下寫出了代碼。
4.流程圖:

【 6-9 】字符串中除首尾字符外的其余字符按降序排列
1.設計思路:首先調用函數,然后定義變量,使用for循環在循環中判斷,進而輸出。
2.實驗代碼:
`

int fun(char *s,int num)

{

  int i,m=(num-2),j;

  for(i=1;i<=(num-2);i++)

  {

    if(*(s+m)>*(s+i))

    {

      j=*(s+m);*(s+m)=*(s+i);*(s+i)=j;

    }

  }

  if(num>0)

  {


    num--;

    fun(s,num);
    
  }

    }

`
3.本題調試過程碰到問題及解決辦法:無。

【7-1】 輸出學生成績
1.設計思路:定義變量,輸入人數,然后使用動態內存分配語句,使用循環,冒泡排序法,進行排序並輸出。

2.實驗代碼:
`

#include<stdio.h>

#include<stdlib.h>

int main()

{

      double avg=0,max=0,min=999;

      int i=0,*p,j;

      scanf("%d",&j);

  if((p=(int *)malloc(j*sizeof(int)))==NULL)

  exit(1);

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

  {

    scanf("%d",p+i);

    if(p[i]>max)

    max=p[i];

    if(p[i]<min)
        
    min=p[i];

    avg+=p[i];
        
          }

          avg=avg/j;

          free(p);

      printf("average = %.2lf\nmax = %.2lf\nmin = %.2lf",avg,max,min);

    }

`
3.本題調試過程碰到問題及解決辦法:無。

【7-1】 計算職工工資

1.設計思路:首先定義結構體變量,然后輸入,引用結構體變量,使用循環輸出各項。

2.實驗代碼:

`

    #include<stdio.h>  

    typedef struct work  

    {  

        char name[100];  

        float base;  

        float fdgz;  

        float expend;  

        float sum;  

      

      

    }WORK;  

    int main()  

    {  

        WORK s[10000];  

        int n, i,j;  

        scanf("%d", &n);  

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

        {  

              

            scanf("%s", &s[i].name);  

            scanf("%f", &s[i].base);  

            scanf("%f", &s[i].fdgz);  

            scanf("%f", &s[i].expend);  

            s[i].sum = (s[i].base + s[i].fdgz)-s[i].expend;  

        }  

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

        {  

            printf("%s %.2f\n", s[j].name, s[j].sum);  

          

        }  

        return 0;  

    }

`

3.本題調試過程碰到問題及解決辦法:無。

【7-2】 計算平均成績

1.設計思路:先定義變量類型,使用其定義該類型數組,先使用for循環輸入,算出總成績(sum),讓后計算平均數,最后通過for循環在循環中判斷,進而輸出。

2.實驗代碼:

`

    #include<stdio.h>

    struct student{

        char num[6];

        char name[10];

        double grade;

    }s[1000];

    int main()

    {

        int n;

        scanf("%d\n",&n);

        int i;

        double sum=0;

        double average;

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

        {

	        scanf("%s %s %lf",&s[i].num,&s[i].name,&s[i].grade);

                        

        }

             int j;

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

        {

    	        sum=sum+s[j].grade;

        }

        average=sum/n;

        printf("%.2lf\n",average);

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

        {

	        if(average>s[j].grade)

	        {

		        printf("%s %s\n",s[j].name,s[j].num);

	        }

        }

        return 0;

                	

    }

`

3.本題調試過程碰到問題及解決辦法:無。

4.流程圖:

【6-1】 按等級統計學生成績

1.設計思路:先定義函數,引入變量,在for循環中通過if語句進行多層判斷,將學生成績分出等級,然后使小於60分的單獨計算出其數目,最后返回其值(count)即可。

2.實驗代碼:

`

    int set_grade( struct student *p, int n ){

        int count = 0, i;

        for(i = 0;i<n;i++,p++){

	        if(p->score<60){

		        p->grade = 'D';

		        count++;

	        }

	        else if((p->score<70)&&(p->score>=60)){

		        p->grade = 'C';

	        }

	        else if((p->score<85)&&(p->score>=70)){

		        p->grade = 'B';

	        }

	        else{

		        p->grade = 'A';

	        }

        }

        return count;

    }

`
3.本題調試過程碰到問題及解決辦法:無。
4.流程圖:

【6-2】 結構體數組按總分排序

1.設計思路:調用calc函數,使用循環進行計算。然后調用sort函數,使用for循環,在循環中用if語句判斷,進而返回值。

2.實驗代碼:

`

void calc(struct student *p,int n)

{

  int i=0;

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

  {

    (p+i)->sum=(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2];

  }

}

void sort(struct student *p,int n)

{

  int j=0,min=0;

  struct student a;

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

  {

    if((p+j)->sum<(p+min)->sum)

    {

      min=j;

    }

  }

  a=*(p+min);

  *(p+min)=*(p+n-1);

  *(p+n-1)=a;

  if(n>1)

  {


    n--;

    sort(p,n);

  }

}

`
3.本題調試過程碰到問題及解決辦法:無。

【圖表】:

【git地址】:https://git.coding.net/lfyyyy/seven

【截圖】:
點評同學:董欣:http://www.cnblogs.com/dx2017/p/8666072.html
高立彬: http://www.cnblogs.com/gao628526/p/8665187.html
董雅潔:http://www.cnblogs.com/exo123/p/8663311.html
總結:近兩周的學習讓我了解到了c語言中的許多新的知識,比如如何定義變量類型,還有如何使用已定義的變量類型定義變量,如何多變的使用指針等等,最開始還有些不太理解,兩周下來已經理解的差不多了,就是對待c語言的習題,有思路但無從下手,以后勤加練習,希望有所突破。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM