long fun(char* s) { long r = 0; while (*s != '\0') { r = r * 10 + (*s - '0'); s++; } return r; } int main() { printf("%ld\n", fun("2345210")); return 0; }
时间: 2024-04-20 08:23:21 浏览: 46
根据给定的代码,函数`fun`接受一个字符串作为参数,并将其转换为一个长整型数值。在`main`函数中,调用`fun`函数并将字符串"2345210"作为参数传入,然后将返回的结果打印出来。
具体来说,函数`fun`的工作原理如下:
1. 声明一个长整型变量`r`,初始化为0。
2. 进入一个循环,条件是当前字符不等于字符串的结束符`\0`。
3. 在每次循环中,将`r`乘以10,并将当前字符与字符'0'相减后的结果加到`r`上,这样可以将字符转换为对应的数值。
4. 指针`s`向后移动一位,指向下一个字符。
5. 循环结束后,返回最终的结果`r`。
在这个例子中,字符串"2345210"将被转换为长整型数值2345210,并通过`printf`函数打印出来。输出结果将是2345210。
相关问题
下列给定程序中,函数fun的功能是∶根据形参n计算并返回阶乘!。为避免每次阶乘都要从1开始乘起,程序中使用了静态结构体变\n量old保存上次计算的阶乘。每次计算时,要比较新的参数n与上次计算的阶数n,以便决定计算方法。
去除线程锁后的程序为:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int n;
long f;
} Fact;
static Fact old = {1, 1};
long fun(int n);
int main(int argc, char const *argv[]) {
int n;
while (1) {
scanf("%d", &n);
if (n == -1) {
break;
}
printf("%d! = %ld\n", n, fun(n));
}
return 0;
}
long fun(int n) {
static int i = 0;
long result = 1;
if (n > old.n) {
for (i = old.n + 1; i <= n; i++) {
result *= i;
}
old.n = n;
old.f = result;
} else {
result = old.f;
}
return result;
}
```
函数fun的功能是计算n的阶乘,并在计算之前检查是否有上次计算的结果可用,以此来避免重复计算。同时,通过使用静态变量old,在程序多次调用fun函数时可以保存上次计算的结果。具体流程如下:
1. 定义静态结构体变量old,并初始化结构体成员n为1,f为1;
2. 接收一个整数参数n,表示需要计算n的阶乘;
3. 检查新的参数n是否大于上次计算的阶数old.n,如果是,则说明需要重新计算n的阶乘;
4. 如果需要重新计算阶乘,则从old.n + 1开始为每个整数i计算result *= i,并将结果保存到变量result中;
5. 每次计算完阶乘后,将n和计算结果f保存到变量old的对应成员中;
6. 如果新的参数n小于等于上次计算的阶数old.n,则说明可以直接使用上次计算的结果old.f;
7. 返回最终计算结果result。
编写函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。例如,在键盘输入字符串2345210,函数返回长整型数2345210。
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
long int fun(char* str){
long int num = 0;
int i = 0;
while(str[i] != '\0'){
num = num * 10 + (str[i] - '0');
i++;
}
return num;
}
int main(){
char str[100];
printf("请输入数字字符串:");
scanf("%s", str);
long int num = fun(str);
printf("转换后的长整型数为:%ld\n", num);
return 0;
}
```
函数`fun`接受一个指向数字字符串的指针,通过遍历字符串中的每一位数字,将其转换为长整型数。`main`函数中先读入一个字符串,然后调用`fun`函数进行转换,并输出结果。
阅读全文