C语言多组输入和字符输入(小白)

我们在做C语言题目的时候,老是遇到一些奇葩的要求,例如输入的时候要多组输入,或者不告诉你多少组,等等等,下面我总结了一些模板,不完全套路。

  1. 多组输入(简单的)
1.已知组数n
    for(i=0;i<n;i++){
        }
    或者    
	while(n--){
     }
2.未知组数
      while(scanf("%d%d",&a,&b)!=EOF){
          
      }//计算多组a+b的时候未知组数
	  或者
      while(~scanf("%d%d",&a,&b)){
      }
  1. 接下来我们来看看字符的操作,有一点点复杂
1.已知字符数目的输入
int main(){
   int i;
   char ch1;
   int max=5;
   for(i=0;i<max;i++){
    ch1=getchar();
   	getchar();//吸收换行符,为了在下一次输入之前把缓冲区的换行吸收掉
   	printf("%c\t",ch1);
   }
   return 0;
}

看一下结果已知字符数目的输入

2.未知字符数目的输入
  只需要把上面的for循环改一下,改成while
  while(ch1!='\n'){
     ch1=getchar();
  	getchar();//吸收换行符
  	printf("%c\t",ch1);
  }
  

结果是在这里插入图片描述
因为字符录入的时候我们按了回车,实际上也就是把回车也录入 了,所以最后结束的标志是回车,记住这个就ok了。

  1. 将一串未知数字存入数组,使用的也是上面的方法类似

int main()
{
 int a[100000];//数组尽量开大一点。
 char c;
 int i=0;
 int n=0;
 while((c=getchar())!='\n')
 {
     if(isdigit(c))//判断字符是否为字符型数字,是返回1,否返回0
     {
         ungetc(c,stdin);//将c送回输入流,相当于栈,先入后出。
         scanf("%d",&a[n++]);
     }
 }
 for(i=0;i<n;i++)
 {
     printf("%d",a[i]);
 }

 return 0;
}

在这里,我们出现了几个不同寻常的地方,注释有,好好理解就好。这里将一串数字转换成了字符数组的样式。
在这里插入图片描述

C 库函数 int ungetc(int char, FILE *stream) 把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符
------菜鸟教程

ok,如果有错误,欢迎指正,谢谢各位大佬。

  • 18
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值