编程实例练习

统计最高最低平均分

功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max代表最高分,min
代表最低分,avg代表平均分。

# include <stdio.h>

int main(void)
{
/*-------------------------------------------------------
功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max代表最高分,min
      代表最低分,avg代表平均分。

-------------------------------------------------------*/
/***********FOUND***********/
  float a[10],min,max,avg;
  int i;
  printf("input 10 score:");
  for(i=0;i<=9;i++) 
 {
    printf("input a score of student:"); 
    /***********FOUND***********/
    scanf("%f",&a[i]);
  } 
  max=min=avg=a[0];
  for(i=1;i<=9;i++) {
    /***********FOUND***********/
    if(min>a[i])  
      min=a[i];
    if(max<a[i])
      max=a[i];
    avg=avg+a[i];
  }
  avg=avg/10;
  printf("max:%f\nmin:%f\navg:%f\n",max,min,avg);


	return 0;
}

成绩等级分类

给出一百分制成绩,要求输出成绩等级‘A’,’B’,’C’,’D’,’E’。
90分以上为‘A’,8089分为’B’,7079分为’C’,60~69分为’D’,
60分以下为’E’。
要求:用switch语句完成程序。

# include <stdio.h>

int main(void)
{
/**
给出一百分制成绩,要求输出成绩等级‘A’,’B’,’C’,’D’,’E’。
90分以上为‘A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,
60分以下为’E’。
要求:用switch语句完成程序。
------------------------------------------------*/
/**********Program**********/
	int score;
	printf("输入一个数字");
    scanf("%d",&score);

	if(score>100||score<0)
	{
		printf("\n输入有误,请重输");
		scanf("%f",&score);
	}

	score= score/10;
	switch(score)
	{
		case 10:
		case 9:printf("grade= A ");break;
		case 8:printf("grade= b ");break;
		case 7:printf("grade= c ");break;
		case 6:printf("grade= d ");break;
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
		case 0:printf("grade= e ");
	}
	return 0;
/**********  End  **********/

}

求和

# include <stdio.h>

int main(void)
{
	int n;
	int i;
	double sum= 0.0;
	int sign = 1;
	printf("输入一个n,求f(n):");      
	scanf("%d",&n);
	for(i=1; i<=n;i++)
	{
	 sum += sign*1.0/i;
	 sign = -sign;
	}
	
	printf("计算得:f(%d)=%f\n", n, sum);
	return 0;
	
}               
 

求矩阵的转置

#include <stdlib.h>    
#include <stdio.h>
void convert(int a[][4],int b[][2]){
  int i,j;
  for(i=0;i<2;i++)
    for(j=0;j<4;j++)
       b[j][i]=a[i][j];
}

void main()
{ 
  int a[2][4]={1,3,5,7,
               2,4,6,8},b[4][2];
  int i;
  convert(a,b);
/***********SPACE***********/
  for(i=0;i<4;i++)
  printf("%2d  %2d\n",b[i][0],b[i][1]);
}

冒泡排序(对数组进行从小到大排序)

#include <stdlib.h>
#include <stdio.h>

