第三次作业

 

3.

#include <stdio.h>

int main(void)

{

    int a[6][6], i, j, m, n, sum;

 

    printf("Input m, n:");

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

    printf("Input array:\n");

    for(i = 0; i < m; i++)          /* 调试时设置断点 */

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

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

    sum = 0;                    /* 调试时设置断点 */

    for( i = 0; i < m; i++){  

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

            sum = sum + a[i][j];

        printf("sum of row %d is %d\n",i,sum);   /* 调试时设置断点 */

    }

   

    return 0;

}

本题求二维数组每行的和,原程序运行无编译错误但功能未实现。

 

6.

#include <stdio.h>    

#include <string.h>

int main(void)

{

    int i, s;

    char str[80];

 

    i = 0;

    while((str[i] = getchar( )) != "\n")

        i++;

    str[i] = '\0';

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

        if(str[i] <= '0' || str[i] >= '9')

            s = s * 10 + str[i];

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

 

    return 0;

}

本程序目的是倒序输出字符,编译出错,原因及修改如下图。

 

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

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

#include <stdio.h>
int main() 
{
    int a[10],i,j,t,imax,imin,max,min,N;
    scanf("%d",&N);
    for(i = 0; i < N; i++)
    {
        scanf("%d",&a[i]);
    }
    t=0;
    max=a[0];
    min=a[0];
    imax=0;
    imin=0;
    for(i=0;i<N;i++)
    {
        if(a[i]>max)
        {
            max=a[i];
            imax=i;
        }
    }
    for(i=0;i<N-1;i++)
    {
        if(a[i]<min)
        {
            min=a[i];
            imin=i;
        }
    }
    printf("最大值%d,数组位置a[%d],最小值%d,数组位置a[%d]",max,imax,min,imin);
    return 0;
}

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

#include <stdio.h>
int main()
{
    int n,x,N,i,j,t;
    long a[20];
    scanf("%d %d",&n,&x);
    for(t=0;t<n;++t)
    {
        scanf("%ld",&a[t]);
    }
    for(i=0;i<n;++i)
    {
        if(a[i]==x)
        {
        j=i;
        printf("a[%d]",j);
        break;
        }
    }
    if(i>=n)
    {
        printf("Not Found\n");
    }
    return 0;
}

5.3 交换排序(降序);

#include <stdio.h>
#define N 10
int main(void)
{
    int a[N];
    int i,j,temp;
    for (i=0;i<N;i++){
        scanf("%d",&a[i]);
    }
    for (i=0;i<N-1;i++) {
        for (j = 0; j < N - 1; j++) {
            if (a[j] < a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    for (i=0;i<N;i++){
        printf("%4d",a[i]);
    }
    return 0;
}  

5.4 选择排序(升序);

#include <stdio.h>
int main(void)
{
    const int N = 10;
    int a[N], i, j , t;
    for(i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }
    for(j = 0; j <3; j++){
        int idx;
        idx = j;
        for(i = j + 1; i < N ; i++){
            if(a[i] < a[idx]) {
                idx = i;
            }
        }
        if(idx != j) {
            t = a[idx] ;
            a[idx] = a[j];
            a[j] = t;
        }
    }
    for(i = 0; i < N; i++) {
        printf("%d", a[i]);
    }
    return 0;
}  

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

#include <stdio.h>
#include <malloc.h>
void minp(int** ia,int r,int c,int* x,int* y,int* min)
{
     *min=ia[0][0];
    int i,j;
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            if(*min>ia[i][j])
            {
                *min=ia[i][j];
                *x=i;
                *y=j;
            }
        }
    }
}
int main() 
{
    int r,c,i,j;
    int min,x,y;
    printf("输入矩阵行数和列数:");
    scanf("%d%d",&r,&c);    
    int** m=(int**)malloc(sizeof(int*)*r);    
    for(i=0;i<r;i++)
    {
      m[i]=(int*)malloc(sizeof(int)*c);
    }
    printf("输入数据:");
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            scanf("%d",&m[i][j]);
        }
    }
    minp(m,r,c,&x,&y,&min);
    printf("最小值是m[%d][%d]:%d\n",x,y,min);
    for(i=0;i<r;i++)
    {
        free(m[i]);
    }
    free(m);
    return 0;
}

 

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

#include <stdio.h>
int main()
{
    char str[100];
    char ch;
    int i=0;
    while((ch=getchar())!='#')
    {
        if(ch<='z' && ch>='a')
            ch=ch-32;
        else if(ch>='A' && ch<='Z')
            ch=ch+32;
        str[i++]=ch;
    }
    str[i]='\0';
    printf("%s\n",str);
    return 0;
}

 

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

6.1结合上次博客作业,针对自己所提出的各种学习中遇到的困难解决方法,总结一下,自己是否落实之前的计划。没有落实的原因是什么。

没落实,活动过多。

6.3下一步的学习改进措施与计划,按条目写明具体可行的措施及可验证的检测方法。

看书+反复练习并理解PTA上的习题。

自测方法可以独立并在短时间完成一项程序

 

posted @ 2018-05-31 13:21  夜雨声烦jmx  阅读(145)  评论(0编辑  收藏  举报