整形数据 逗号分割 输入 非零数据 按序逗号分割输出

1)for循环内scanf()常规字符问题

(1)逗号在格式控制符前

#include <stdio.h>
#include <stdlib.h>
#define N 100
void main(void)
{  int array[5]={0};
  for(int i=0;i<5;i++)
  {scanf(",%d",&array[i]);
          }
  printf("%d",array[0]);
  system("PAUSE");
  return 0;
}

运行结果:我这里输入常规字符五次 ,1,2,3,4,5 然后回车
在这里插入图片描述输入常规字符两次,1,2 然后回车
在这里插入图片描述so???输入回车 for循环不再执行下去了???
记得不错话 回车是结束scanf()输入
虽然不理解为什么???这个小技巧确实有用

(2)逗号在格式控制符之后

#include <stdio.h>
#include <stdlib.h>
#define N 100
void main(void)
{  int array[5]={0};
  for(int i=0;i<5;i++)
  {scanf("%d,",&array[i]);
          }
  printf("%d",array[0]);
  system("PAUSE");
  return 0;
}

输入1,2,3,4,5, 然后回车
在这里插入图片描述
仅输入1,2, 然后回车 程序让我继续输入
这里和 逗号在格式控制符前面的
情况不一样 这里并没有跳出for循环 而是继续输入
在这里插入图片描述那我继续输入 3,4,5, 然后回车
在这里插入图片描述暂时我搞不清清楚 为什么 逗号在格式控制符 前 后 两种情况
输入,1,2 回车 跳出循环
输入1,2, 回车 继续输入

2)利用逗号在格式控制符前 类似编程题

题目:(亚信科技的题目 啧啧 其实不难 )
例:
输入 0,-1,-3,5,2,3,1
要求输出有序的非零元素
输出1,2,3,5

#include <stdio.h>
#include <stdlib.h>
#define N 100
void main(void)
{ int array[N]={0};
  printf("输入:\n");
  scanf("%d",&array[0]);
  for(int i=1;i<100;i++)
  {scanf(",%d",&array[i]);
  //使用逗号在格式符前 回车跳出for循环技巧 
          }
  for(int i=0;i<100;i++)//排序 
  {for(int j=i+1;j<100;j++)
   {if(array[i]>=array[j])
       {int temp=array[i];
        array[i]=array[j];
        array[j]=temp;}
           }
          }
  int k=0;
  for(int i=1;i<100;i++)//有多少元素大于0 
  {if(array[i]>0)
   k++;
          }
  printf("大于0元素的个数%d\n",k);
  int arr[k];
  int j=0;
  for(int i=1;i<100;i++)
  //将array数组中大于零的元素 放到arr数组中 
  {if(array[i]>0)
   {arr[j]=array[i];
   j++;}
          }
  printf("输出 %d",arr[0]);//输出 
  for(int j=1;j<k;j++)
  printf(",%d",arr[j]);
  
  system("PAUSE");
  return 0;
}
  
  

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值