输入问题,详见内
- C/C++ code
#include <stdafx.h>void main(){ int a[10]; int i,t,temp; printf("请输入10个数字,以空格分开,回车结束:\n"); for(i=0;i<=9;i++) { scanf("%d",&a[i]); } i--; if(i==0) printf("%d。\n",&a[0]); else if(i%2==0) { t=i/2; for(i=0;i<t;i++) { temp=a[i]; a[i]=a[2*t-i]; a[2*t-i]=temp; } for(i=0;i<=2*t;i++) { printf("%d,",a[i]); } if(i=2*t) { printf("\b。\n"); } } else { t=(i-1)/2; for(i=0;i<=t;i++) { temp=a[i]; a[i]=a[2*t+1-i]; a[2*t+1-i]=temp; } for(i=0;i<=2*t+1;i++) { printf("%d,",a[i]); } if(i=2*t+1) { printf("\b。\n"); } }}
这个代码是输入10个数字,然后逆序显示,问题假如我只需要输入10个以内的任意个数字,那么对于
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
这个要怎么处理呢?现在只能输入10个数字,不能多也不能少,如果我只是想只要不超过10个数字即可,可以输入例如6个、7个这样的,该怎么做呢?
[解决办法]
- C/C++ code
scanf("%d", &n);for(i=0; i<=n; i++){ scanf("%d", &a[i]);}
[解决办法]
1 可以先输入数字个数,再scanf每一个数字
2 或者定义一个特殊的字符作为结束,scanf的时候用if判断一下是否输入结束
[解决办法]
- C/C++ code
#include <stdio.h>char s[]="123 ab 4";char *p;int v,n,k;void main() { p=s; while (1) { k=sscanf(p,"%d%n",&v,&n); printf("k,v,n=%d,%d,%d\n",k,v,n); if (1==k) { p+=n; } else if (0==k) { printf("skip char[%c]\n",p[0]); p++; } else {//EOF==k break; } } printf("End.\n");}//k,v,n=1,123,3//k,v,n=0,123,3//skip char[ ]//k,v,n=0,123,3//skip char[a]//k,v,n=0,123,3//skip char[b]//k,v,n=1,4,2//k,v,n=-1,4,2//End.
[解决办法]
根据LZ需求改的,仅供参考:
- C/C++ code
#include<stdlib.h>#include<stdio.h>int main(){ int a[10],n,t; register int i; do { printf("请输入个数(不能超过10个):"); scanf("%d",&n); }while(n<=0||n>10); fflush(stdin); printf("请输入%d个数:\n",n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0,t=n/2;i<t;i++) a[i]^=a[n-i-1]^=a[i]^=a[n-i-1]; printf("逆向输出:\n"); for(i=0;i<n;i++) printf("%d,",a[i]); printf("\b。\n"); system("pause"); return(0);}