long long int在C语言中可以简写为long long,能支持的整数范围是-2^63到2^63-1。实在不行,可以加个unsinged在前面。C语言定义一个int类型时,默认是有符号数,关键字signed常省略。输出符号为lld
总体思路:定义一个字符数组,用do while输入()然后分别从是否是数字(0-9ascii码为48到57),有无负号,每个.之间是否有数字,数字大小是否满足0到255.,还有是否超出IP限制了
注意点:1.while的判断语句不能写成a[i--],会造成i实际上减一,从而陷入死循环。
2.由于是用字符数组接收的,所以不能直接比较大小,只能比较ascii码的大小。所以可以定义一个整型数组去接收(这样就变成了ascii码了,同理,'这个里面也可以把字符转换成ascii码',)
3.善用计数器去判断..之间是否有数字
运用while(scanf("%c",&d[k-1]) != EOF);时,注意每个数存进去之间用加空格,不然会被吞掉
不要使用EOF(不知道怎么结束循环),注意一下几点即可:
EOF(end of file)就是文件的结束,通常来判断文件的操作是否结束的标志。
EOF不是特殊字符,而是定义在头文件<stdio.h>的常量,一般等于-1;
这题嗯写其实不难 ,但会超时,可以考虑用ascii码
#include<stdio.h>
#include<string.h>
int main()
{
char a[100000];
int str[100000];
gets(a);
int ha[256] = { 0 };
int i;
for ( i = 0; i < strlen(a); i++){
str[i] = a[i];
ha[str[i]]++;
}
for (i = 0; i< strlen(a); i++){
if (ha[str[i]] == 1){
printf("%c",str[i]);
return 0;
}
}
printf("no");
return 0;
}
不要想着省事就加个for循环把ha数组缩小,这反而增加了时间