首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

输入有关问题,详见内

2012-09-10 
输入问题,详见内C/C++ code#include stdafx.hvoid main(){int a[10]int i,t,tempprintf(请输入10个数

输入问题,详见内

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

热点排行