我们在做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,如果有错误,欢迎指正,谢谢各位大佬。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