void main() {
	int i,j,temp;
	int n=6;//数组里的六个数
	int a[]={2,3,4,1,5,6};
	for(i=0; i<n-1; i++) {
		for(j=0; j<n-1-i; j++) {
			if(a[j]>a[j+1]) {
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
	int m;
	printf("从小到大为:\n");
	for(m=0;m<6;m++)//数组里的六个数
	printf("%d\n",a[m]);
}

比较字符串长短

给定程序中,程序的功能是:输入2个字符串,输出2个字符串中
较短串的长度。请填空。

/*-------------------------------------------------------


给定程序中,程序的功能是:输入2个字符串,输出2个字符串中
较短串的长度。请填空。

-------------------------------------------------------*/
#include <string.h>
#include <stdio.h>

void main() /*注意:请不要修改或删除程序行*/
{
  char a1[20],a2[20];
  int l1,l2,num;
  printf("输入第一个字符串:");
  gets(a1);
  printf("输入第二个字符串:");
  gets(a2);
/***********SPACE***********/
  l1=strlen(a1); 
/***********SPACE***********/
  l2=strlen(a2);
/***********SPACE***********/
  num=(l1<l2)?l1:l2;//比较l1和l2的大小,如果l1小于l2,num=l1
  printf("%d",num);
}
 

调用函数fun判断是否为素数

#include <stdio.h>

int fun(int n){
	int i=0;
	for(i=2;i<n;i++) 
	if(n%i==0) 
	return 0; 
	if(i==n) 
	return 1;
}

void main() 
{
	int n,s;
	printf("Please enter N: ");	
	scanf("%d",&n);
	s=fun(n);
	if(s==1){
		printf("%d是素数",n);
	}
	else{
		printf("%d不是素数",n);
	}

}
 

字符串带空格的输入与输出

#include <stdio.h>
#include <string.h>


void main() 
{
	char a[10];
	printf("输入字符串名字(带空格):");
     gets(a);
/***********FOUND***********/
	printf("原样输出字符串:");
     printf("%s",a);


}
 

计算分段函数的值

         x*20      x<0且x≠-3
   f(x)= sin(x)     0≤x<10且x≠2及x≠3
         x*x+x-1      其它
#include <stdio.h>
#include <string.h>
#include <math.h> 
/**********************
             x*20      x<0且x≠-3
       f(x)= sin(x)     0≤x<10且x≠2及x≠3
             x*x+x-1      其它
**********************/
void main() 
{
  double x,f;
  printf("input x=");
  scanf("%lf",&x);
 /**********FOUND**********/
  if (x<0&&x!=-3.0)
     f=x*20;
 /**********FOUND**********/
  else if(x>=0&& x<10.0 && x!=2.0 && x!=3.0)
     f=sin(x);
  else 
     f=x*x+x-1;
    
  printf("x=%0.1f,f(x)=%f\n",x,f);
}
 

求1~100的和

功能:求1+2+3+…+100的和。

#include <stdio.h>
/*---------------------------------------------------------

功能:求1+2+3+...+100的和。

-------------------------------------------------------*/
#include <stdio.h>
int main()
{
  int i=1,sum;
/***********SPACE***********/
  sum=0;
/***********SPACE***********/   
  while (i<=100)    
  {    
/***********SPACE***********/                              
   sum=sum+i;      
   i++;                              
  }
/***********SPACE***********/                                   
  printf("和等于:%d\n",sum);             
  return 0;
}
 

数组逆序存放

功能:数组逆序

#include <stdio.h>
/*---------------------------------------------------------

功能:数组逆序

-------------------------------------------------------*/
#include <stdio.h>
#define N 7
void main () {
	int a[N]= {12,9,16,5,7,2,1},k,s;
	printf("\n the origanal array:\n");
	for (k=0; k<N; k++)
		printf("%4d",a[k]);
	/***********SPACE***********/
	for (k=0; k<N/2; k++) {
		s=a[k];
		/***********SPACE***********/
		a[k]=a[N-k-1];
		/***********SPACE***********/
		a[N-k-1]=s;
	}
	printf("\n the changed array:\n");
	for (k=0; k<N; k++)
		printf("%4d",a[k]);
}

求二维数组中的最大元素

功能:求出二维数组中的最大元素值。

/*-------------------------------------------------------

功能:求出二维数组中的最大元素值。

-------------------------------------------------------*/

#include <stdio.h>

int max_value(int array[][4])

{
  int i,j,max;
/***********SPACE***********/
  max=array[0][0];
  for(i=0;i<3;i++)
    for(j=0;j<4;j++)
       if(max<array[i][j])
 /***********SPACE***********/
        max=array[i][j];
  return(max);
}

void main()
{
  int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
  /***********SPACE***********/
  printf("max value is %d\n",max_value(a));
}

求最大公约数

功能:求最大公约数。

/*-------------------------------------------------------

功能:求最大公约数。

*/
/*
	枚举法
*/

#include<stdio.h>
int main()
{
    int m, n, temp, i;
    printf("请输入两个数:");
    scanf("%d%d", &m, &n);
    if(m<n)  //比较大小,使得m中存储大数,n中存储小数
    {//交换m和n的值
        temp=m;
        m=n;
        n=temp;
    }
    for(i=n; i>0; i--)  //按照从大到小的顺序寻找满足条件的自然数
        if(m%i==0 && n%i==0)//输出满足条件的自然数并结束循环
        {
            printf("%d 和 %d 的最大公约数为: %d\n", m, n, i);
            break;
        }
   
    return 0;
}
/*
    辗转相除法
*/
#include<stdio.h>
int main()
{
    int a, b;
    printf("请输入两个数:");
    scanf("%d%d", &a, &b);
 		while (a && b)
		{
			if (a > b)
				a = a % b;
			else
				b = b % a;
		}
		printf("最大公约数为%d", a>b?a:b);

   
    return 0;
}

输出100到1

#include <stdio.h>

int main(){    
   int a; 
   printf("输出1到100\n");
    a=1;
   while(a<101){
      printf("%3d ",a);//数字宽度为3
    a++;    
   }
   return 0;
}

输出所有水仙花数

功能:输出所有的“水仙花数”。所谓水仙花数是一个三位数,其各位数字的
立方和等于该数本身。

例如:153=1^3 + 5^3 + 3^3,所以153是一个水仙花数。

/*-------------------------------------------------------
功能:输出所有的“水仙花数”。所谓水仙花数是一个三位数,其各位数字的
立方和等于该数本身。

例如:153=1^3 + 5^3 + 3^3,所以153是一个水仙花数。
-------------------------------------------------------*/
#include <stdio.h>

int main( ){
    int x,a,b,c;
    for(x=100;x<999;x++)
    {        
        a=x%1000/100;
        b=x%100/10;
        c=x%10/1;
        if(x==a*a*a+b*b*b+c*c*c) 
            printf("%d ",x);
    }
    
    return 0;
}

自定义函数找最大值

功能:输入两个实数,求较大者。要求用自定义函数max()找到大数。

/*-------------------------------------------------------
功能:输入两个实数,求较大者。要求用自定义函数max()找到大数。
-------------------------------------------------------*/
#include <stdio.h>



float max(float x,float y){
	float z;
	 if(x>y) z=x;
	 else z=y;
	 return (z);
}

int main( ){
	float big;
	float num1,num2;
	printf("请输入两个数字,比较大小\n");
	printf("第一个数字:\n");
	scanf("%f",&num1);
	printf("第二个数字:\n");
	scanf("%f",&num2);
	big = max(num1,num2);
	printf("最大值为%.3f",big);//小数点保留三位
		
	
}

交换ab的值

功能:输入整数a和b,交换a和b后输出。

/*-------------------------------------------------------

功能:输入整数a和b,交换a和b后输出。

-------------------------------------------------------*/
#include <stdio.h>

void main()
{
        int a,b,temp;
        printf("输入整数a,b:");
        scanf("%d%d",&a,&b);
        temp=a;
        a=b;
        b=temp;
        printf("a=%d  b=%d\n",a,b);  
}

通过递归函数计算阶乘

功能:通过函数的递归调用计算阶乘。

/*-------------------------------------------------------

功能:通过函数的递归调用计算阶乘。

-------------------------------------------------------*/
#include  <stdio.h>

long power(int n)
{
  long f;
  if(n==1|| n==0)
	 f = 1;
  else  
     f = n * power(n-1);
  return(f);
}
int main()
{
  int n;
  long y;
  printf("input a inteager number:\n");
  scanf("%d",&n);
  y=power(n);
  printf("%d的阶乘为%ld\n",n,y);
}

计算矩阵对角线之和

功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输
出主对角线上的元素之和sum。

/*-------------------------------------------------------

功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输
      出主对角线上的元素之和sum。

-------------------------------------------------------*/
/*#include <stdio.h>
int main() {
//  int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
	int a[3][3]= {0};
	char i,j;
	int sum=0;
	for(i=0; i<3; i++){
		for(j=0; j<3; j++)
			scanf("%d",&a[i][j]);		
	}
	for(i=0; i<3; i++)
		sum=sum+a[i][i];
	printf("输出的结果为:\n");
	printf("sum=%d\n",sum);
	return 0;
}

解决奥数计算题

解决奥数难题。

请在两个□内填入相同的数字使得等式成立:□3×6528=3□×8256。

/*-------------------------------------------------------

解决奥数难题。

请在两个□内填入相同的数字使得等式成立:□3×6528=3□×8256。

-------------------------------------------------------*/

#include <stdio.h>

int main() {

	int i;
	/***********SPACE***********/
	for(i=1; i<=9; i++) {
		/***********SPACE***********/
		if((3*10+i)*8256==(i*10+3)*6528)
			printf("应填入的数字为:%d",i);
	}
	return 0;
}

输出递减图形

尝试用while循环打印下面的图形。

 *
 **
 ***
 ****
 *****
/*-------------------------------------------------------
	尝试用while循环打印下面的图形。

     *
     **
     ***
     ****
     *****

-------------------------------------------------------*/

#include <stdio.h>

int main() {

	int i=1,j;
	while(i<=5) {
		for(j=0; j<i; j++)
			printf("*",i);
		printf("\n");
		i++;
	}

}

计算小数的和

让计算机把下面这个式子算出来吧!

1.2+2.3+3.4+4.5

/************************************************
让计算机把下面这个式子算出来吧!

1.2+2.3+3.4+4.5
------------------------------------------------*/
/**********Program**********/
#include<stdio.h>
int main(){
	float a,b,c,d,e;
	a=1.2;
	b=2.3;
	c=3.4;
	d=4.5;
	e=a+b+c+d;
	printf("%0.2f=%0.2f+%0.2f+%0.2f+%0.2f",e,a,b,c,d);
	return 0;
}
/**********  End  **********/

判断大小写字母并转换

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

/************************************************
输入一个字符,判断它是否是大写字母。
	如果是,将它转换成小写字母;
如果不是,不转换。然后输出最后得到的字符。
------------------------------------------------*/
/**********Program**********/
#include<stdio.h>
int main() {
	char ch;
	scanf("%c",&ch);
	if(ch >= 'A'&&ch <= 'Z'){
	ch=ch+32;
	printf("大写字母,小写为%c",ch);		
	}
	else {
	printf("小写字母,小写为%c",ch);	
	}
	return 0;
}
/**********  End  **********/

拼接字符串

例程一
编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即
  把p2所指的字符串连接到p1所指的字符串的后面。

例如:分别输入下面两个字符串:“China” “Town”

程序输出:ChinaTown

/*
	例程一
	编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即
      把p2所指的字符串连接到p1所指的字符串的后面。

例如:分别输入下面两个字符串:"China"  "Town"

程序输出:ChinaTown
*/ 
 
#include <stdio.h>
void main()
{
	char s1[100],s2[100];
	int i,j;//定义变量
	printf("请输入两个字符串:\n");
	gets(s1);
	gets(s2);
	i=0;
	while(s1[i]) i++;//通过while循环,遍历s1的内容
	j=0;
	while(s2[j])
	{
	s1[i++]=s2[j++];//连接
	}
	s1[i]='\0';//遇到'\0'结束,输出
	puts(s1);
}

/*
	例程二
	编写函数Fun拼接字符串 
*/ 
#include <stdio.h>

void fun(char p1[],char p2[]) {
	int i,j;
	for(i=0; p1[i]!='\0'; i++);
	for(j=0; p2[j]!='\0'; j++)
		p1[i++]=p2[j];
	p1[i]='\0';
	puts(p1);
}
void main() {
	char a[100],b[100];
	gets(a);
	gets(b);
	fun(a,b);
}

计算圆锥体积

列程序的功能为:已知圆锥半径r和高h,计算圆锥体积v。请纠正程序中存在错误
/*
	列程序的功能为:已知圆锥半径r和高h,计算圆锥体积v。请纠正程序中存在错误
*/ 
#include <stdio.h>


void main() {

   float r=10,h=5,v;

   v=1.0/3*3.14159*r*r*h;
   printf("v=%0.3f\n",v);
}


逆置数组中的元素

下列给定程序中,函数fun的功能是:逆置数组元素中的值。

例如:若a所指数组中的数据为:1、2、3、4、5、6、7、8、9,则逆置后依
      次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。
/*
	下列给定程序中,函数fun的功能是:逆置数组元素中的值。
	
	例如:若a所指数组中的数据为:1、2、3、4、5、6、7、8、9,则逆置后依
	      次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。
*/ 
#include <stdio.h>


void fun(int  a[], int  n){
	int  i,t;
	for (i=0; i<n/2; i++)
	{
	   t = a[i];
	   a[i] = a[n-i-1];
	   a[n-i-1] = t;	       
	}

} 

void main() {
	int shuzu[]={1,2,3,4,5,6,7,8,9};
	fun(shuzu,9);
	int c = 0;
	printf("逆置后的数组为:");
	for(c = 0;c < 9; c++){
		printf("%d",shuzu[c]);
	}
}

拆分十六进制数字

	 0x12345678拆分成0x12.0x34...... 
/*

		 0x12345678拆分成0x12.0x34...... 

*/ 

#include <stdio.h>

int main(){
    int a=0x12345678,b[4]={0};
    b[0]=(a>>6*4)&0xff;
    b[1]=(a>>4*4)&0xff;
    b[2]=(a>>2*4)&0xff;
    b[3]=(a>>0*4)&0xff;
	printf("%x\n",a);
	printf("拆分后:\n");
	printf("0x%x\n",b[0]);
		printf("0x%x\n",b[1]);
			printf("0x%x\n",b[2]);
				printf("0x%x\n",b[3]);	 
	return 0;	
} 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值