第二次做業

做業要求一:
做業截圖:
C高級第二次做業(1)
6-7:

6-8:

6-9:

7-1:

C高級第二次做業(2):
7-1:

7-2:

C高級第二次做業(3):
6-1:

6-2:
html

做業要求二:
6-7 刪除字符串中數字字符
1.實驗代碼:c++

#include <stdio.h>
void delnum(char *s);
int main ()
{ char item[80];
gets(item);
 delnum(item);
 printf("%s\n",item);
 return 0;
}
void delnum(char *s)
{
  int i=0,j=0;
  while(s[i]!='\0'){
    if(s[i]>'9'||s[i]<'0')
    {
      s[j]=s[i];
      j++;
    }
    i++;
  }
  s[j]='\0';
}

2.設計思路:
第一步:本題要刪除字符串中數字,經過數組遍歷字符串,遇到數字刪除,將以後的字符向前移動。
第二步:定義變量ij,運用if判斷字符串是否爲數字,循環遍歷字符串和ASCII碼值達到目的。
3.遇到問題:在運用while循環時出現編譯錯誤,經過devc++提示改正
4.流程圖:
git

6-8統計子串在母串出現的次數
1.實驗代碼:算法

#include<stdio.h>
int fun(char *str,char *substr);
int main()
{ char str[81]="asdasasdfgasdaszx67asdmklo",substr[4]="asd";
 int n;
 n=fun(str,substr);
 printf("n=%d\n",n);
 return 0;
}
int fun(char *str,char *substr)
{
    int i=0,num=0;
  
    do
    {
        if(*(str+i)=='a'&&*(str+i+1)=='s'&&*(str+i+2)=='d')
        {
            num++;
        }
        i++;
    }while(*(str+i)!='\0');
    return num;
}

2.設計思路:
第一步:運用if語句和循環來遍歷字符串和判斷字符串是否爲子串;
第二步:遇到子串循環變量加一,循環至末尾輸出。
3.遇到問題:
提交過程當中遇到了不少次編譯錯誤,經過devc++提示改正。
幾回答案錯誤是由於把I++放錯了位置,仔細檢查改正過來。編程

6-9字符串中除首尾字符外的其他字符按降序排列
1.實驗代碼:數組

#include <stdio.h>
int fun(char *s,int num);
int main()
{
 char s[10];
 gets(s);
 fun(s,7);
 printf("%s",s);
 return 0;
 }
int fun(char *s,int num)
{
    int i,j;
    char temp;
    for(i=0;i<num;i++)
    {
       for(j=1;j<num-2;j++)
       {
        if(s[j]<s[j+1])
       {
       temp=s[j]; 
       s[j]=s[j+1]; 
       s[j+1]=temp;
       }
}
}
}

2.設計思路:
第一步:定義循環變量,運用循環遍歷數組。
第二步:運用冒泡法進行排序。
3.遇到問題:沒有遇到問題。sass

7-1輸出學生成績
1.實驗代碼:函數

#include<stdio.h> 
int main()
{
int n,i;
float max,min=100,sum=0,x,average;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    scanf("%f ",&x);
    if(x>max)
    {
        max=x;
    }
    if(x<min)
    {
        min=x;
    }
    sum=sum+x;
    average=sum/n;
}
printf("average = %.2f\n",average);
printf("max = %.2f\n",max);
printf("min = %.2f",min);
return 0;
}

2.設計思路:這道題運用了常規的思路,並無想到如何運用指針。
第一步:定義出各個變量。
第二步:運用if語句和計算輸出想要結果。
3.遇到問題:這道題在提交的過程當中也遇到了不少次錯誤,總的來講都是不夠認真所致使。仔細檢查後改正。.net

7-1計算職工工資
1.實驗代碼:設計

#include<stdio.h>
struct employees 
{                                      
    char name[10];                 
    float basic,floating,out;
}; 
int main()
{
    int n,i=0;
    scanf("%d",&n);
    struct employees e[n];
    for(i=0;i<n;i++)
    {
        scanf("%s %f %f %f",e[i].name,&e[i].basic,&e[i].floating,&e[i].out);
    }
    for(i=0;i<n;i++)
    {
        printf("%s %.2f\n",e[i].name,e[i].basic+e[i].floating-e[i].out);
    }
}

