#include<stdio.h> #include<string.h> void main() { char s[10]; int n; int fun(char *s); gets(s); n=fun(s); printf("%d\n",n); } int fun(char *s) { //************Begin*********** int a[10],i,num; num=strlen(s); for(i=0;i<num;i++) { a[i]=*s-48; s++; } puts(a); return(a); //************End*********** }怎么修改
时间: 2023-07-18 10:39:49 浏览: 116
这段代码存在一些问题,需要进行修改:
1. 应该将 `void main()` 修改为 `int main()`,因为主函数应该返回一个整数类型的值。
2. `puts(a)` 函数的参数应该是一个字符串,而不是一个整型数组。可以使用 `printf` 函数将数组中的数字打印出来。
3. 在 `fun` 函数中应该定义一个变量来存储数字,然后将每个数字乘以相应的幂次方后加起来。可以使用 `pow` 函数来计算幂次方。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
char s[10];
int n;
int fun(char *s);
gets(s);
n = fun(s);
printf("%d\n", n);
return 0;
}
int fun(char *s) {
int num = strlen(s);
int i, res = 0;
for (i = 0; i < num; i++) {
int digit = *s - '0';
res += digit * pow(10, num - i - 1);
s++;
}
return res;
}
```
这样就可以正确地将输入的字符串转化为整数并输出了。
相关问题
#include <stdio.h> #include <string.h> void fun(char *s,int num) { } void main() { char s[10]; gets(s); fun(s,7); printf("%s", s); }
这是一道需要填空的题目,题目思路是将字符串 `s` 中的前 `num` 个字符反转。可以使用两个指针分别指向字符串的首位和末位,依次交换两个指针所指向的字符,直到两个指针相遇为止。具体实现可以这样写:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s, int num) {
int i = 0, j = num - 1;
while (i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
}
void main() {
char s[10];
gets(s);
fun(s, 7);
printf("%s", s);
}
```
其中,`i` 和 `j` 分别表示指向字符串的首位和末位的指针,`temp` 是一个临时变量,用于交换两个指针所指向的字符。在循环中,每次将指针向中间移动一位,并交换两个指针所指向的字符,直到两个指针相遇为止。最终输出交换后的字符串即可。
完成以下C语言代码功能:将主函数中输入的字符串反序存放。#include<stdio. h> #include<conio. h> #include(string. h> #define N 50 void fun(char *str, int n)
我可以提供一个示例代码:#include <stdio.h>
#include <string.h>int main ()
{
char str[100], temp;
int i, j; printf("输入一个字符串: ");
gets(str); j = strlen(str) - 1; for (i = 0; i < j; i++, j--)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
} printf("反序后的字符串: %s", str); return 0;
}
阅读全文