Skip to content

C语言笔记

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

求圆的周长和面积

c
#include "stdio.h"
void main()
{
    float r,c,s;
    #define PI 3.1415926
    printf("请输入圆的半径:");
    scanf("%f",&r);
    c=2*PI*r;
    s=PI*r*r;
    printf("圆的周长为:%.2f\n圆的面积为:%.2f",c,s);
}

查长度

c
#include "stdio.h"
void main()
{
    printf("%d",sizeof(int));
}

输入小写字母,输出大写字母1

c
#include "stdio.h"
void main()
{
	char ch;
	printf("请输入一个小写字母:");
	ch=getchar();
	while(ch!='0') {
		if(ch>='a' && ch<='z'){
			ch-=32;
			printf("%c\n\n",ch);
		}
		ch=getchar();
	}
	printf("\n");
	return 0;
}

输入小写字母,输出大写字母2

c
#include "stdio.h"
void main()
{
    char ch;
    printf("请输入一个小写字母");
    scanf("%c",&ch);
    if(ch>='a' && ch<='z'){
    	printf("对应的大写字母为%c",ch-32);
    	
    }else {
    
    printf("error");}
}

运算

c
#include "stdio.h"
void main()
{
    printf("%d,%d,%d,%d",5%2,-5%2,5%-2,-5%-2);
}

华氏温度转摄氏温度

c
#include "stdio.h"
void main()
{
    float F,C;
    printf("请输入华氏温度:");
    scanf("%f",&F);
    C=5.0/9*(F-32);
    printf("摄氏温度为:%.2f",C);
}

逆输出

c
#include "stdio.h"
void main()
{
    int a,b,c,d,num,s;
    printf("输入一个四位正整数:");
    scanf("%d",&num);
    a=num/1000;
    b=(num-a*1000)/100;
    c=(num-a*1000-b*100)/10;
    d=num%10;
    s=d*1000+c*100+b*10+a;
    printf("%d\n",s);
}

自增&自减

c
#include "stdio.h"
void main()
{
    int i=8;
    printf("%d\n",++i);
    printf("%d\n",--i);
    printf("%d\n",i++);
    printf("%d\n",i--);
    printf("%d\n",-i++);
    printf("%d\n",-i--);
}

赋值运算符

c
#include "stdio.h"
void main()
{
    int a=12;
    a+=a-=a*=12;
    printf("%d\n",a);
}

数值交换

c
#include "stdio.h"
void main()
{
    int a=5,b=7;
    a=a+b;
    b=a-b;
    a=a-b;
    printf("%d\n%d",a,b);   
}

判断是否为闰年

c
#include "stdio.h"
void main()
{
    int y;
    printf("请输入年份:");
    scanf("%d",&y);
    if(y%4==0 && y%100!=0 || y%400==0){
    	printf("%d年是闰年",y);
    }else {
    	printf("%d年不是润年",y);
    }
}

浮点型变整型输出

c
#include "stdio.h"
void main()
{
	float x;
	int i;
	x=3.6;
	i=(int)x;
	printf("x=%f,i=%d",x,i);
}

开平方根

c
#include "stdio.h"
#include "math.h"
void main()
{
    float num,x;
    printf("请输入一个值:");
    scanf("%f",&num);
    if(num>=0){
    	printf("该值得平方根为:%.2f",x=sqrt(num));
    }else {
    printf("输入有误!");
    }
}

条件判断

c
#include "stdio.h"
void main()
{
	float x,y;
	printf("请输入x的值:");
	scanf("%f",&x);
	if(x>=0){
		y=2*x+1;
		printf("y的值为:%.2f",y);
	}else{
		y=x-5;
		printf("y的值为:%.2f",y);
	}    
}

套娃条件判断

c
#include "stdio.h"
void main()
{
    float x,y;
    printf("请输入x的值:");
    scanf("%f",&x);
    if(x>0){
    	y=2*x-1;
    }else if(x==0){
    	y=5;
    }else if(x<0){
    	y=x+5;
    }
    printf("y的值为:%.2f",y);
}

if语句套娃

