#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char str[256];
int n,m=0,p=0,flag;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
gets(str);
flag=0;
if((str>='A'&&str<='Z')||(*str>='a'&&str<='z')||*str=='_')
flag=1;
else m++;
if(flag==1)
{
for(i=1;i<strlen(str);i++)
{flag=0;
if((*(str+i)>='A'&&(str+i)<='Z')||(*(str+1)>='a'&&(str+1)<='z')||*(str+i)=='_'||(*(str+i)>='0'&&(str+i)<='9'))
flag=1;
else
{m++;
break;
}
}
}
if(flag==1)
p++;}
printf("%d %d",m,p);
return 0;
}
2处错误:
我帮你改正过来了,代码见下面。如果对你有帮助,望采纳。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[256];
int n, m = 0, p = 0, flag;
scanf("%d", &n);
getchar();
for (int i = 0; i < n; i++) {
gets(str);
flag = 0;
if ((*str >= 'A' && *str <= 'Z') || (*str >= 'a' && *str <= 'z') || *str == '_')
flag = 1;
else
m++;
if (flag == 1) {
for (i = 1; i < strlen(str); i++) {
flag = 0;
if ((*(str + i) >= 'A' && *(str + i) <= 'Z') || (*(str + 1) >= 'a' && *(str + 1) <= 'z') || *(str + i) == '_'
|| (*(str + i) >= '0' && *(str + i) <= '9'))
flag = 1;
else {
m++;
break;
}
}
}
if (flag == 1)
p++;
}
printf("%d %d", m, p);
return 0;
}
帮你重写写了下,里面有好多问题,数组不能进行比较。中文符号等问题
代码
#include <cctype>
#include <cstdio>
#include <iostream>
#include <iterator>
#include <set>
#include <utility>
#include <vector>
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
#include <map>
#include "string.h"
#include <cstring>
#include<algorithm>
#include <stack>
#include <queue>
using namespace std;
int main() {
char str[256];
int n, m = 0, p = 0, flag;
scanf("%d", &n);
getchar();
for (int i = 0; i < n; i++) {
fgets(str,sizeof(str), stdin);
flag = 0;
if ((*str >= 'A' && *str <= 'Z') || (*str >= 'a' && *str <= 'z') ||
*str == '_')
flag = 1;
else
m++;
if (flag == 1) {
for (i = 1; i < strlen(str); i++) {
flag = 0;
if ((*(str + i) >= 'A' && *(str + i) <= 'Z') ||
(*(str + 1) >= 'a' && *(str + 1) <= 'z') ||
*(str + i) == '_' ||
(*(str + i) >= '0' && *(str + i) <= '9'))
flag = 1;
else {
m++;
break;
}
}
}
if (flag == 1)
p++;
}
printf("%d %d", m, p);
return 0;
}