零起点学算法101——统计字母数字等个数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零起点学算法101——统计字母数字等个数相关的知识,希望对你有一定的参考价值。
Description
输入一串字符,统计这串字符里的字母个数,数字个数,空格字数以及其他字符(最多不超过100个字符)
Input
多组测试数据,每行一组
Output
每组输出一行,分别是字母个数,数字个数,空格字数以及其他字符个数
Sample Input
I am a student in class 1.
I think I can!
Sample Output
18 1 6 1
10 0 3 1
我的答案
#include<stdio.h>
int main()
char str[100];
int i,a,b,c,d;
while(gets(str)!=NULL)
a=b=c=d=0;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='z')
a++;
else if(str[i]>='0'&&str[i]<='9')
b++;
else if(str[i]==' ')
c++;
else
d++;
printf("%d %d %d %d\n",a,b,c,d);
return 0;
为什么交上去是run time ???
#include<stdio.h>
using namespace std;
int main()
char str[100];
int i,a,b,c,d;
while(gets(str)!=NULL)
a=b=c=d=0;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='z')
a++;
else if(str[i]>='0'&&str[i]<='9')
b++;
else if(str[i]==' ')
c++;
else
d++;
printf("%d %d %d %d\n",a,b,c,d);
return 0;
追问
还是不对
。。。
是不是run time error 评测截图看下
追问把str[100]改成str[100000]
追问过了!谢谢啊~为什么啊?
追答因为数组越界,数据可能是这样的
yusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuidyusdfgysdgfgdsuifgisdugfuidsguifdshfiudshfiuhsduifsiufhusdihfuid
为什么会越界啊?,,,我是新手啊。。简单点说呗~~~
追答你就开了100的数组,有更多的输入,数组就爆掉了
本回答被提问者采纳1146: 零起点学算法53——数组中插入一个数
1146: 零起点学算法53——数组中插入一个数
Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 1749 Accepted: 613
[Submit][Status][Web Board]
Description
给定有序数组(从小到大),再给你一个数,要求插入该数到数组中并保持顺序
Input
多组测试,每组第一行输入一个整数n,然后是n个有序的整数
第二行输入1个整数m和1个整数K
Output
将整数m插入到原数组中保持顺序是升序,然后输出2行
第一行是插入以后的数组
第二行是插入以后的数组中下标值是K的数
n m k不超过20
Sample Input
3 1 2 5
3 1
Sample Output
1 2 3 5
2
Source
1 #include<stdio.h> 2 int main(){ 3 int n,a[50],b[50]; 4 while(scanf("%d",&n)!=EOF){ 5 for(int i=0;i<n;i++){ 6 scanf("%d",&a[i]); 7 } 8 9 int m,k,j=0; 10 scanf("%d%d",&m,&k); 11 for(int i=0;i<n;i++){ 12 if(a[i]<m){ 13 b[j]=a[i]; 14 j++; 15 } 16 else break; 17 } 18 b[j]=m; 19 j++; 20 for(int i=j-1;i<n;i++){ 21 b[j]=a[i]; 22 j++; 23 } 24 25 for(int i=0;i<j-1;i++){ 26 printf("%d ",b[i]); 27 } 28 printf("%d\n",b[j-1]); 29 printf("%d\n",b[k]); 30 } 31 return 0; 32 }
以上是关于零起点学算法101——统计字母数字等个数的主要内容,如果未能解决你的问题,请参考以下文章