c
#include "stdio.h"
void main()
{
    float x,y;
    printf("请输入x的值:");
    scanf("%f",&x);
    if(x>=0){
    	if(x>0){
    		y=2*x-1;}
    	else{
    		y=5;}}
    else{
    	y=x+5;}
    printf("y的值为:%.2f",y);
}

判断奇偶性

c
#include "stdio.h"
void main()
{
    int x;
    printf("请输入一个值:");
    scanf("%d",&x);
    if(x%2==0){
    	printf("%d为偶数",x);
    }else{
    	printf("%d为奇数",x);
    }
}

判断数字是否回文

c
#include "stdio.h"
void main()
{
    int x,a,b,c,d,e;
    printf("请输入一个五位正整数:");
    scanf("%d",&x);
    if(x>=10000&&x<=99999)
    {
    	a=x%10;
    	b=x/10%10;
    	c=x/100%10;
    	d=x/1000%10;
    	e=x/10000;
    if(a==e&&b==d)
    {
    	printf("回文");}
    else
    	printf("非回文");}
    else
    	printf("非五位正整数");
}

判断是否为水仙花数

c
#include "stdio.h"
void main()
{
   int x,a,b,c;
   printf("请输入一个三位正整数:");
   scanf("%d",&x);
   if(x>=100&&x<=999){
   		a=x%10;
   		b=x/10%10;
   		c=x/100;
		if(x==a*a*a+b*b*b+c*c*c){
   			printf("是水仙花数",x);
   		}
   		else
   			printf("不是水仙花数");
   		}
	else
   		printf("数据错误");
   	
}

Swith语句

c
#include "stdio.h"
void main()
{
    int a;
    printf("input integer number");
    scanf("%d",&a);
    switch(a)
    {
    	case 1:printf("Monday\n");break;
    	case 2:printf("Tuesday\n");break;
    	case 3:printf("Thursday\n");break;
    	case 4:printf("Friday\n");break;
    	case 5:printf("Saturday\n");break;
    	case 6:printf("Sunday\n");break;
    	default:printf("error\n");break;
    	}
}

while输出1+2+3+...+100

c
#include "stdio.h"
void main()
{
    int i=1,sum=0;
    while(i<=100)
    {
    	sum=sum+i;
    	i++;}
    printf("%d",sum);
}

while输出2+4+6+...+50

c
#include "stdio.h"
void main()
{
    int i=2,sum=0;
    while(i<=50)
    {
    	sum=sum+i;
    	i=i+2;}
    printf("%d",sum);
}

while输出1 * 2 * 3 * 4 * 5

c
#include "stdio.h"
void main()
{
    int i=1,sum=1;
    while(i<=5)
    {
    	sum=sum*i;
    	i++;}
    printf("%d",sum);
}

while输出5 * 4 * 3 * 2 * 1

c
#include "stdio.h"
void main()
{
    int i=5,sum=1;
    while(i>=1)
    {
    	sum=sum*i;
    	i--;}
    printf("%d",sum);
}

while输出1+1/2+1/3+...+1/50

c
#include "stdio.h"
void main()
{
    float num=0,i=1;
    while(i<=50)
    {
    	num=num+1.0/i;
    	i++;}
    printf("%.2f",num);
}

while输出100~200能被7整除的数

c
#include "stdio.h"
void main()
{
   int i=100,x;
   while(i<=200)
   {
   	if(i%7==0)
    printf("%d\n",i);
    i++;}
}

do while输出1加到100

c
#include "stdio.h"
void main()
{
	int i=1,sum=0;
	do
	{sum=sum+i;
	 i++;}
	while(i<=100);
	printf("%d",sum);
}

do while输出5 * 4 * 3 * 2 * 1

c
#include "stdio.h"
void main()
{
    int i=5,sum=1;
    do
    {sum=sum*i;
     i--;}
    while(i>=1);
    printf("%d",sum);
}

do while计算1+1/2+...+1/50

c
#include "stdio.h"
void main()
{
    float i=1,sum=0,x=1;
    do
    {sum=sum+x/i;
     i++;}
    while(i<=50);
    printf("%.2f",sum);
}

