编写c程序输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。 输入格式: 输入在一行中给出一个以#结束的非空字符串。 输出格式: 在一行中输出转换后的十进制数。题目保证输出在长整型范围内。 输入样例: +-P-xf4+-1!# 输出样例: -3905
时间: 2024-02-13 07:07:20 浏览: 240
好的,我的回答如下:
```c
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
long long num = 0;
int is_negative = 0;
while ((c = getchar()) != '#')
{
if (isalnum(c))
{
if (isdigit(c)) num = num * 16 + (c - '0');
else num = num * 16 + (tolower(c) - 'a' + 10);
}
else if (c == '-') is_negative = 1;
}
if (is_negative) printf("%lld\n", -num);
else printf("%lld\n", num);
return 0;
}
```
该程序会读入一个非空字符串,过滤掉其中所有的非十六进制字符(包括非数字和非字母的字符),然后将剩下的字符组成一个新的十六进制数字字符串,并将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
相关问题
编写程序输入一个以#结束的字符串,滤去所有非十六进制字符,不分大小写,组成一个新的字符串,然后将其转换为一个十进制后输出
下面是一个Python程序,可以输入一个以空格分隔的字符串,将其拆分为单独的单词,并将单词存储在一个列表中:
```
text = input("请输入一段文本:")
words = text.split()
print("您输入的文本包含以下单词:")
for word in words:
print(word)
```
输入:
```
Hello World! This is a test.
```
输出:
```
您输入的文本包含以下单词:
Hello
World!
This
is
a
test.
```
用c语言编写程序:输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。试编写相应程序。
下列方式输入字符串,输出该字符串中字母的个数。
方式一:在程序中用字符数组存放字符串。
方式二:在程序中用指针变量动态存放字符串。
答案:
方式一:
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, count = 0;
printf("请输入字符串:");
scanf("%s", str);
len = strlen(str);
for(i = 0; i < len; i++)
{
if((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
{
count++;
}
}
printf("字母的个数为:%d\n", count);
return 0;
}
方式二:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str;
int i, len, count = 0;
str = (char *)malloc(100 * sizeof(char));
printf("请输入字符串:");
scanf("%s", str);
len = strlen(str);
for(i = 0; i < len; i++)
{
if((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
{
count++;
}
}
printf("字母的个数为:%d\n", count);
free(str);
return 0;
}
阅读全文