#include <stdio.h> void fun(int a, int b, long *c) { } main() { int a,b; long c; printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %ld\n", c); }用C语言
时间: 2024-04-25 22:27:27 浏览: 79
这段代码实现了一个函数调用。首先在主函数中输入了两个整数a和b,然后调用了函数fun,传递了a、b的值以及c的地址。函数fun中没有实现具体的功能,只有一个long类型的指针参数c,可以在函数中对其进行操作。最后在主函数中输出了c的值。但由于函数fun中没有对c进行任何操作,所以输出的结果可能是随机值。需要在函数fun中添加具体的实现,才能得到正确的结果。
相关问题
功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一 个新数放在t中。如,s=12345,则t=135。 #include <stdio.h> void fun (long s, long *t) long s1=15; *t=s__10; while(s>0){ s=_; *t+=s%10*s1; s1=s1*15;}}
这段代码存在一些错误,我来为你解释一下:
1. 函数定义中缺少了函数体的大括号。
2. 在函数体中,变量 s1 和 s 缺少类型声明。
3. 在 while 循环中,变量 s 的更新操作缺少了除以 10 的操作,导致会一直循环下去。
4. 变量 s1 的初始值错误,应该为 1 而不是 15。
5. 变量 s 的赋值操作缺少了除以 10 的操作。
6. 变量 t 的初始值没有给出。
下面是修改后的代码:
```c
#include <stdio.h>
void fun(long s, long *t) {
long s1 = 1;
*t = 0;
while (s > 0) {
*t += s % 10 * s1;
s /= 100;
s1 *= 10;
}
}
int main() {
long s = 12345;
long t;
fun(s, &t);
printf("%ld\n", t);
return 0;
}
```
运行结果为:
```
135
```
输入一个字符串保存到数组str中,将str中的数字字符存储到数组tOrigin中,并将其转换为整数输出,用k记录字符串中数字字符的个数。例如:用户输入字符串1243abc3,则将12433取出以整数形式输出。阅读程序,找出其中的错误,并改正之。 #include <math.h> #include <stdio.h> void fun(char *s, char *t, int k) { int i; k = 0; for (i = 0; s[i]; i++) if (0 <= s[i] && s[I] <= 9) { t[*k] = s[i]; *k += 1; } } void main() { char str[100], tOrigin[9]; long int n; int i, k; printf("Please enter string s:"); scanf("%s", str); fun(str, tOrigin, &k); for (i = 0; i < k; i++) n += (tOrigin [k - 1 - i] - '0') * pow(10, i); printf("The result is: %d", n); }
程序中有以下错误:
1. `fun` 函数的第三个参数应该是传递的地址,而不是传递值,应该改为 `void fun(char *s, char *t, int *k)`。
2. 在 `fun` 函数中,判断数字字符的条件应该是 `s[i] >= '0' && s[i] <= '9'`,而不是 `0 <= s[i] && s[I] <= 9`。
3. 在 `main` 函数中,应该初始化变量 `n` 和 `k`,否则会出现未定义的行为。
修改后的程序如下:
```
#include <math.h>
#include <stdio.h>
void fun(char *s, char *t, int *k) {
int i;
*k = 0;
for (i = 0; s[i]; i++)
if (s[i] >= '0' && s[i] <= '9') {
t[*k] = s[i];
(*k)++;
}
}
int main() {
char str[100], tOrigin[9];
long int n = 0;
int i, k = 0;
printf("Please enter string s:");
scanf("%s", str);
fun(str, tOrigin, &k);
for (i = 0; i < k; i++)
n += (tOrigin[k - 1 - i] - '0') * pow(10, i);
printf("The result is: %ld\n", n);
return 0;
}
```
阅读全文