do while输出2+22+222+2222+22222

c
#include "stdio.h"
void main()
{
    int i=2,sum=0;
    do
    {sum=sum+i;
    	i=i*10+2;}
    while(i<=22222);
    printf("%d",sum);
}

do while输出100~200能被7整除的数

c
#include "stdio.h"
void main()
{
   int i=100;
   do
   {if(i%7==0)
    printf("%d\n",i);
    i++;}
   while(i<=200);
}

do while输出所有水仙花数

c
#include "stdio.h"
int main()
{
	int a,b,c;int i=100;
	do
	{
		a=i/100;
		b=i%100/10;
		c=i%10;
		if(i==a*a*a+b*b*b+c*c*c)
		{
			printf("%d\n",i);
		}
		i++;
		}while(i<=999);
}

for循环语句

c
#include "stdio.h"
void main()
{
   int i,s=0;
   for(i=1;i<=100;i++)
   s=s+i;
   printf("%d",s); 
}

for循环输出100~200之间能被7整除的数

c
#include "stdio.h"
void main()
{
    int i;
    for(i=100;i<=200;i++)
    if(i%7==0)
    {printf("%d\n",i);}
}

for循环输出所有水仙花数

c
#include "stdio.h"
int main()
{
    int a,b,c,i;
    for(i=100;i<=999;i++)
    {
        a=i/100;
        b=i%100/10;
        c=i%10;
        if(i==a*a*a+b*b*b+c*c*c)
        {
            printf("%d\n",i);
        }
     }
}

for循环语句输出6+66+...+666666

c
#include "stdio.h"
void main()
{
	int i,s=0;
	for(i=6;i<=666666;i=i*10+6)
	s=s+i;
	printf("%d",s);
}

for循环语句输出2000~2088所有闰年

c
#include "stdio.h"
void main()
{
    int i;
    for(i=2000;i<=2088;i++)
    if(i%4==0&&i%100!=0||i%400==0)
    {printf("%d\n",i);}
}

for循环语句输出1-1/2+1/3-1/4+1/5...1-50

c
#include "stdio.h"
void main()
{
    int i,t=1;float s=0;
    for(i=1;i<=50;i++)
    {s=s+t*1.0/i;
     t=-t;}
    printf("%.2f",s);
}

for循环语句输出2/1+3/2+5/3前20项

c
#include "stdio.h"
void main()
{
    float x=2,y=1,s=0,t;int i;
    for(i=1;i<=20;i++)
    {
    	s=s+x/y;
    	t=y;
    	y=x;
    	x=t+x;
    }
    printf("%.2f",s);
}

continue&break

c
#include "stdio.h"
void main()
{
   int n;
   for(n=100;n<=200;n++)
   {
   	if(n%3==0)
   	continue;/*结束本次循环,不终止整个循环*/
   	break;/*结束整个循环*/
   	printf("%d\n",n);
   	} 
}

for循环语句输出乘法口诀表

c
#include "stdio.h"
void main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
		{
			printf("%d*%d=%d\t",i,j,i*j);
		}
		printf("\n");
	}
}

for循环语句输出星号阵列

c
#include "stdio.h"
void main()
{
	int i,j;
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=8;j++)
		printf("*");
		printf("\n");	
	}
	   
}

for循环语句输出星号阵列2

c
#include "stdio.h"
void main()
{
	int i,j,k;
	for(i=1;i<=5;i++)
	{	for(k=1;k<=i;k++)
		printf(" ");
		for(j=1;j<=8;j++)
		printf("*");
		printf("\n");	
	}	   
}

for循环语句输出星号阵列3

c
#include "stdio.h"
void main()
{
	int i,j,k;
	for(i=1;i<=5;i++)
	{	for(k=5;k>=i;k--)
		printf(" ");
		for(j=1;j<=8;j++)
		printf("*");
		printf("\n");	
	}   
}

for循环语句输出菱形1

