📅  最后修改于: 2023-12-03 15:30:15.848000             🧑  作者: Mango
C程序中的输出是我们在调试和开发过程中最常见的部分。输出能够显示我们的程序在运行时的状态,验证代码的正确性,以及提供程序执行过程的反馈。在本篇文章中,我们将介绍28个C程序的输出的实例,展示不同数据类型的输出及格式化方法。
#include<stdio.h>
int main()
{
char a = 'A';
printf("%c\n",a);
return 0;
}
输出:
A
可以看到,使用%c
格式化字符类型,可以输出字符型数据。
#include<stdio.h>
int main()
{
int a = 10;
printf("%d\n",a);
return 0;
}
输出:
10
可以看到,使用%d
格式化整型数据,可以输出整型数据。如果要输出无符号整型数据,可以使用%u
格式化。
#include<stdio.h>
int main()
{
int a = 18;
printf("%o\n",a); //输出八进制数据
printf("%x\n",a); //输出十六进制数据
return 0;
}
输出:
22
12
可以看到,使用%o
格式化,可以输出八进制数据。使用%x
格式化,可以输出十六进制数据。
#include<stdio.h>
int main()
{
float a = 3.14;
printf("%f\n",a);
return 0;
}
输出:
3.140000
可以看到,使用%f
格式化,可以输出浮点型数据。如果要输出科学计数法的浮点型数据,可以使用%e
格式化。
#include<stdio.h>
int main()
{
int a = 10;
int *p = &a;
printf("%p\n",p);
return 0;
}
输出:
0x7ffc4881428c
可以看到,使用%p
格式化,可以输出指针类型数据。
#include<stdio.h>
int main()
{
int a[5] = {1,2,3,4,5};
for(int i=0;i<5;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
输出:
1 2 3 4 5
可以看到,使用循环输出每个数组元素,可以输出数组变量的值。
#include<stdio.h>
int main()
{
char a[] = "hello world";
printf("%s\n",a);
return 0;
}
输出:
hello world
可以看到,使用%s
格式化,可以输出字符数组变量的值。
#include<stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
输出:
hello world
可以看到,使用双引号括起来的字符串,可以直接输出。
#include<stdio.h>
int main()
{
printf("\"hello world\"\n");
return 0;
}
输出:
"hello world"
可以看到,使用反斜杠\
转义字符,可以输出转义字符。
#include<stdio.h>
int main()
{
int a = 10,b = 20;
printf("%d %d\n",a,b);
return 0;
}
输出:
10 20
可以看到,使用空格分隔的多个格式化符号,可以输出多个变量的值。
#include<stdio.h>
int main()
{
printf("%c %d %o %x %f %e\n",'A',10,18,12,3.14,3.14);
return 0;
}
输出:
A 10 22 c 3.140000 3.140000e+00
可以看到,使用不同的转化字符,可以输出不同数据类型的值。
#include<stdio.h>
int main()
{
printf("%5d\n",10);
printf("%-5d\n",10);
printf("%10.2f\n",3.14);
printf("%-10.2f\n",3.14);
return 0;
}
输出:
10
10
3.14
3.14
可以看到,使用数字控制输出宽度,可以输出不同格式的数据。
#include<stdio.h>
int main()
{
printf("%d %d %d\n",1,2,3);
printf("%*d %*d %*d\n",5,1,10,2,15,3);
return 0;
}
输出:
1 2 3
1 2 3
可以看到,使用*
控制输出位置,可以输出不同格式的数据。
#include<stdio.h>
int main()
{
printf("%s\n","hello world");
printf("%10s\n","hello world");
printf("%-10s\n","hello world");
return 0;
}
输出:
hello world
hello world
hello world
可以看到,使用不同的格式控制方式,可以控制输出数据的格式。
#include<stdio.h>
int main()
{
printf("%c\n",0x80);
printf("%c\n",0xa2);
printf("%c\n",0xe2);
return 0;
}
输出:
¢
â
可以看到,使用不同的扩展字符集,可以输出不同语言的文字。
#include<stdio.h>
int main()
{
printf("%s %d\n","hello",10);
char buf[100];
sprintf(buf,"%s %d\n","hello",10);
printf("%s",buf);
return 0;
}
输出:
hello 10
hello 10
可以看到,使用sprintf
函数,可以格式化一个字符串。
#include<stdio.h>
#include<stdbool.h>
int main()
{
bool a = true;
bool b = false;
printf("%d %d\n",a,b);
return 0;
}
输出:
1 0
可以看到,使用%d
格式化布尔类型,可以输出0或1的值。
#include<stdio.h>
enum color {red,yellow,green};
int main()
{
enum color a = red;
printf("%d\n",a);
return 0;
}
输出:
0
可以看到,使用%d
格式化枚举类型,可以输出枚举类型的值。
#include<stdio.h>
int add(int a, int b){return a+b;}
int sub(int a, int b){return a-b;}
int mul(int a, int b){return a*b;}
int div(int a, int b){return a/b;}
int main()
{
int (*p)(int,int);
p = add;
printf("%d\n",p(10,20));
p = sub;
printf("%d\n",p(10,20));
p = mul;
printf("%d\n",p(10,20));
p = div;
printf("%d\n",p(10,20));
return 0;
}
输出:
30
-10
200
0
可以看到,使用函数指针,可以输出不同函数的运行结果。
#include<stdio.h>
struct student
{
char name[20];
int age;
float score;
}stu = {"xiaoming",20,98.5};
int main()
{
printf("name:%s\nage:%d\nscore:%.2f\n",stu.name,stu.age,stu.score);
return 0;
}
输出:
name:xiaoming
age:20
score:98.50
可以看到,使用结构体,可以输出不同的数据类型。
#include<stdio.h>
int main()
{
int a = 10;
printf("%p\n",&a);
return 0;
}
输出:
0x7ffed08ef28c
可以看到,使用&
获取变量的地址,可以输出变量的地址。
#include<stdio.h>
int main()
{
int a;
printf("int:%ld\n",sizeof(a));
short b;
printf("short:%ld\n",sizeof(b));
long long c;
printf("long long:%ld\n",sizeof(c));
float d;
printf("float:%ld\n",sizeof(d));
double e;
printf("double:%ld\n",sizeof(e));
char f;
printf("char:%ld\n",sizeof(f));
return 0;
}
输出:
int:4
short:2
long long:8
float:4
double:8
char:1
可以看到,使用sizeof
获取变量的大小,可以输出变量的大小。
#include<stdio.h>
#include<wchar.h>
int main()
{
wchar_t a = L'中';
printf("%lc\n",a);
return 0;
}
输出:
中
可以看到,使用%lc
格式化宽字符型数据,可以输出宽字符型数据。
#include<stdio.h>
#include<stdarg.h>
int sum(int count,...)
{
int s = 0;
va_list args;
va_start(args,count);
for(int i=0;i<count;i++)
{
s += va_arg(args,int);
}
va_end(args);
return s;
}
int main()
{
printf("%d\n",sum(3,1,2,3));
printf("%d\n",sum(5,1,2,3,4,5));
return 0;
}
输出:
6
15
可以看到,使用stdarg.h
实现变长参数的输出。
#include<stdio.h>
#include<time.h>
int main()
{
time_t timep;
struct tm *p_curtime;
time(&timep);
p_curtime = localtime(&timep);
printf("Data: %d-%d-%d Week: %d Time: %d:%d:%d\n",(1900+p_curtime->tm_year),p_curtime->tm_mon,p_curtime->tm_mday,p_curtime->tm_wday,p_curtime->tm_hour,p_curtime->tm_min,p_curtime->tm_sec);
return 0;
}
输出:
Data: 2022-9-25 Week: 0 Time: 15:19:54
可以看到,使用time.h
和struct tm
输出日期和时间。
#include<stdio.h>
#include<windows.h>
void setchar(char c,int n)
{
for(int i=0;i<n;i++)
printf("%c",c);
}
void progressbar(int x,int y)
{
float z = (float)x/(float)y;
printf("[");
setchar('=',z*50);
printf(">%0.2f%%]",z*100);
}
int main()
{
for(int i=0;i<=100;i++)
{
progressbar(i,100);
Sleep(100);
printf("\r");
}
printf("\n");
return 0;
}
可以看到,使用函数实现进度条的输出。
#include<stdio.h>
int main()
{
printf("\033[42;31mhello world\033[0m\n");
return 0;
}
可以看到,使用ANSI码实现彩色字符的输出。
#include<stdio.h>
#include<conio.h>
int main()
{
printf("%c",218); printf("%c",196); printf("%c",196); printf("%c",191); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",179); printf(" "); printf("%c",179); printf("\n");
printf("%c",192); printf("%c",196); printf("%c",196); printf("%c",217); printf("\n");
return 0;
}
可以看到,使用ASCII码实现图形字符的输出。