C语言题目:输入一个以回车结束的字符串 (少于80个字符),把字符串中的所有数字字符( ( '0 ' ~ '9 ' )转换为整数,去掉其他字符。例如,字符串"3a56bc"转换为整数后是356。
时间: 2023-11-22 19:56:37 浏览: 342
以下是C语言的代码实现:
```c
#include <stdio.h>
int main() {
char str[80];
int num = 0;
int i = 0;
printf("请输入字符串:");
scanf("%s", str);
while (str[i] != '\0') {
if (str[i] >= '0' && str[i] <= '9') {
num = num * 10 + str[i] - '0';
}
i++;
}
printf("转换后的整数为:%d\n", num);
return 0;
}
```
代码思路:
1. 定义一个字符数组 `str`,用于存储输入的字符串。
2. 定义一个整型变量 `num`,用于存储转换后的整数。
3. 使用 `scanf()` 函数读取输入的字符串。
4. 利用循环遍历字符串中的每一个字符,判断其是否为数字字符。
5. 如果是数字字符,则将其转换为整数并加入到 `num` 中。
6. 最终输出转换后的整数。
需要注意的是,上述代码没有对输入字符串的长度进行检查,如果输入的字符串超过了80个字符,则可能会导致程序出错。为了避免这种情况,可以使用 `fgets()` 函数来读取输入的字符串,并且指定最大字符数为79,如下所示:
```c
fgets(str, 80, stdin);
```
这样可以确保输入的字符串不会超过80个字符。
相关问题
用c语言编写一个程序实现:输入一个以回车结束的字符串(少于80个字符),统计字母a的个数。
好的,以下是用 C 语言编写的程序,可以实现输入一个以回车结束的字符串,统计其中字母 a 的个数:
```c
#include <stdio.h>
int main() {
char str[80]; // 存储输入的字符串
int count = 0; // 统计字母 a 的个数
printf("请输入一个字符串(少于80个字符):\n");
fgets(str, 80, stdin); // 从标准输入读入字符串
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == 'a' || str[i] == 'A') {
count++;
}
}
printf("字母 a 的个数为:%d\n", count);
return 0;
}
```
程序的执行流程如下:
1. 定义一个 char 类型的数组 `str`,用于存储输入的字符串。
2. 定义一个 int 类型的变量 `count`,用于统计字母 a 的个数,初始化为 0。
3. 使用 `fgets` 函数从标准输入读入字符串,最大读入 80 个字符。
4. 使用 for 循环遍历字符串,如果当前字符为字母 a 或 A,则将 `count` 加 1。
5. 输出统计结果。
注意:本程序未做输入格式检查,如果输入的字符串超过 80 个字符,可能会导致程序出错。
c语言输入一个以回车结束的字符串(少于80个字符),统计其中大写字母的个数。
可以使用C语言标准库函数中的`fgets()`函数读取以回车结束的字符串,然后使用`strlen()`函数获取字符串长度,遍历字符串中每个字符,判断其是否为大写字母,最终统计大写字母的个数。
下面是示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[80];
int len, count = 0;
printf("请输入一个少于80个字符的字符串:");
fgets(str, 80, stdin); // 从标准输入读取字符串
len = strlen(str); // 获取字符串长度
for (int i = 0; i < len; i++) {
if (isupper(str[i])) { // 判断字符是否为大写字母
count++;
}
}
printf("大写字母个数为:%d\n", count);
return 0;
}
```
注意:此代码中使用了标准库函数`isupper()`判断字符是否为大写字母,需要在程序开头加上`#include <ctype.h>`头文件。