c
#include "stdio.h"
void main()
{
    int i,j;
	for(i = 1;i<=3;i++){
		for(j=1;j<=(4-i);j++){
			printf(" ");
		}
		for(j=1;j<=(-1+2*i);j++){
			printf("*");
		}
		printf("\n");
	}
	for(i=1;i<=2;i++){

		for(j=1;j<=(2+i-1);j++){
			printf(" ");
		}
		for(j=1;j<=(5-2*i);j++){
			printf("*");
		}
		printf("\n");
	}
}

for循环语句输出菱形2

c
#include "stdio.h"
void main()
{
    int i,j,k;
    for(i=0;i<=6;i++){
    	for(k=6;k>=i;k--)
    	printf(" ");
    	for(j=1;j<=2*i-1;j++)
    	printf("*");
    	printf("\n");
    }
    for(i=6;i>=0;i--){
    	for(k=6-i;k>=0;k--)
    	printf(" ");
    	for(j=2*i-1;j>0;j--)
    	printf("*");
    	printf("\n");
    }
}

switch语句判断某年某月有几天

c
#include "stdio.h"
void main()
{
	int year,month,day;
	printf("请输入年份和月份:(如2017.3)");
	scanf("%d.%d",&year,&month);
	switch(month)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:day=31;break;
		case 4:
		case 6:
		case 9:
		case 11:day=30;break;
		case 2:if((year%4==0&&year%100!=0)||year%400==0)
					day=29;
				else
					day=28;
	}
	printf("%d%d月有%d天",year,month,day);
}

switch语句输出运费

c
#include "stdio.h"
void main()
{
    int c,s;
    float p,w,d,f;
    printf("请输入基本运费,重量,距离:");
    scanf("%f%f%d",&p,&w,&s);
    if(s>=3000)
    	c=12;
    else
    	c=s/250;
    switch(c)
    {
    	case 0:d=0;break;
    	case 1:d=2;break;
    	case 2:
    	case 3:d=5;break;
    	case 4:
    	case 5:
    	case 6:
    	case 7:d=8;break;
    	case 8:
    	case 9:
    	case 10:
    	case 11:d=10;break;
    	case 12:d=15;break;
    }
    f=p*w*s*(1-d/100.0);
    printf("费用为%.2f元",f);
}

利用数组计算10个成绩的平均值

c
#include "stdio.h"
void main()
{
	float a[10],s=0;
	int i;
	printf("请输入10位同学的成绩:");
	for(i=0;i<10;i++){
		scanf("%f",&a[i]);
		s=s+a[i];
	}
	printf("平均成绩为:%.2f",s/10);
}

输入20个成绩,输出最高和最小成绩

c
#include "stdio.h"
#define M 20
void main()
{
	int i;
	float max,min,a[M];
	printf("请输入%d个同学的成绩:",M);
	for(i=0;i<M;i++)
		scanf("%f",&a[i]);
		max=a[0];
		min=a[0];
	for(i=1;i<M;i++)
	{
		if(a[i]>max)
			max=a[i];
		if(a[i]<min)
			min=a[i];
	}		
	printf("最大成绩为:%.2f\n",max);
	printf("最小成绩为:%.2f",min);
	
}

输入20个正数,分别输出正数、负数、零的个数

c
#include "stdio.h"
#define N 20
void main()
{
	int i,x=0,y=0,z=0,a[N];
	printf("请输入%d个任意数:",N);
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	for(i=0;i<N;i++)
		if(a[i]>0)
			x++;
		else if(a[i]<0)
			y++;
		else
			z++;
		printf("正数有%d个,负数有%d个,零有%d个",x,y,z);
}

用数组处理fibonacci数列问题

c
#include "stdio.h"
#define N 20
void main()
{
    int i,a[N]={1,1};
    for(i=2;i<N;i++)
    	a[i]=a[i-2]+a[i-1];
    for(i=0;i<N;i++)
    	printf("%d\n",a[i]);
}

逆序输出

