C语言作业11

1.定义函数void sum(int *p)实现对给定数组a中所有元素求和并打印输出求和结果。

#include<stdio.h>
void sum(int *p)
{
    int a[10];
    int i,sum=0;
    printf("请输入10个整数:");
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    } 
    p=&a[0];
    for(p=a;p<(a+10);p++)    
    {        
        sum=sum+*p;
    }
        printf("%d",sum);    
} 
int main()
{
    
    int *p;
    sum(p);    
    return 0;
}

这道题看了丛铭俣和钟国晨的,似乎是懂了,原理其实还跟以前学的一样,只不过就是把以前学的都拼凑在一起了,看到别人写的之后就觉得哦对对就是这样,但是自己却写不出来,其实还是对知识掌握的不是很好吧,尤其是指针。

2.用指针实现函数:读入5个字符串(或是5个字符),按由小到大的顺序输出这5个字符串。

#include<stdio.h>
void fsort(int a[],int n);
int main(void)
{
    int i;
    int a[5]={6,5,2,8,1};
       fsort(a,5);
    for(i=0;i<5;i++)
       printf("%d ",a[i]);
    return 0;
}
void fsort(int a[],int n)
{
    int k,j;
    int temp;
    for(k=1;k<n;k++)
       for(j=0;j<n-k;j++)
       if(a[j]>a[j+1])
       {
              temp=a[j];
              a[j]=a[j+1];
              a[j+1]=temp;
       }
}

3.利用动态内存分配方式创建长度为10个int的存储空间,由用户从键盘输入数据进行空间初始化,同时打印输出空间内容。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char *p[5];
    char str[20];
    scanf("%s",str);
    int i=0;
    while(str[0]!='#')
    {
        p[i]=(char *)malloc(sizeof(char)*strlen(str));
        strcpy(p[i],str);
        scanf("%s",str);
        i++;
    }
    int j;
    for(j=0;j<i;j++)
        printf("%s ",p[j]);
}

老师在课上讲了这道题,很明白了已经。

4.选做:定义二维数组a[10][10]和数组指针p[10],并用p对数组a进行初始化和打印输出。

#include<stdio.h>
int main()
{
    int b[10][10];
    int i,j;
    for(i=0;i<9;i++)
        for(j=0;j<9;j++)
        {
            b[i][j]=(i+1)*(j+1);
        }
    for(i=0;i<9;i++)
    {
        for(j=0;j<9;j++)
        {
            printf("%d     ",b[i][j]);
        }
        printf("
");    
    }
    return 0;
} 

这道题它让定义数组和指针,但是我只写了数组,因为我不会加入指针,让指针和数组结合起来,所以感觉这次作业难的原因就是要把好多好多知识综合起来运用,一种知识我还用的不是很利落就要再加上好多其他知识所以很吃力,以后还是要勤加练习吧,就像丛铭俣说的练好基础。

原文地址:https://www.cnblogs.com/ljxsol/p/6152837.html