0
点赞
收藏
分享

微信扫一扫

c语言中的printf函数和scanf的区别

郝春妮 2022-04-03 阅读 206
c++

--printf函数在c语言中的普通用法

在c语言中printf函数的作用非常大,用途也非常广泛,它主要具有打印功能。

在调用printf函数是必须给其提供格式串,格式串后面的参数是需要在显示时插入到该串中的值。

其主要的语法格式为:        printf(“格式串”,表达式1,表达式2);在使用该函数时其字数没有限制,显示的值可以是变量,常量,或者更加复杂的表达式。

下面让我们看看如下代码,思考其函数的值

int main()
{
int a,b;
float c;
a = 78;
b=53
c = 0.84f;
printf("%d%d%f",a,b,c);
return 0;
}                                        //结果为a=78, b = 53  c = 0.840000

其中%d%f 为printf函数使用时的转换说明。  %d表示二进制转化为十进制进行整数打印,%f表示打印一个浮点数格式。可以这样理解%是一个占位符用来说明print打印的格式,比如%d指打印整数,%f打印浮点数,%lf 打印双精度浮点型,%s打印字符串。

printf函数也可以直接打印括号中的内容

int main()
{
  printf("我爱你ll");
return 0;
}

//结果为  我爱你ll

pintf也可以打印表达式

int main()
{
int a = 20;
int b = 30;
printf("%d,a+b);
return 0;
}

//结果为50

printf函数必须服从格式串

int a = 20;
printf("%f,a);
  //会报错

这个程序运行不出,开始定义a为整数,%f为浮点型,printf识别错误。

scanf函数的使用

如同printf函数一样,scanf函数也根据特定的格式读取输入,scanf函数提示用户随机输入一个用户想要输入的值。

其使用的语法为

int main()
{
int a = 0;
scanf("%d,&a);
  return 0;
}

像printf函数一样,scanf函数是由格式串控制的。scnaf函数从左边处理字符串的信息,对于每一个格式说明,scanf函数读入适当项并且必要时跳过空格,遇到不符合的格式时候停止。如果读入时候发现有一项错误,那么scanf 函数会立刻停止。

下面看一串代码,体验scanf函数的运行方法

int main()
{
scanf("%d%f%f",&x,&i,&y);
  return 0;
}
// 如果用户输入12.3  45.6  789 那么x,i,y,的值为多少

先看代码运行scanf函数时先到%d,scanf明白要读一个整数,读到小数点时候停下来,所以x=12

接着%f读取一个浮点型小数0.3,后面遇到空格不属于小数停下,所以i = 0.3

然后再一次读入%f浮点型小数,先遇到空格scanf函数直接跳过不读入,这一次scanf 分别读入4,5.,6,之后遇到空格不属于浮点数停下,所以 y = 45.6

下面看scanf函数和printf 的实例

1编写一个程序,显示年月日,以下面的格式输出

 enter a date (mm/dd/yyyy):2/17/2011

you entered the date 20110217

#include <stdio.h>
 
int main (void)
{
 int number;
 float price;
 int day, month, year;
 
 printf ("Enter item number:");
 scanf ("%d", &number);
 
 printf ("Enter unit price:");
 scanf ("%f", &price);
 
 printf ("Enter purchase date (mm/dd/yyyy):");
 scanf ("%d/%d/%d", &month, &day, &year);
 
 printf ("Item\t\tUnit\t\tPurchase\n");
 printf ("\t\tPrice\t\tDate\n");
 printf ("%d\t\t$%7.2f\t%.2d/%.2d/%d", number, price, month, day, year);
 
 return 0;
}

2,编写一个程序,要求用户随机输入的1到16个数字,每行输入4个,并求出每行,每列,2条对角线的元素之和

#include <stdio.h>
 
int main (void)
{
 int a[4][4];
 int i, j;
 
 printf ("Enter the numbers from 1 to 16 in any order:\n");
 for (i=0; i<4; i++){
  for (j=0; j<4; j++){
   scanf ("%d", &a[i][j]);
  }
 }
 
 for (i=0; i<4; i++){
  for (j=0; j<4; j++){
   printf ("%2d\t", a[i][j]);
  }
  printf ("\n");
 }
 
 int row[4], col[4], dia[4];
 int sum = 0;
 
// 下面是求行; 
 printf ("Row sums: ");
 for (i=0; i<4; i++){
  sum = 0;
  for (j=0; j<4; j++){
   sum += a[i][j];
  }
  row[i] = sum;
 }
 for (i=0; i<4; i++) {
  printf ("%d ", row[i]);
 }
 printf ("\n");
 
// 求列;
 printf ("Column sums: ");
 for (j=0; j<4; j++){
  sum = 0;
  for (i=0; i<4; i++){
   sum += a[i][j];
  }
  col[j] = sum;
 }
 for (i=0; i<4; i++) {
  printf ("%d ", col[i]);
 }
 printf ("\n"); 
 
//  对角;
 printf ("Diagonal sums: ");
 sum = 0;
 for (i=0; i<4; i++){
  sum += a[i][i]; 
 }
  dia[0] = sum;
  sum = 0;
  for (i=0; i<4; i++){
   sum += a[i][3-i];
  }
 dia[1] = sum;
 for (i=0; i<2; i++) printf ("%d ", dia[i]);
 
 return 0;
}
举报

相关推荐

0 条评论