2018上IEC计算机高级语言(C)作业 第3次作业

一、例程调试(20分)

调试下面2个例程,各位同学调试用自己的学号模3(即除以3取余数)加1序号及该序号乘以2的题。写明调试过程,如错误现象(如给定输入数据,但输出未实现预计功能),编译错误(截小图)提示等,写明调试修改过程(10分); 说明:有可能没有错误提示,但未达到预计功能。题目来源为“ C语言程序设计实验与习题指导(第3版)调试源程序”中error07_1~6;利用Autoflowchart软件查看程序的流程图,将流程图导成word格式,加入必要的文字说明,并说明该程序的功能(10分)

#include <stdio.h>

int main(void)

{

    int i, x, n;

    int a[10];

 

    printf("输入数组元素的个数:");

    scanf("%d", &n);

    printf("输入数组%d个元素:", n);

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

        scanf("%d", a[i]);

    printf( "输入x:" );   

    scanf("%d", &x);

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

        if(a[i] != x)  break;

    if(i != n)

        printf( "没有找到与%d相等的元素!\n", x);

    else

        printf( "和%d相同的数组元素是a[%d] = %d\n", x, i, a[i]);

 

    return 0;

}

 

二、Pta作业 计算机高级语言(C)_第6次作业_数组1   (20分)

三、Pta作业 计算机高级语言(C)_第6次作业_数组2  (20分)

四、Pta作业 算机高级语言(C)_第6次作业_数组3二维数组+字符数组 (10分)

五、数组知识点自测(每一项均写一个例程,并附测试数据及测试结果) (30分)

5.1读入若干整数,找出最大值,最小值及位于数组的位置;

#include<stdio.h>

int main()

{

int arr[10] = {0};

int i = 0;

int max = 0;

int min = 0;

printf("请输入10个整数:");

for (i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++)

{

scanf("%d",&arr[i]);

}

max = arr[0];

for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

if (max < arr[i])

{

max = arr[i];

}

}

min = arr[0];

for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

if (min > arr[i])

{

min = arr[i];

}

}

printf("max=%d\n", max);

printf("min=%d\n", min);

return 0;

}5.2 读入若干整数,输入要查找的整数X,输出X第一个位置或not found;

#include <stdio.h>
int main(void)
{
   int i, n, res, x;
   int a[10];
  
     
   n=10;
   for(i = 0; i < n; i++)
       scanf("%d", &a[i]);
   scanf("%d", &x);
  
   res = search(a, n, x);
  
   if(res != -1)
        printf("index = %d\n", res);
     else
        printf("Not found\n");
   }
   
        return 0;
}

 

 

5.3 交换排序(降序);

#include<stdio.h>

 

#define N 10

int t;

int main()

{

int a[N] = {90,80};

int i,j,k;

for(j = 0;j<=N-1;j++)

{

for(i=0;i<=N-j-1;i++)

{

if(a[i]<=a[i+1])

{

k = a[i];

a[i]=a[i+1];

a[i+1] = k;

t = t+1;

}

}

}

return 0;

 

 5.4 选择排序(升序)

#include<stdio.h>

 

int main(void)

{

  int i,j,t;

  int min;

  int num[10];

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

  {

    scanf("%d",&num[i]);

  }

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

  {

   min=i;

   for(j=i+1;j<=10;j++)

   {

   if(num[min]>num[j]){

   min=j;

  }

}

t=num[i];

num[i]=num[min];

num[min]=t;

  }

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

  {

   printf("%5d",num[i]);

  }

  

  return 0;

}

 

5.5 二维数组编程;读入一个整形二维数组,找出最小值及位置,求各行数据的和 ;

#include<stdio.h>

 

int main()

{

  int m;

  int n;

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

  int arr[m][n];

  int a,b;

  for(a=0;a<m;a++)

  {

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

    {

      scanf("%d",&arr[a][b]);

    }

    

  }

  int sum = 0;

  for(a=0;a<m;a++)

  {

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

    {

      sum=sum+arr[a][b];

    }

    printf("%d\n",sum);

    sum=0;

  }

  

  

  return 0;

}

5.6 读入一个字符串,直到遇到#为止,将字符中大小字符转为小写,小写字符转为大写。

 

#include<stdio.h>

 

int main(void)

{

char arr[30];

int i;

for(i=0;arr[i-1]!='#';i++)

{

scanf("%c",&arr[i]);

}

for(i=0;arr[i]!='#';i++)

{

if(islower(arr[i]))

{

arr[i]=toupper(arr[i]);

}

else

{

arr[i]=tolower(arr[i]);

}

printf("%c",arr[i]);

}

 

return 0;

}

六、持续改进学习方法、措施落实情况(10分)

上一周学习了结构体,链表,并联系了一个600行的通讯录,但是错误过多,无法运行。原因是对二级指针,getstring,malloc不够熟悉

 

posted @ 2018-05-29 17:55  程昱铭  阅读(310)  评论(0编辑  收藏  举报