C语言程序设计

姓 名:毕天硕
学 号:2018510466
班 级:计算机科学与技术一班

C语言程序设计 目录

第一章 程序设计和C语言

例1.1要求在屏幕上输出以下一行信息

#include <stdio.h>
int main()
{
	printf("This is a C program.\n");
	return 0;
 }

运行的结果如下:
在这里插入图片描述

例1.2求两个整数之和

#include<stdio.h>
int main()
{
    int a,b,sum;
    a=123;	
    b=456;
    sum=a+b;
    printf("sum is %d\n",sum);
    return 0;
}

运行的结果如下:
在这里插入图片描述

例1.3求两个整数中较大者

#include <stdio.h>
int main()
{
	int max(int x,int y);
	int a,b,c;
	scanf("%d,%d",&a,&b);
	c=max(a,b);
	printf("max=%d\n",c);
	return 0;
}
int max(int x,int y)
{
	int z;
	if(x>y)z=x;
	else z=y;
	return(z);
}

运行的结果如下:
在这里插入图片描述

第2章 算法——程序的灵魂

例2.1求5的阶乘

#include <stdio.h>
int main()
{
	int i,t;
	t=1;
	i=2;
	while(i<=5)
	{
		t=t*i;
		i=i+1;
	}
	printf("%d\n",t);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例2.2: 求多项式(1-1/2+1/3-1/4+…+1/99-1/100)的值

#include <stdio.h>
int main()
{
	int sign=1;
	double deno=2.0,sum=1.0,term;
	while (deno<=100)
	{
		sign=-sign;
		term=sign/deno;
		sum=sum+term;
		deno=deno+1;
	}
	printf("%f\n",sum);
	return 0;
}

运行的结果如下:
在这里插入图片描述

第3章 最简单的c程序设计——顺序程序设计

例3.1:将华氏温度转换为摄氏温度和绝对温度

#include <stdio.h>
int main()
{
	float f,c;
	f=64.0;
	c=(5.0/9)*(f-32);
	printf("f=%f\nc=%f\n",f,c);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例3.2:计算存款利息

#include <stdio.h>
int main()
{
	float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;
	p1=p0*(1+r1);
	p2=p0*(1+r2);
	p3=p0*(1+r3/2)*(1+r3/2);
	printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例3.3:给定一个大写字母,要求用小写字母输出

#include<stdio.h>
int main()
{
	char c1,c2;
	c1='A';
	c2=c1+32;
	printf("%c\n",c2);
	printf("%d\n",c2);
	return 0;
}

运行的结果如下:

例3.4:给出三角形的三边长,求三角形面积

#include <stdio.h>
#include <math.h>
int main()
{
	double a,b,c,s,area;
	a=3.67;
	b=5.43;
	c=5.21;
	s=(a+b+c)/2;
	area=sqrt(s*(s-a)*(s-b)*(s-c));
	printf("a=%f\tb=%f\t%f\n",a,b,c);
	printf("area=%f\n",area);
	return 0;
}

运行结果如下:
在这里插入图片描述

例3.5:求ax2+bx+c=0方程的根,设b2-4ac>0

#include <stdio.h>
#include <math.h>
int main()
{
	double a,b,c,disc,x1,x2,p,q;
	scanf("%lf%lf%lf",&a,&b,&c);
	disc=b*b-4*a*c;
	p=-b/(2.0*a);						
	q=sqrt(disc)/(2.0*a);					
	x1=p+q;x2=p-q;
	printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);	
	return 0;
}

运行的结果如下:
在这里插入图片描述

例3.6:用%f输出实数,只能得到6位小数

#include <stdio.h>
int main()
{
	double a=1.0;
	printf("%f\n",a/3);
	return 0;
 } 

运行的结果如下:
在这里插入图片描述

例3.7:float型数据的有效位数

#include <stdio.h>
int main()
{
	float a;
	a = 10000/3.0;
	printf("%f\n",a);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例3.8:先后输出BOY三个字符

#include <stdio.h>
int main()
{
	char a='B',b='O',c='Y';
	putchar(a);
	putchar(b);
	putchar(c);
	putchar('\n');
	return 0;
}

运行的结果如下:
在这里插入图片描述

例3.9:从键盘输入BOY三个字符,然后把他们输出至屏幕

#include <stdio.h>
int main()
{
	char a,b,c;
	a=getchar();
	b=getchar();
	c=getchar();
	putchar(a);
	putchar(b);
	putchar(c);
	putchar('\n');
	return 0;
}

运行的结果如下:
在这里插入图片描述

例3.10:从键盘输入一个大写字母,在显示器上显示对应的小写字母

#include <stdio.h>
int main()
{
	char c1,c2;
	c1=getchar();
	c2=c1+32;
	putchar(c2);
	putchar('\n');
	return 0;
}

运行的结果如下:
在这里插入图片描述

第4章 选择结构程序设计

例4.1:求ax^2+bx+c=0方程的解

#include <stdio.h>
#include <math.h>
int main()
{
	double a,b,c,disc,x1,x2,p,q;
	scanf("%lf%lf%lf",&a,&b,&c);
	disc=b*b-4*a*c;
	if(disc<0)
	printf("This equation hasn real roots\n");
	else
	{
		p=-b/(2.0*a);
		q=sqrt(disc)/(2.0*a);
		x1=p+q;x2=p-q;
		printf("real roots:\nx1=%7.2f\nx2=%7.2f\n",x1,x2);
	}
	return 0;
}

运行的结果如下:
在这里插入图片描述
另一个结果如下:
在这里插入图片描述

例4.2:输入两个实数,按由小到大的顺序输出这两个数

#include <stdio.h>
int main()
{
	float a,b,t;
	scanf("%f,%f",&a,&b);
	if(a>b)
	{
		t=a;
		a=b;
		b=t;
	}
	printf("%5.2f,%5.2f\n",a,b);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例4.3:有三个数a、b、c,要求按由小到大的顺序输出

#include <stdio.h>
int main()
{
	float a,b,c,t;
	printf("请输入三个数:");
	scanf("%f,%f,%f",&a,&b,&c);
	if(a>b)								
	{
		t=a;
		a=b;
		b=t;
	}									
	if(a>c)								
	{
		t=a;
		a=c;
		c=t;
	}									
	if(b>c)								
	{
		t=b;
		b=c;
		c=t;
	}									
	printf("%5.2f,%5.2f,%5.2f",a,b,c);	
	return 0;
}

运行的结果如下:
在这里插入图片描述

例4.4:输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符

#include <stdio.h>
int main()
{
	char ch;
	scanf("%c",&ch);
	ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
	printf("%c\n",ch);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例4.5:有一阶跃函数 编写一程序,输入一个x的值输出相应的y值

x<0,y=-1
x=0, y=0
x>0, y=1

#include <stdio.h>
int main()
{
	int x,y;
	scanf("%d",&x);
	if(x>=0)
		if(x>0) y=1;
		else    y=0;
	else        y=-1;
	printf("x=%d,y=%d\n",x,y);
	return 0;
}

运行结果如下:
在这里插入图片描述

例4.6:要求按照考试成绩的等级输出百分制分数段,成绩的等级由键盘输入

#include <stdio.h>
int main()
{
  char grade;
  scanf("%c",&grade);
  printf("your score:");
  switch(grade)
  {  
     case 'A': printf("85~100\n");break;
     case 'B': printf("70~84\n");break;
     case 'C': printf("60~69\n");break;
     case 'D': printf("<60\n");break;    
	   default :  printf("data error!\n");
    }
  return 0;
 }

运行的结果如下:
在这里插入图片描述

例4.7:用switch语句处理菜单命令

#include<stdio.h>
int main()
{
   void action1(int,int),action2(int,int);
   char ch;
   int a=15,b=23;
   ch=getchar();
   switch(ch)
   	{
   		case 'a':
   		case'A':action1(a,b);break;
   		case'b':
   		case'B':action2(a,b);break;
   		default:putchar('\a'); 
   	}
   return 0;
} 
void action1(int x,int y)
{
   printf("x+y=%d\n",x+y);
}
void action2(int x,int y)
{
   printf("x*y=%d\n",x*y);
}

运行的结果如下:
在这里插入图片描述

例4.8:判断某一年是否为润年

#include<stdio.h> 
int main()
{
	int i;
	printf("请输入年份:\n");
	scanf("%d",&i);
	if(i % 4 == 0 && (i % 100 != 0 || i % 400 == 0))
	{
		printf("是闰年\n");
	}
	else
		printf("不是闰年\n");
	return 0;
}

运行的结果如下:
在这里插入图片描述
在这里插入图片描述

例4.9:是例4.1

例4.10:运输公司对用户计算运输费用路程越远,运费越低标准如下

s>250 没有折扣
205<=s<=500 %2折扣
500<=s<=100 %5折扣
1000<=s<=2000 %8折扣
2000<=s<3000 %10折扣
3000<=s %15折扣

#include <stdio.h>	
int main()
{
   int c,s;	
   float p,w,d,f;
   printf("please enter price,weight,discount:");	//提示输入的数据
   scanf("%f,%f,%d",&p,&w,&s);						//输入单价、重量、距离
   if(s>=3000)c=12;								//3000km以上为同一折扣
   else       c=s/250;							//3000km一下各段折扣不同,c的值不相同
   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);
   printf("freight=%10.2f\n",f);
   return 0;
}

运行的结果如下:
在这里插入图片描述

第5章 循环结构程序设计

例5.1:求1+2+3+4+…+100

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

运行的结果如下:
在这里插入图片描述

例5.2:用do…while语句求1+2+3+…+100

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

运行的结果如下:
在这里插入图片描述

例5.3:while和do…while循环的比较

#include <stdio.h>
int main()
{
	int i,sum=0;
	printf("plesae enter i,i=?");
	scanf("%d",&i);
	while(i<=10)
		{
			sum=sum+i;
			i++;
		}
	printf("sum=%d\n",sum); 
	return 0;
}

运行的结果如下:
在这里插入图片描述

例5.4:在全系1000名学生中矩形慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数以及平均每人捐款的数目

#include <stdio.h>
#define SUM 100000	
int main()
{
	float amount,aver,total;
	int i;
	for(i=1,total=0;i<=1000;i++)
	{
		printf("please enter amount:");
		scanf("%f",&amount);
		total=total+amount;
		if(total>=SUM)break;
	}
	aver=total/i;
	printf("num=%d\naver=%10.2f\n",i,aver);
	return 0;
}

运行的结果如下:
在这里插入图片描述

例5.5:要求输出100~200的不能被3整除的数

#include<stdio.h>
int main()
{
	int n;
	for(n=100;n<=200;n++)
	{
		if(n%3==0)
			continue;
		printf("%d ",n);
	}
	printf("\n");
	return 0;
} 

运行的结果如下:
在这里插入图片描述

例5.6:输出以下4*5矩阵

#include<stdio.h>
int main()
{
	int i,j,n=0;
	for(i=1;i<=4;i++)
		for(j=1;j<=5;j++,n++)
		{
			if(n%5==0) printf("\n");
			printf("%d\t",i*j);
		}
	printf("\n");
	return 0;
} 

运行的结果如下:
在这里插入图片描述

例5.7:用公式求π的近似值直到发现某一项的绝对值小于10的-6次方为止

#include<stdio.h>
#include<math.h>
int main()
{
	int sign=1;
	double pi=0.0,n=1.0,term=1.0;
	while(fabs(term)>=1e-6)
		{
			pi=pi+term;
			n=n+2;
			sign=-sign;
			term=sign/n;
		}
	pi=pi*4;
	printf("pi=%10.8f\n",pi);
	return 0;
 } 

运行的结果如下:
在这里插入图片描述

例5.8:求Fibonacci(斐波那契)数列的前40个数

#include<stdio.h>
int main()
{
   int f1=1,f2=1;
   int i;
   for(i=1;i<=20;i++)
   {
   	printf("%12d %12d",f1,f2);
   	if(i%2==0) printf("\n");
   	f1=f1+f2;
   	f2=f2+f1;
   }
   return 0;
} 

运行的结果如下:
在这里插入图片描述

例5.9:输入一个大于3的整数n,判定它是否为素数

#include<stdio.h>
int main()
{
	int i,n;                             
	printf("please enter a integer number,n=?");
	scanf("%d",&n);                    
	for(i=2;i<n;i++)                    
	if(n%i==0) break;	
	if(i<n) printf("%d is not a prime number.\n",n);       
	else printf("%d is a prime number.\n",n);            
	return 0;
} 

运行的结果如下:
在这里插入图片描述

例5.10:求100~200的全部素数

#include<stdio.h>
#include<math.h>
int main()
{
	int n,k,i,m=0;
	for(n=101;n<=200;n=n+2)
 		{k=sqrt(n);
 		for(i=2;i<=k;i++)
 			if(n%i==0) break;
 		if(i>=k+1)
 			{printf("%d ",n);
 			m=m+1;
			}
		if(m%10==0) printf("\n");
		}
	printf("\n");
	return 0;
} 

运行的结果如下:
在这里插入图片描述

例5.11:译密码

#include <stdio.h>
int main()
{
	char c;
	c=getchar();
	while(c!='\n')
	{
		if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
		{
			if((c>='W'&&c<='Z')||(c>='w'&&c<='z'))c=c-22;
			else c=c+4;	
		}
		printf("%c",c);
		c=getchar();
	}
	printf("\n");
	return 0;
}

运行的结果如下:
在这里插入图片描述

第6章 利用数组处理批量数据

例6.1:对10个数组元素依次赋值为1,2,3,4,5,6,7,8,9,10,要求按顺序输出

#include <stdio.h>
int main()
{ 
	int i,a[10];
	for(i=1;i<=10;i++)			//对数组元素a[0]-a[9]赋值
	{
		a[i]=i;
	}
	for(i=1;i<=10;i++)			//输出a[0]-a[9]共10个数组元素		
	{
		printf("%d ",a[i]);
	}
	return 0;
}

运行结果如下:
在这里插入图片描述

例6.2:用数组来处理求Fibonacci数列问题

#include<stdio.h>
int main()
{
	int a[20]={1,1};          //定义一个数组a并为前两项赋值为1,1
	int i;
	for(i=2;i<20;i++)         //Fibonacci数列计算方法
	{
		a[i]=a[i-2]+a[i-1];
	}
   for(i=0;i<20;i++)         //循环输出a数组
	{
		if(i%5==0) printf("\n");
		printf("%12d",a[i]);
	}
    printf("\n");
	return 0;
} 

运行的结果如下:
在这里插入图片描述

例6.3:有10个地区的面积,要求对他们按由小到大的顺序排列(冒泡排序)

#include <stdio.h>
int main()
{
	int a[10];				
	int i,j,t;				
	printf("input 10 numbers :");
	for(i=0;i<10;i++)		
	{
		scanf("%d",&a[i]);	
	}
	for(j=0;j<9;j++)		
	{
		for(i=0;i<9-j;i++)	
		{
			if(a[i]>a[i+1])	
				t=a[i];
				a[i]=a[i+1];
				a[i+1]=t;
			}				
		}
	printf("the sorted numbers :");
	for(i=0;i<10;i++)
	{
		printf("%d ",a[i]);	
	}
	return 0;
}

运行结果如下:
在这里插入图片描述

例6.4:将一个二维数组行和列互换,存到另一个二维数组中(矩阵重置)

#include <stdio.h>
int main()
{
	int a[2][3]={{1,2,3},{4,5,6}};
	int b[3][2],i,j;
	printf("array a:\n");
	for(i=0;i<=1;i++)
	{
		for(j=0;j<=2;j++)
		{
			printf("%5d",a[i][j]);
			b[j][i]=a[i][j];
		}
		printf("\n");
	}
	printf("array b:\n");
	for(i=0;i<=2;i++)
	{
		for(j=0;j<=1;j++)
		{
			printf("%5d",b[i][j]);
		}
		printf("\n");
	}
	return 0;
}

运行结果如下:
在这里插入图片描述

例6.5:有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号

#include<stdio.h>
int main() 
{
	int i, j;
	int max, row, colum;
	int a[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { -10, 10, -5, 2 } };
	max = a[0][0];
	for (i = 0; i < 3; i++)
		for (j = 0; j < 4; j++)
			if (max < a[i][j])
			{
				max = a[i][j];
				row = i;
				colum = j;
			}
	printf("max=%d\nrow=%d\ncolum=%d\n", max, row, colum);
	return 0;
}

运行结果如下:
在这里插入图片描述

例6.6:输出一个已知的字符串

#include <stdio.h>	
int main()
{
	char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};
	int i;
	for(i=0;i<15;i++)
		printf("%c",c[i]);
	printf("\n");
	return 0;
}

运行结果如下:
在这里插入图片描述

例6.7:输出一个菱形图

#include <stdio.h>
int main()
{
	char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
	int i,j;
	for(i=0;i<5;i++)
	{
	for(j=0;j<5;j++)
	printf("%c",diamond[i][j]);
	printf("\n"); 
	}
	return 0;
}

运行结果如下:
在这里插入图片描述

例6.8:输入一行字符,统计其中有多少个单词,单词之间用空格分割开

#include<stdio.h>
int main()
{

	char string[81];
	int i,count=0,word=0;
	char c;
	gets(string);//输入一个字符串给字符数组string
	for (i = 0;(c=string[i])!='\0'; i++)
	{
		if (c == ' ')//如果是空格字符,使word置0
		{
			word = 0;
		}
	else if (word == 0)//如果不是空格字符,且word原来的值为0,使word置1
		{
			word = 1;
			count++;
		}
	}
	printf("There are %d words in this line.\n",count);
	return 0;
}

运行的结果如下:

在这里插入图片描述

例6.9:有3个字符串,要求找出其中“最大”者

#include<stdio.h>
#include<string.h>
int main()
{
	char str[3][20];
	char string[20];
	int i;
	for (i = 0; i < 3; i++)
		gets(str[i]);
	if (strcmp(str[0],str[1])>0)
		strcpy(string,str[0]);
	else
		strcpy(string, str[1]);
	if (strcmp(str[2], string)>0)
		strcpy(string, str[2]);
	printf("\nthe largest string is:%s\n", string);
	return 0;
}

运行结果:
在这里插入图片描述

回到目录

第7章 用函数实现模块化程序设计

例7.1:输出以下结果,用函数调用实现

在这里插入图片描述

#include <stdio.h>
int main()
{
	void print_star();					//声明 print_star 函数
	void print_message();				//声明 print_message 函数
	void print_star();					//声明 print_star 函数
	print_star();						//调用 print_star 函数
	print_message();					//调用 print_message 函数
	print_star();						//调用 print_star 函数
	return 0;
}
void print_star()						//定义 print_star 函数
{
	printf("******************\n");		//输出一行 * 号
}
void print_message()					//定义 print_message 函数
{
	printf("  How do you do!\n");		//输出一行文字信息
}

运行结果:
在这里插入图片描述

例7.2:输入两个函数。要求输出其中值较大者。要求用函数找到大数

int max(int x,int y)
{
	int z;
	z=x>y?x:y;
	return(z);
}
#include<stdio.h>
int main()
{
	int max(int x,int y);
	int a,b,c;
	printf("please enter two interger numbers:");
	scanf("%d,%d",&a,&b);
	c=max(a,b);
	printf("max is %d\n",c);
	return 0;
}

运行结果:
在这里插入图片描述

回到目录

例7.3:将7.2中的max函数定义的变量z改为float型

#include<stdio.h>
int main()
{
	int max(float x,float y);
	float a,b;
	int c;
	scanf("%f,%f",&a,&b);
	c=max(a,b);
	printf("max is %d\n",c);
	return 0;
}
int max(float x,float y)
{
	float z;
	z=x>y?x:y;
	return(z);
}

运行结果:
在这里插入图片描述

例7.4:输入两个实数,用一个函数求出他们之和

#include<stdio.h>
int main()
{
	float add(float x,float y);
	float a,b,c;
	printf("Please enter a and b:");
	scanf("%f,%f",&a,&b);
	c=add(a,b);
	printf("sum is %f\n",c);
	return 0;
}
float add(float x,float y)
{
	float z;
	z=x+y;
	return(z);
}

运行结果:
在这里插入图片描述

回到目录

  • 10
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值