用C语言解决下列问题(4)编写子串查找函数int find_ str(const char* str1, const char* str2),返回str2在str1中的位置。如果str2 在str1中不存在,那么返回-1。如果str2在str1中出现多次,那么以第1改出现为准。使用指针进行编写。 (5)编写程序,将一个NxN的方阵A转置后输出。要求使用二维数组的行指针实现。(6)一个小组有4个学生,每个学生有3门课程:语文、数学、英语的成绩(0~100的整数)。使用4行3列的二维数组存储这些成绩。计算每个学生三门课程的平均成绩并输出(精确到小数点后2位)。要求使用指针进行实现。
时间: 2024-02-06 11:10:24 浏览: 71
C字符串函数对应的C++ string操作详解
5星 · 资源好评率100%
(4):
```c
int find_str(const char* str1, const char* str2) {
const char* p1 = str1;
const char* p2 = str2;
int pos = 0;
while (*p1 != '\0') {
if (*p1 == *p2) {
if (*(p2+1) == '\0') {
return pos - strlen(str2) + 1;
}
p2++;
}
else {
p2 = str2;
}
p1++;
pos++;
}
return -1;
}
```
(5):
```c
#include <stdio.h>
void transpose(int (*A)[], int n) {
int temp;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
temp = *(*(A+i)+j);
*(*(A+i)+j) = *(*(A+j)+i);
*(*(A+j)+i) = temp;
}
}
}
int main() {
int A[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
transpose(A, 3);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", A[i][j]);
}
printf("\n");
}
return 0;
}
```
(6):
```c
#include <stdio.h>
void average(int (*A)[3], int n) {
for (int i = 0; i < n; i++) {
double sum = 0.0;
for (int j = 0; j < 3; j++) {
sum += *(*(A+i)+j);
}
printf("student %d: %.2lf\n", i+1, sum/3);
}
}
int main() {
int A[4][3] = {{80,90,70},{85,95,75},{90,85,80},{95,80,85}};
average(A, 4);
return 0;
}
```
阅读全文