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;
}