C语言第二次作业

习题6.7

  1. 解题思路

    1. 检测当前字符是否为数字,是则跳转下一步;
    2. 将后面所有字符前移一位,跳转到上一步
  2. 流程图C语言第二次作业_第1张图片

  3. 代码

     void delnum(char *s){
            int i=0,j=0;
            for(;*(s+i)!='\0';i++)
            if('0'<=*(s+i)&&*(s+i)<='9'){
             for(j=0;*(s+i+j)!='\0';j++)
               *(s+i+j)=*(s+i+j+1);
              i--;
          }
        } 
  4. 出现的错误

    • 错误提示:结果错误
    • 错误原因:循环时i的赋值错误
    • 解决方法:将i--放在if判断后

习题6.8

  1. 解题思路

    1. 检测当前str字符是否与substr第一个字符一致,如果一致,跳转到步骤2
    2. str与下面几个字符分别与substr中字符检测,如果一致,count加一
    3. 如果不一致,str计数器加一,返回第一步
    4. str读到\0时,返回count值
  2. 流程图

  3. 代码

     int fun(char *str,char *substr){
       /*return 4;*/
       int count=0;
       int i=0,j=0;
       for(;*(str+i)!='\0';i++){
           if(*(str+i)==*substr){
             for(j=0;j<4;j++){
                 if(*(str+i+j)!=*(substr+j))
             break;
             }
             if(j==3)
             count++;
        }
        }
        return count;
        }
  4. 出现的问题

    • 错误提示:结果错误
    • 错误原因:有一个指针调用时候忘加*号
    • 解决办法:补上

习题6.9

  1. 解题思路

    1. while循环判断字符串长度
    2. 跳过第一个字符,冒泡排序法进行排序,掉换顺序之前判断是否为小写字母,是则调换,不是不调换
  2. 流程图

  3. 代码

     int fun(char *s,int num){
         int i,j=0,t;
         char a;
         while(*(s+j)!='\0')
             j++;
         for(i=1;i*(s+i)){
                     a=*(s+i);
                     *(s+i)=*(s+t);
                     *(s+t)=a;   
         }
     }
  4. 出现的问题

    • 错误提示:运行超时&&结果错误
    • 错误原因:冒泡法时边界设置错误
    • 解决办法:改正边界值

习题7.1

  1. 解题思路

    1. 输入N
    2. 轮询输入成绩
    3. for循环计算sum总值,并排出最大最小值,计算出平均值
    4. 输出
  2. 流程图C语言第二次作业_第2张图片

  3. 代码

     #include 
           int main(){
               int N;
               float average,max,min,sum=0;
               scanf("%d",&N);
               int a[N];
               int i=0,j=0;
               for(i=0;imax)
                       max=a[j];
                   if(a[j]
  4. 出现的问题
    • 未按照动态内存分配来完成

习题7.1

  1. 解题思路

    1. 定义结构;
    2. 输入,相加
    3. 输出
  2. 流程图

  3. 代码

     #include 
             struct info{
               char name[10];
               float basic_salary;
               float float_salary;
               float out;
               float sum;
             };
             int main(){
               int N,i;
               scanf("%d",&N);
               struct info money[N];
               for(i=0;i
  4. 出现的错误

    • 错误提示:结果错误
    • 错误原因:输入类型错误
    • 解决方法:scanf处修改输入类型

习题7.2

  1. 解题思路

    1. 定义结构;
    2. 输入
    3. sum累加
    4. 求平均数,输出
    5. 轮询查询当前将输出数是否小于平均数,否则输出好别扭
  2. 流程图

  3. 代码

     #include 
             struct info{
                 char student_num[11];
                 char student_name[6];
                 int student_grade;
             }; 
                 int main()
             {
                 int i,N;
                 float avg=0;
                 int sum=0;
                 scanf("%d",&N);
                 struct info student[N];
                 if(N>0&&N<=10){
                 for(i=0;istudent[i].student_grade){
                         printf("%s %s\n",student[i].student_name,student[i].student_num);   
                 }
                 }
                 return 0;
             } 
  4. 出现的错误

    • 错误提示:结果错误
    • 错误原因:求avg时数据类型冲突
    • 解决方法:avg=sum*1.0/N

习题6.1

  1. 解题思路

    1. 按分数分类ABCD,如果分到D,count+1
  2. 流程图C语言第二次作业_第3张图片

  3. 代码

     int set_grade( struct student *p, int n )
             {
               int i,count=0;
               for(i=0;iscore>=85)&&(p->score<=100))
                   p->grade='A';
                   else if((p->score>=70)&&(p->score<=84))
                   p->grade='B';
                   else if((p->score>=60)&&(p->score<=69))
                   p->grade='C';
                   else if((p->score<60)&&(p->score>=0)){
                   p->grade='D';
                   count++;
                       }
               }
    
               return count;
             } 
  4. 出现的错误

    • 错误提示:结果错误
    • 错误原因:指针数目错误
    • 解决方法:重新设计算法,改善代码

习题6.2

  1. 解题思路

    1. 计算p.sum
    2. 起泡法调序p.sum
  2. 流程图

  3. 代码

     void calc(struct student *p,int n)
             {
                 int i;
                 for(i=0;i
  4. 出现的错误

    • 错误提示:无

你可能感兴趣的:(C语言第二次作业)