解释函数fun的返回值fun(char*a char*b){int num=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;return num;}}
时间: 2024-03-28 19:36:29 浏览: 70
函数`fun`的返回值为`num`,即参数`a`和`b`拼接后的字符个数。该函数的作用是将字符数组`b`拼接到字符数组`a`的末尾,返回拼接后的字符数组`a`的长度。具体实现过程如下:
1. 定义两个变量`num`和`n`,并初始化为0。
2. 使用while循环遍历字符数组`a`,直到遇到`\0`为止,统计字符个数并存储在`num`中。
3. 使用while循环遍历字符数组`b`,并将其中的字符逐个拼接到字符数组`a`的末尾。
4. 每拼接一个字符,就将`num`加1,表示字符数组`a`的长度增加了1。
5. 当遍历完字符数组`b`后,即完成了字符数组`b`拼接到字符数组`a`的操作,将`num`作为返回值返回。
相关问题
/*有n个学生,每个学生的数据包括学号,C语言程序设计课程的平时成绩和期末考试成绩,测试数据已在主函数中,要求按平时成绩占30%,期末成绩占70%计算总评成绩, 并将总评成绩低于90分,且高于等于80分的同学的等级确定为"良好",并将这些同学的对应信息存放在结构体数组h中,人数通过函数返回值得到,输出相应的信息。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中注释语句之间填入所编写的若干语句。*/ #include <stdio.h> #include<string.h> #include<stdlib.h> #define N 100 typedef struct { char num[10];/*学号*/ int s1;/*期末成绩*/ int s2;/*平时成绩*/ float sum; /*总评*/ char level[10]; /*等级*/ } STU; int fun (STU a[],int n,STU h[]) { /************Begin************/ /************End**************/ } int main() { STU s[N]={{"GA05",85,76},{"GA03",76,90},{"GA02",69,90},{"GA04",85,56},{"GA01",91,95}, {"GA07",72,80},{"GA08",64,45}, {"GA06",87,98},{"GA015",85,86},{"GA013",91,97}},h[N]; int i,k,n=10; FILE *out,*in; k=fun(s,n,h); printf("There are :\n"); for(i=0;i<k;i++) printf("%s %d %d %.2f %s\n",h[i].num,h[i].s1,h[i].s2,h[i].sum,h[i].level); /******************************/ in=fopen("in68.dat","r"); out=fopen("out68.dat","w"); i=0; while(!feof(in)) { fscanf(in,"%s %d %d",s[i].num,&s[i].s1,&s[i].s2); i++; } n=i; k=fun(s,n,h); for(i=0;i<k;i++) fprintf(out,"%s %d %d %.2f %s\n",h[i].num,h[i].s1,h[i].s2,h[i].sum,h[i].level); fclose(out); fclose(in); /******************************/ system("pause"); return 0; }
int fun(STU a[], int n, STU h[]) {
int k = 0;
for (int i = 0; i < n; i++) {
a[i].sum = a[i].s2 * 0.3 + a[i].s1 * 0.7; //计算总评成绩
if (a[i].sum >= 80 && a[i].sum < 90) { //判断等级是否为“良好”
strcpy(h[k].num, a[i].num);
h[k].s1 = a[i].s1;
h[k].s2 = a[i].s2;
h[k].sum = a[i].sum;
strcpy(h[k].level, "良好");
k++;
}
}
return k;
}
//注:strcpy 函数用于字符串的复制,格式为:strcpy(目标字符串,源字符串)。
定义函数,处理一个10进制整数连续加法表达式,计算出结果作为返回值, 函数接口定义: int fun (char *str); str指向一个表达式字符串,字符串是一个合法的连加运算表达式,没有空格,首字母是数字 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> int fun (char *str); int main() { char str[80]; scanf("%s", str); printf("%d", fun( str ) ); return 0; } /* 请在这里填写答案 */
以下是处理10进制整数连续加法表达式的函数实现:
```c
#include <stdio.h>
int fun(char *str) {
int sum = 0, num = 0;
char *p = str;
while (*p != '\0') {
if (*p >= '0' && *p <= '9') {
num = num * 10 + (*p - '0');
} else if (*p == '+') {
sum += num;
num = 0;
}
p++;
}
sum += num; // 处理最后一个数字
return sum;
}
```
解释:
1. 定义变量 `sum` 和 `num`,分别用于累加结果和存储当前读入的数字;
2. 遍历字符串 `str`,判断每个字符的类型;
3. 如果是数字字符,则将其转换成数字并累加到 `num` 中;
4. 如果是加号,则将 `num` 加到 `sum` 中,并将 `num` 重置为0;
5. 最后需要再加上最后一个数字 `num`;
6. 返回累加结果 `sum`。
阅读全文