这个题目我之前已经问过一次了,还是没有搞懂,之前有个回复说我的程序里是定义了一个字符串,而不是一个字符数组,字符串和字符数组有啥区别吗?按照昨天回复我的回答,我今天把我的代码中定义的z数组全部初始化为了0,把输入给数组中的scanf中的z前面的取地址符也去掉了,在我下面if的比较中在数字字符的两边也加上了'',昨天还是啥也没输出出来,今天已经变成了报错了。
我的思路其实很简单,就是向电脑中输入n行字符串,我想把这n行字符串存到数组中,然后这n行字符串肯定是在数组中按照一个字符一位存储的,所以第二串字符串肯定就是在第一串字符串的基础上加上一个'\0',然后接着往数组的下一位存储啊,所以我就遍历这个数组,但是不知道为啥啥也输出不出来。还有我最后一张图片里的回复,他说只用遍历一遍字符串,他写的代码的意思是,输入一行字符串后就输出结果,然后再输出一行字符串吗?
烦死我了,帮帮我吧😭一个字符串数组快两天了才做了三个。
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n,number,i,k,j,p;
number=0,p=0;
char z[1000]={0}; /* 定义一个字符数为1000的数组,防止输入字符串过长溢出*/
scanf("%d",&n); /*输入代表测试实例个数的n*/
for(j=0;j<n;j++) /*这几行代码的作用是输入测试的字符,当输完一串之后,输出换行符换行,继续输入下一串,直到n行字符串全部输入完成*/
scanf("%s",z);
printf("\n");
for(k=0;k<n;k++) /*这个for语句的作用是把n行字符串全部执行完*/
{
for(i=p;i<1000;i++)
{ p=i; /*这个语句的作用是当执行完某一行字符串时,可以在数组中接着上一行的数组地址往下执行,而不是重新从数组z[0]开始执行*/
if(z[i]!='\0') /*如果为换行符,则跳出此循环*/
{
if((z[i]>='0 '&& z[i]<='9'))
{
number=number+1;
}
}
else
p=p+1; continue;
}
printf("%d\n",number);
}
/*********End**********/
return 0;
}