c
#include "stdio.h"
#define N 10
void main()
{
    int i,t,a[N];
    printf("请输入%d个整数:",N);
    for(i=0;i<N;i++)
    	scanf("%d",&a[i]);
    for(i=0;i<N/2;i++)
	{    	
    	t=a[i];
    	a[i]=a[N-1-i];
    	a[N-1-i]=t;
	}
	printf("逆序输出结果为:");
	for(i=0;i<N;i++)
	printf("%d",a[i]);
}

求二维数组最大值

c
#include "stdio.h"
#define N 3
#define M 4
void main()
{
	int i,j,max,min,a[N][M];
	printf("请输入%d个同学的成绩:",N*M);
	for(i=0;i<N;i++)
		for(j=0;j<M;j++)
			scanf("%d",&a[i][j]);
			max=a[0][0];
			min=a[0][0];
	for(i=1;i<N;i++)
	for(j=1;j<M;j++)
	{
		if(a[i][j]>max)
			max=a[i][j];
		if(a[i][j]<min)
			min=a[i][j];
	}		
	printf("最大成绩为:%d\n",max);
	printf("最小成绩为:%d",min);
}

杨辉三角

c
#include "stdio.h"
#define M 10
void main()
{
    int a[M][M],i,j;
    for(i=0;i<M;i++)
    {
    	a[i][0]=1;
    	a[i][i]=1;
    }
    for(i=2;i<M;i++)
    for(j=1;j<i;j++)
    	a[i][j]=a[i-1][j-1]+a[i-1][j];
    for(i=0;i<M;i++)
    {
    	for(j=0;j<=i;j++)
    	printf("%-4d",a[i][j]);
    	printf("\n");
    }
}

输入英文文本,更改首字母为大写

c
#include "stdio.h"
#include "string.h"
#define SIZE 80
main()
{
	char ch[SIZE];
	int i=0;
	puts("请输入一行英文文本,单词间用空格隔开:");
	gets(ch);
	while(ch[i]!='\0')
	{
		if(i==0||ch[i-1]==' ')
			if(ch[i]>='a'&&ch[i]<='z')
			ch[i]=ch[i]-32;
			i++;
	}
	puts("修改后的字符串为:");
	puts(ch);
}

密码系统

c
#include "stdio.h"
#include "string.h"
#define SIZE 80
#define PASS "2333"
main()
{
	char ch[SIZE];
	int i;
	puts("请输入密码以进入系统:");
	for(i=1;i<=3;i++)
	{
		gets(ch);
		if(strcmp(ch,PASS)!=0)
			puts("密码错误,请重新输入!");
		else
			break;
	}
	if(i<=3)
		puts("欢迎进入本系统!");
	else
		puts("您不是合法用户,不能进入本系统!");
}

函数的类型

c
#include "stdio.h"
void main()
{
	float add(float x,int y);
    float result,x1=3.2;
    int y1=5;
    result=add(x1,y1);
    printf("%5.3f\n",result);
}

float add(float x,int y)
{
	x=x+y;
	return(x);
}

数组元素作函数实参

c
#include "stdio.h"
void main()
{
    int a[5],i;
    for(i=0;i<=4;i++)
    {
    	a[i]=i+1;
    	square(a[i]);
    }   
}

square(int n)
{
	printf("%d\n",n*n);
}

实参数组

c
#include "stdio.h"
void main()
{
    int a[5],i;
    for(i=0;i<=4;i++)
    a[i]=i+1;
    square(a);
}

square(int n[5])
{
	int i;
	for(i=0;i<5;i++)
	printf("%d\n",n[i]*n[i]);
}

外部变量与局部变量同名

c
#include "stdio.h"
int a=3,b=5;
max(int a,int b)
{
	int c;
	c=a>b?a:b;
	return(c);
}

main()
{
	int a=123;
	printf("%d",max(a,b));
}

static声明局部变量

c
#include "stdio.h"
f(int a)
{
	int b=0;
	static int c=3;
	b=b+1;
	c=c+1;
	return(a+b+c);
}
void main()
{
	int a=2,i;
	for(i=0;i<3;i++)
	printf("%d\n",f(a));
}

函数的嵌套调用

c
#include "stdio.h"
long f1(int p)
{
	int k;long r;long f2(int);
	k=p*p;
	r=f2(k);
	return r;
}

