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

郝春妮

关注

阅读 205

2022-04-03

--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,
return 0;
}

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

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

int main()
{
scanf("%d%f%f",
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",

printf ("Enter unit price:");
scanf ("%f",

printf ("Enter purchase date (mm/dd/yyyy):");
scanf ("%d/%d/%d", &month, &day,

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",
}
}

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)

0 0 举报