C++ 数组 输入一行字符串(长度小于80个字符,只有字母和数字),统计其中大写字母、小写字母和数字的个数
3. 编程题3:输入一行字符串(长度小于80个字符,只有字母和数字),统计其中大写字母、小写字母和数字的个数。
救命呀 高手来
分别输入一行字符串和一个字符,查找字符串是否含有该字符,若含有则输出该字符第一次出现的位置,否则输出-1】
我这样写
#include <iostream>
using namespace std;
int main()
{
char a[1000];
int i,m;
cout<<"输入字符串:"<<endl;
cin>>a[i];
char p=getchar();
cout<<"输入需要查找的字符:"<<endl;
cin>>p;
for(i=0;i<1000;i++)
{if(a[i]==p)
m=i;
else m=-1;
break;
}
cout<<m<<endl;
return 0;
}
但错了
哪里错了??
高手来
我是新手菜鸟 展开
源程序代码以及算法解释如下:
#define _CRT_SECURE_NO_WARNINGS//VS环境下需要,VC不需要
#include <iostream>
#include <string>
int main()
{
const int n = 80;
int i = 0;
char str[n] = { NULL };//字符数组
int Numb_count = 0;//数字个数
int ABC_count = 0;//大写字母个数
int abc_count = 0;//小写字母个数
scanf("%s", str);//连续输入字符到字符数组
while (str[i] != '\0')
{
if ((str[i] >= '0') && (str[i] <= '9'))//判断是否是数字
{
Numb_count++;
}
else if ((str[i] >= 'a') && (str[i] <= 'z'))//判断是否是小写字母
{
abc_count++;
}
else if ((str[i] >= 'A') && (str[i] <= 'Z'))//判断是否是大写字母
{
ABC_count++;
}
i++;
}
printf("数字个数:%d\n小写字母个数:%d\n大写字母个数:%d\n", Numb_count, abc_count, ABC_count);
return 0;
}
程序运行结果如下:
扩展资料:
其他实现方式:
#include "stdafx.h"
#include <iostream>
int main()
{
char str[80]="\0",resultStr[80]="\0";
int cursor=0;
printf("请输入字符串:");
scanf("%s",str);
char *tempStr = str;
while (*tempStr != '\0')
{
char ch = *tempStr;
if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
resultStr[cursor] = ch;
cursor++;
}
tempStr++;
}
printf("输入字符为:%s\n输出字符为:%s\n",str,resultStr);
system("pause");
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000];
printf("输入字符串");
gets(a);
printf("输入需要查找的字符");
char p=getchar();
int i,m=strlen(a);
for(i=0;i<m;i++)
{
if(a[i]==p)
break;
}
if(i==m) printf("-1\n");
else printf("%d\n",i+1);
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
printf("输入字符串");
gets(a);
int m=strlen(a),i,ABC=0,abc=0,num=0;
for(i=0;i<m;i++)
{
if(a[i]>='A'&&a[i]<='Z') ABC++;
else if(a[i]>='a'&&a[i]<='z') abc++;
else if(a[i]>='0'&&a[i]<='9') num++;
}
printf("大写字母个数:%d\n",ABC);
printf("小写字母个数:%d\n",abc);
printf("数字个数:%d\n",num);
return 0;
}
#include <iostream>
using namespace std;
int main(void)
{
#define szSTR 80
char s[szSTR], x[szSTR]; char c = 0;
cin.getline (s, '\n');
cin.getline(x, '\n');
c = x[0];
int i = 0;
do {
if (!s[i]) break;
if (s[i++] == c) {
cout << i << endl;
return 0;
}//end if
}while(i < szSTR);
cout << -1<<endl;
return 0;
}
第3题:
#include <iostream>
using namespace std;
int main(void)
{
#define szSTR 80
char s[szSTR]; char c = 0;
cin.getline (s, '\n');
int alpha = 0;
int number = 0;
int space = 0;
int other = 0;
for(int i = 0; i < szSTR; i ++) {
c = s[i];
if (!c) break;
if (c == ' ' || c == '\t') { space ++; continue ; } // 注意这里把跳格也当成空格计算
if (c >= '0' && c <= '9') { number ++; continue; }
if (c >= 'a' && c <= 'z') { alpha ++; continue; }
if (c >= 'A' && c <= 'Z') { alpha ++; continue; }
other ++;
}
cout<<"数字"<<number<<"个,字母"<<alpha<<"个,空格"<<space<<"个,其他字符"<<other<<"个"<<endl;
return 0;
}
#include <string.h>
int find(char str[], char c)
{
int i = 0;
while (i++ < (int)strlen(str) && *str++ != c);
return i >= (int)strlen(str) ? -1 : i - 1;
}
void cout(char str[])
{
int uc = 0, lc = 0, nc = 0;
do
*str >= 'A' && *str <= 'Z' ? uc++ : *str >= 'a' && *str <= 'z' ? lc++ : *str >= '0' && *str <= '9' ? nc++ : 0;
while (*str++);
printf("大写字母个数 : %d\n小写字母个数 : %d\n数字个数 : %d", uc, lc, nc);
}
void main()
{
printf("位置为 : %d\n", find("afdsj", 'f'));
cout("AAio14sF");
}