long f2(int q)
{
	long c=1;int i;
	for(i=1;i<=q;i++)
	c=c*i;
	return c;
}

void main()
{
	int i;long s=0;
	for(i=2;i<=4;i++)
	s=s+f1(i);
	printf("s=%1d\n",s);
}

统计后选人选票

c
#include "string.h"
#include "stdio.h"
struct person
{
	char name[20];
	int count;
}leader[3]={"Li",0,"Zhang",0,"Wang",0};
void main()
{
    int i,j;
    char leader_name[20];
    /* printf("请输入10个需要投票的姓名,回车键隔开:\n"); */
    for(i=1;i<=10;i++)
    {
    	printf("请输入第%d票:",i);
    	scanf("%s",leader_name);
    	for(j=0;j<3;j++)
    		if(strcmp(leader_name,leader[j].name)==0)
    			leader[j].count++;
    }
    for(i=0;i<3;i++)
    	printf("%5s:%d\n",leader[i].name,leader[i].count);
}

Unknow

c
#include "stdio.h"
#include "stdlib.h"
void main()
{
	FILE *fp;
	int a[5][5],i,j;
	if((fp=fopen("Z:\shu.txt","r"))==NULL)
   {
   		printf("cannot open this file!");
    	exit(1);
    }
	for(i=0;i<5;i++)
	for(j=0;j<5;j++)
 		fscanf(fp,"%d",&a[i][j]);
 
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
 		printf("%4d",a[i][j]); 
 		printf("\n");}
	
 	fclose(fp);   
}

将结果输出到另一个文件

c
#include "stdio.h"
#include "stdlib.h"
void main()
{
	FILE *fp,*tp;
	int a[5][5],i,j;
	if((fp=fopen("e:\shu.txt","r"))==NULL)
		{
			printf("cannot open this file!");
			exit(1);
		}
	if((tp=fopen("e:\shu_result.txt","rt+"))==NULL)
	{
		printf("cannot open this file!");
		exit(1);
	}
	for(i=0;i<5;i++)
	for(j=0;j<5;j++)
		fscanf(fp,"%d",&a[i][j]);
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
			fprintf(tp,"%5d",a[i][j]);
			fprintf(tp,"%c",'\n');
	}
	fclose(fp);
	fclose(fp);
}

输入三次密码,判断是否正确1

c
#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
#include "string.h"
void main()
{
    int i=0;
    char password[]={0};
    for(i=0;i<3;i++){
    	printf("请输入密码:");
    	scanf("%s",password);
    	if(0==strcmp(password,"666666"))
    	{
    		break;
    	}
    	else {
    		printf("密码错误,请重新输入\n");
    		}
    }
    if(i<3){
    	printf("登录成功\n");
    }else{
    printf("退出程序\n");
    }
    return 0;
}

请输入密码

c
#include "stdio.h"
void main()
{
	int x;
    printf("您的电脑已被污染,请输入密码以继续:");
    scanf("%d",&x);
    if(x==2001){
    	printf("密码正确");
    }else{
    	printf("密码错误");
    }
}

打印

c
#include "stdio.h" 
void print(char ch) { 
    putchar(ch); 
} 
void printstar(int n) 
{ 
    int i,j;
    for(i=0;i<2*n-1;i++) 
    { 
        for(j=0;j<2*n-1;j++) 
        { 
            if(i<n) 
            { 
                if(j>=n-i-1&&j<n+i) 
                { 
                    print('*'); 
                } 
                else 
                { 
                    print(' '); 
                } 
            } 
            else 
            { 
                if(j>=i-n+1&&j<3*n-i-2) 
                { 
                    print('*'); 
                } 
                else  
                { 
                    print(' '); 
                } 
            } 
 
        } 
        print('\n'); 
    } 
} 
 
void main() 
{ 
    int n; 
    printf("---------开始打印符号---------\n"); 
    printf("请输入数字:"); 
    scanf("%d",&n); 
    printstar(n); 
    printf("---------结束打印符号---------\n");     
}

温馨提示

更多内容,敬请期待!