【scanf】将一串整数,依次左移一个数,且原来的第一个数移到最后,原来多执行的一步在这里!

简介: 【scanf】将一串整数,依次左移一个数,且原来的第一个数移到最后,原来多执行的一步在这里!

0 起因


//题:将一串整数,依次左移一个数,且原来的第一个数移到最后
//我的第一遍代码
#include<stdio.h>
#define N 100
int main()
{
  int n,i,a[N],t;
  printf("请输入数字个数:\n");
  scanf("%d\n",&n);
  for(i=0;i<n;i++)
  {
  scanf("%d ",&a[i]);  
  }  
  t=a[0];
  for(i=0;i<n-1;i++)
  {
  a[i]=a[i+1];  
  }
  a[i]=t;
  printf("The result is:\n");
  for(i=0;i<n;i++)
  printf("%d ",a[i]);
  return 0;
}


运行结果:

image.png


存在的问题:

为什么要多输入一个数,最终结果才可以正常显示,


原因:

scanf函数的第一个参数指定了后面变量读取的格式,这样写的话会按照 我们在格式化输入函数中的格式。


scanf("%d ",&a[i]);注意这里是有一个空格的,但是编译时空格或者制表符都会被忽略,所以实际输入的结果1空格2空格3,这时如果缓冲区没有东西scanf就会阻塞在那里,直到用户有输入以至于有时候会遇到再输入一行才能有返回的情况。


你的程序执行到scanf()时,会从你的缓冲区读东西,如果缓冲区是空的,就阻塞住,等待你从键盘输入。


1 修改


将空格省略之后,我们在运行程序检查。


运行结果如下:

image.png


总结:

当我们在编程中使用scanf语句时还是要小心,不然爆出的错误可能一时半会难以理解!

目录
相关文章
输入一个数判断是奇数还是偶数,并输出结果
输入一个数判断是奇数还是偶数,并输出结果
|
7月前
|
C语言
C语言----随机输入10个数,从小到大依次排列
C语言----随机输入10个数,从小到大依次排列
|
8月前
51.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果
51.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果
89 0
|
8月前
2.任意输入三个数,求最大数
2.任意输入三个数,求最大数
41 0
|
C语言
C语言之将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
C语言之将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
268 0
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
113 0
定义一个长度为10的整型数组,循环输入10个整数。 然后将输入一个整数,查找此整数,找到后输出下标,没找到给出提示。
定义一个长度为10的整型数组,循环输入10个整数。 然后将输入一个整数,查找此整数,找到后输出下标,没找到给出提示。
225 0
打印所有1-100能被2整数的数
打印所有1-100能被2整数的数
102 0
打印所有1-100能被2整数的数
代码例题(1-3)(含进阶版)及讲解:1.求两个数二进制中不同位的个数 2.打印整数的二进制的奇数和偶数位 3.交换两个变量,不创建临时变量 (ps最后一道为已知代码求值题)
代码例题(1-3)(含进阶版)及讲解:1.求两个数二进制中不同位的个数 2.打印整数的二进制的奇数和偶数位 3.交换两个变量,不创建临时变量 (ps最后一道为已知代码求值题)
100 0
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
140 0

热门文章

最新文章