快帮忙想想办法看一下,这个代码是否有错误。
就是本来上次打还是正确的,但这次照着抄输入5个字符,只反映前两个。
程序本身是没有问题的,但我估计你不是想这么操作,现在程序里必须完成240个字符输入才能出最终的结果,你应该是想输入一串字符串,然后计算大写字母、小写字母和数字的个数。代码修改如下图所示:
#include <stdio.h>
int main()
{
char c[240];
int zc1=0,zc2=0,zc3=0,i;
scanf("%s",c);
for(i=0;i<240;i++)
{
if('A'<=c[i]&&c[i]<='Z')
zc1++;
else if('a'<=c[i]&&c[i]<='z')
zc2++;
else if('0'<=c[i]&&c[i]<='9')
zc3++;
}
printf("大写字母共有:%d\n",zc1);
printf("小写字母共有:%d\n",zc2);
printf("数字共有:%d\n",zc3);
}
看着没问题,
最好写成 以下这种形式,如果有帮助麻烦给个采纳,谢谢~
if (i = 0; i < 3; ++i)
{
scanf("%s", c[i]);
}
scanf在缓冲区里没有东西的时候是阻塞状态
你使用双重循环,一共循环3x80次,那么就需要你输入240个字符(算回车),否则代码执行不到printf
如果你只是想输入3行字符串,字符数不限,那应该用scanf("%s")来接收,不要循环接收char
因为不知道题目具体是求什么,这里假设是求输入字符串中各字符的个数,使用gets()从输入获取一行字符串,然后统计字符串中各字符的个数。
修改如下:
参考链接:
#include <stdio.h>
#include <string.h>
int main(void){
//char c[3][80];
char c[80]; // 存储输入的一行字符串的字符数组
int zc1=0,zc2=0,zc3=0,i,j;
// https://www.runoob.com/cprogramming/c-function-gets.html
gets(c); //从输入获取一个字符串
// for(i=0;i<3;i++){
// 遍历字符串,统计各字符的个数
for(j=0;j<strlen(c);j++){
if('A'<=c[j]&&c[j]<='Z'){
zc1++;
}else if('a'<=c[j]&&c[j]<='z'){
zc2++;
}else if('0'<=c[j]&&c[j]<='9'){
zc3++;
}
}
// }
printf("大写字母共有:%d\n",zc1);
printf("小写字母共有:%d\n",zc2);
printf("数字共有:%d\n",zc3);
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char a[6][20];
for(int i=0;i<5;i++)
{
scanf("%s",a[i]);
}
for(int i=0;i<4;i++)
{
for(int j=0;j<4-i;j++)
{
if(strcmp(a[j],a[j+1])<0)
{
strcpy(a[5],a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],a[5]);
}
}
}
for(int i=0;i<5;i++)
{
printf("%s\n",a[i]);
}
return 0;
}
根据参考资料中的代码可以看出,这是一个基于桶排序的代码。代码中定义了一个长度为100的数组a,并对其进行初始化,随后通过循环输入5个数值,每个数值都记录在数组a中,并对数组a进行排序,最后输出排序后的结果。
而问题描述中提到只有前两个字符有反应,这可能是由于数组长度和循环次数不匹配所致。参考资料中的代码只对输入5个数值进行了循环,而数组a的长度为100,因此应该对数组a进行循环才能保证其中所有数值都被统计到。具体改进方法如下:
#include<stdio.h>
int main()
{
int a[100], t, max = sizeof(a) / sizeof(int);
for (int i = 0; i < max; i++)
a[i] = 0;
for (int j = 0; j < max; j++) // 对数组a进行循环操作
{
scanf("%d", &t);
a[t]++;
}
for (int k = 0; k < max; k++)
for (int y = 0; y < a[k]; y++)
printf("%d ", k);
return 0;
}
经过修改,代码中对数组a进行了100次循环操作,而输入的5个字符也能够正常被写入数组并被正确排序。