编写一个函数,判断给定的字符串是否能够转化为整数,主程序调用该函数输出结果 yes 或者 noC++
时间: 2023-06-11 08:04:17 浏览: 48
语言代码如下:
```C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int isInteger(char* str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (i == 0 && str[i] == '-') { // 负数判断
continue;
}
if (!isdigit(str[i])) { // 非数字判断
return 0;
}
}
return 1;
}
int main() {
char str[100];
scanf("%s", str);
if (isInteger(str)) {
printf("yes\n");
} else {
printf("no\n");
}
return 0;
}
```
该程序通过遍历字符串中的每一个字符,判断其是否合法,最终输出字符串能否转化为整数。如果字符串以负号开头,则可以判定为负数。如果任何一位不是数字,则判定为不合法,输出 no。
相关问题
输入一个字符串,判断该字符串里是否有123子串,若有,输出第一个123的位置,若没有输出NOc++
我可以回答这个问题。可以使用滑动窗口算法来解决这个问题。具体实现如下:
```python
def find_123(s):
n = len(s)
i = j = k = 0
while i < n and j < n and k < n:
while i < n and s[i] != '1':
i += 1
j = i + 1
while j < n and s[j] != '2':
j += 1
k = j + 1
while k < n and s[k] != '3':
k += 1
if k < n:
return k - 2
i += 1
return "NO"
```
这个算法的时间复杂度为O(n),其中n为字符串的长度。
若十进制整数s和t中0~9数字出现的次数都相同, 则称s和t互为异位数。例如,115与511互为异位数。 编写程序, 对输入的两个十进制整数, 判断是否互为异位数。若互为异位数, 输出“yes”; 否则, 输出“no”。 输入格式: 输入两个整数, 以空格分隔 输出格式: yes 或 noc语言
以下是一种可能的 Python 代码实现:
```python
def is_anagram(s, t):
# 统计s和t中每个数字出现的次数
count_s = [0] * 10
count_t = [0] * 10
for digit in s:
count_s[int(digit)] += 1
for digit in t:
count_t[int(digit)] += 1
# 检查是否每个数字出现的次数都相同
for i in range(10):
if count_s[i] != count_t[i]:
return False
return True
# 读入两个整数
s, t = input().split()
# 判断是否互为异位数并输出结果
if is_anagram(s, t):
print("yes")
else:
print("no")
```
这里定义了一个名为 `is_anagram` 的函数来判断两个数字是否互为异位数。该函数首先使用两个长度为10的列表 `count_s` 和 `count_t` 来统计两个数字中每个数字出现的次数,然后检查这两个列表中每个元素是否相同。如果有任何一个元素不同,则说明两个数字不互为异位数,返回 `False`,否则返回 `True`。
在主程序中,我们读入两个整数并调用 `is_anagram` 函数来判断它们是否互为异位数,然后根据结果输出 `yes` 或 `no`。