下面程序中定义函数int str2int(char s[]),把s中传递过来的字符串中的数字 字符(0~9)挑出来,按原次序组成一个整数返回, 例如:s中传递的内容为” AB0120CD34.56EF”,返回整数12034, 其中遇到小数点则停止,数字前导零无意义。完成程序的编写。 #include <stdio.h> int str2int(char s[]){ //此处为待补充代码,写到 答题纸 上 } int main(){ char a[80]; printf("输入字符串,其中数字字符个数少于10个:\n"); gets(a);//例如输入"AB0120CD34.56EF" printf("%d\n",str2int(a));//则输出12034 }
时间: 2024-03-24 09:41:01 浏览: 70
以下是完成程序的代码:
```c
#include <stdio.h>
int str2int(char s[]) {
int num = 0;
int flag = 0; // 标记是否遇到小数点
for (int i = 0; s[i] != '\0'; i++) {
if (s[i] >= '0' && s[i] <= '9') {
if (flag) { // 如果已经遇到小数点,直接退出循环
break;
}
num = num * 10 + (s[i] - '0');
} else if (s[i] == '.') {
flag = 1;
}
}
return num;
}
int main() {
char a[80];
printf("输入字符串,其中数字字符个数少于10个:\n");
gets(a); // 请注意:gets函数已经被标记为不安全,建议使用fgets函数代替
printf("%d\n", str2int(a));
return 0;
}
```
该函数的主要思路是遍历字符串中的每个字符,如果是数字字符,则将其转化为整数并加到最终的结果上。如果遇到小数点,则退出循环,返回当前的结果。为了避免数字前导零的影响,我们每次将其乘以10再加上当前的数字字符对应的整数。
阅读全文