2.設計思路:
第一步:定義一個結構體,其中含有名字,基本工資,浮動工資和支出。
第二步;在函數中輸入一個n,n爲人數,運用循環輸入各員工的數據,並輸出結果。
3.遇到問題:對於代碼的檢查不夠仔細緻使老是答案錯誤,最後發現輸出結果中的e[i]錯寫爲e[n]。
4.流程圖:

7-2計算平均成績
1.實驗代碼:

#include<stdio.h>
#include<stdlib.h>
struct student
{
    char name[10];
    char num[5];
    int score;
};
int main()
{
    int n,i=0;
    float average,sum=0;
    scanf("%d",&n);
    struct student s[n];
    for(i=0;i<n;i++){
        scanf("%s %s %d",s[i].num,s[i].name,&s[i].score);
        sum=sum+s[i].score;
    }
    average=(float)(sum/n*1.0);
    printf("%.2f\n",average);
    for(i=0;i<n;i++)
    {
        if((float)(s[i].score)<average)
        {
            printf("%s %s\n",s[i].name,s[i].num);
        }
    }
}

2.設計思路:
第一步:依然是定義一個結構體,其中有姓名 學號和成績;
第二步:在函數中定義出n,i,sum,average,各值;
第三步;運用循環輸入數據,運用算法計算結果,再次用循環輸出值;
3.遇到問題:沒有遇到問題

6-1 按等級統計學生成績
1.實驗代碼:

#include <stdio.h>
#define MAXN 10

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

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

int main()
{   
    struct student stu[MAXN], *ptr;
    int n, i, count;
    ptr = stu;
    scanf("%d\n", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}
int set_grade( struct student *p, int n )
{
    int i, count = 0;
    for(i = 0;i < n;i ++,p++){
        if((*p).score <=100 && (*p).score >= 85){
            (*p).grade = 'A';
        }else if((*p).score <85 && (*p).score >= 70){
            (*p).grade = 'B';
        }else if((*p).score && (*p).score >= 60){
            (*p).grade = 'C';
        }else{
            (*p).grade = 'D'; 
            count ++;
        }
    }
    return count;
 }

2.設計思路:
第一步:定義變量i和count.
第二步:經過循環和if語句判斷學生成績,最後返還count值;
3.遇到問題:沒有遇到問題。

6-2結構體數組按總分排序
1.實驗代碼:

#include <stdio.h>
struct student                  
{
int num;
char name[15];
float score[3];
float sum;
};
void calc(struct student *p,int n);  
void sort(struct student *p,int n);
int main()
{
struct student stu[5];
int i,j;
float f;
for(i=0;i<5;i++)
{
    scanf("%d%s",&stu[i].num,stu[i].name);
    for(j=0;j<3;j++)
    { 
        scanf("%f",&f);
        stu[i].score[j]=f;
    }
}
calc(stu,5);
sort(stu,5);
for(i=0;i<5;i++)
{
    printf("%5d%15s",stu[i].num,stu[i].name);
    printf("  %.1f  %.1f  %.1f  %.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].sum);
}
return 0;
}
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,i=0;
    struct student a;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(p[j].sum<p[j+1].sum)
            {
                a=p[j];
                p[j]=p[j+1];
                p[j+1]=a;
            }
        }
    }
}

2.設計思路:起初並無設計思路,然後仍是求助於大佬趙寅勝。
第一步:在void calc這一函數中求出各同窗成績和;
第二步:在void sort函數中用冒泡法將結果排序;
3.遇到問題:在編程過程當中遇到了不少問題,比較突出的就是編譯錯誤,這是結構指針沒有熟練掌握所致使的。最後仍是趙寅勝大佬指出個人指針錯誤運用。
4.流程圖:

做業要求三:
上傳至git
地址: https://coding.net/u/AssassinCreed/p/Devil-May-Cry/git/tree/master/?public=true
截圖:

做業要求四
表格:

折線圖:

做業要求五:
評論同窗:
顧家瑋:http://www.cnblogs.com/qq807443119/p/8747414.html
班慶澤:http://www.cnblogs.com/wsbqz/p/8746704.html
高立彬:http://www.cnblogs.com/gao628526/p/8665187.html

相關文章
相關標籤/搜索