|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- # include <stdio.h>
- # include <string.h>
- int main (void)
- {
- int a[10],i,n,x;
- char b[10];
- /*for (i = 0;i<10; i++)
- {
- scanf ("%d",&a[i]);
- }
- for (i = 0; i < 10; i++)
- {
- printf("%d ",a[i]);
- }*/
-
- for (n = 0;n<10;n++)
- {
- scanf ("%c",&b[n]);
- if (b[n] == '\n')
- {
- break;
- }
- }
-
- for (n=0;n<10;n++)
- {
- printf ("%c",b[n]);
- if (b[n] == '\n')
- {
- break;
- }
- }
-
- x = strlen(b);
-
- printf ("循环次数 = %d 实际数组长度 = %d",n,x);
- return 0;
- }
复制代码
char 类型的数组,可以用后面那两段for 用if判断遇到回车结束,而且也可以记录实际循环次数,也能得到实际使用数组的元素个数,但是上面那两段由于是int类型,所以不能判断遇到\n结束,必须打够10个数字才能结束,而且还要用空格分开每个数字,在实际运用中,如果是int类型就一定要输入够数组个数才行么?
本帖最后由 superbe 于 2019-9-1 11:34 编辑
- # include <stdio.h>
- # include <string.h>
- int main (void)
- {
- int a[10],i,n,x;
- char b[10];
- printf("输入int数组a的元素(-1回车结束):\n");
- for (i = 0;i<10; i++)
- {
- scanf ("%d",&a[i]);
- if(a[i]==-1) break; //假如你的数组元素应该都是正数,可以用一个特殊的值-1表示数组结束
- }
- for (i = 0; i < 10; i++)
- {
- printf("%d ",a[i]);
- if(a[i]==-1) break;
- }
- printf ("\na 循环次数 = %d 实际数组长度 = %d\n",i+1,i+1); //循环次数和实际数组长度都是i+1
- getchar(); //吃掉上面最后的的回车,否则会被下面当成输入结束
- printf("\n输入char数组b的元素(回车结束):\n");
- for (n = 0;n<10;n++)
- {
- scanf ("%c",&b[n]);
- if (b[n] == '\n')
- {
- break;
- }
- }
- b[n+1]='\0'; //上面循环后b中元素是win三个字符和一个'\n',共4个,后面都是未初始化,所以添加一个结束标志'\0',否则strlen(b)结果可能不正确。
- for (n=0;n<10;n++)
- {
- printf ("%c",b[n]);
- if (b[n] == '\n')
- {
- break;
- }
- }
-
- x = strlen(b);
-
- printf ("b 循环次数 = %d 实际数组长度 = %d\n",n+1,x); //循环次数应该是n+1
- return 0;
- }
复制代码
|
|