C程序设计 实验5-7 数组指针作函数参数 (20 分)

数组指针作函数参数 输入m个学生(最多30人)n门课程(最多5门)的成绩,然后计算并打印每个学生各门课的总分和平均分。其中,m和n的值由用户从键盘输入。

输入格式:

输入顺序如下:

学生个数m 课程数n
学生1课程1分数 学生1课程2分数 ... 学生1课程n分数
学生2课程1分数 学生2课程2分数 ... 学生2课程n分数
...
学生m课程1分数 学生m课程2分数 ... 学生m课程n分数

输出格式:

每个学生总分(整数) 平均分(实数,保留1位小数)

输入样例:

在这里给出一组输入。例如:

2 3
61 62 70
75 82 90

结尾无空行

输出样例:

在这里给出相应的输出。例如:

193 64.3
247 82.3

结尾无空行 

答案 

#include  <stdio.h>
#define STUD   30 
#define COURSE 5 
void  Input(int *pScore, int m, int n);
void  Total(int *pScore, int sum[], float aver[], int m, int n);
void  Print(int *pScore, int sum[], float aver[], int m, int n);
int main()
{               
    int     m, n, score[STUD][COURSE], sum[STUD];
    float   aver[STUD];
   
    scanf("%d", &m);
    
    scanf("%d", &n);
    Input(*score, m, n);
    Total(*score, sum, aver, m, n);
    Print(*score, sum, aver, m, n);
    return 0;
}               

void  Input(int *pScore, int m, int n)
{               
    int   i, j;
    
    for (i = 0; i < m; i++)
    {               
        for (j = 0; j < n; j++)
        {               
            scanf("%d", &pScore[i * n + j]);
        }
    }
}               

void  Total(int *pScore, int sum[], float aver[], int m, int n)
{               
    int  i, j;
    for (i = 0; i < m; i++)
    {               
        sum[i] = 0;
        for (j = 0; j < n; j++)
        {               
            sum[i] = sum[i] + pScore[i * n + j];
        }
        aver[i] = (float) sum[i] / n;
    }
}               

void  Print(int *pScore, int sum[], float aver[], int m, int n)
{               
    int  i, j;
    
    for (i = 0; i < m; i++)
    {               
       
        
        printf("%d %.1f\n", sum[i], aver[i]);
    }
} 

 我是谁?我在哪?这是个什么玩意?

我也不是很懂

但答案还是正确了

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个实验要求我们编写一个函数来计算指针字符串的长度。指针字符串是指使用指针来表示的字符串,也就是以字符数组的形式存储在内存中的字符串。 我们可以使用指针来遍历字符串,每遍历一个字符就将计数器加1,直到遍历完整个字符串。最后返回计数器的值即可。 下面是一个示例代码: ```c #include <stdio.h> int str_len(char *str) { int len = ; while (*str != '\') { len++; str++; } return len; } int main() { char str[] = "hello world"; int len = str_len(str); printf("The length of the string is %d\n", len); return ; } ``` 在上面的代码中,我们定义了一个名为`str_len`的函数,它接受一个指向字符数组指针为参数。在函数内部,我们使用一个`while`循环来遍历字符串,每遍历一个字符就将计数器`len`加1。当遍历到字符串的结尾时,也就是遇到了空字符`\`,循环就会停止。最后,函数返回计数器的值。 在`main`函数中,我们定义了一个字符串`str`,并调用`str_len`函数来计算它的长度。最后,我们使用`printf`函数来输出字符串的长度。 希望这个回答能够帮助到你。 ### 回答2: 在C语言中,字符串是用字符数组来存储的,可以使用指针来访问字符串。在本实验中,我们需要计算指针字符串的长度,可以使用指针来实现。 指针字符串的长度可以使用两种方法计算:第一种方法是通过遍历字符串来计算字符串的长度,第二种方法是使用指针计算字符串的长度。 第一种方法需要使用循环来遍历字符串,直到遇到字符串的结尾为止,期间计算每个字符的数量。可以使用while或for循环语句来实现。在循环中,需要使用指针来访问字符串中的每个字符,对指针进行自增操,然后继续循环,直到指针指向字符串的结尾为止。 第二种方法使用指针计算字符串的长度,需要在指针中存储字符串的起始位置,并使用指针的自增操逐个访问每个字符,直到访问到字符串的结尾位置。在访问每个字符时,需要记录下来访问字符的数量,最后返回字符数量即为字符串的长度。 在实现过程中,需要注意空指针和非法指针的情况,如果指针为空或指向非法内存地址,程序可能会崩溃或出现不可预期的结果。 在本实验中,可以通过编写一个计算字符串长度的函数来实现计算指针字符串长度,并在主函数中调用该函数测试验证,最终输出计算出的字符串长度。 综上所述,计算指针字符串长度可以通过遍历字符串或使用指针计算两种方法实现,需要注意指针的操指针的有效性。 ### 回答3: 在C语言中,我们强烈建议使用指针来处理字符串。因为字符串在C语言中本质上是字符数组,而指针有利于我们可以更快速方便地处理这些数组中的元素。本篇文章将讨论如何使用指针计算字符串的长度。 在C语言中,字符串通常使用NULL结尾。这意味着在字符串后面,使用'\0'为结束标志。因此,要计算字符串的长度,只需从第一个字符开始沿着字符串逐个字符遍历,直到遇到'\0'字符为止,即可得到字符串的长度。这里的关键是,要使用指针来遍历字符串。例如,假设有一个指针变量str,指向一个字符串的第一个字符。我们可以使用一个循环来遍历字符串,并在每次迭代中将指针向前移动一个位置,直到我们找到NULL终止符。 下面是一个计算字符串长度的例程: ```c #include <stdio.h> int strlen(char *str) { int count = 0;//用于计算字符串长度的变量 // 循环遍历,直到遇到 NULL 终止符 while (*str != '\0') { count++; str++; } return count; } int main() { char my_str[] = "Hello, World!";//测试用的字符串 // 调用strlen()函数 int length = strlen(my_str); // 输出字符串长度 printf("The length of the string '%s' is %d\n", my_str, length); return 0; } ``` 上述程序的输出为: The length of the string 'Hello, World!' is 13 在上面的代码中,我们使用strlen()函数计算了字符串的长度。其中,变量count用于保存字符串的长度。该函数遍历字符串中的每个字符,然后将count值增加1,直到遇到NULL终止符。此外,由于我们在函数中使用了指针,因此输入字符串的长度不受限制。 总之,使用指针计算字符串长度是一个很有用的技能,可以使我们更高效地处理字符串。如果你是刚学C语言的新手,建议多练习使用指针处理字符串,提高自己的编程技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值