C 下册例题整理

输入精度e,使用格雷戈里公式求π的近似值,精确到最后一项的绝对值小于e。
#include <stdio.h>
#include <math.h>
int main (void)
{ 	double e, pi;
   	double funpi (double e); 

	printf ("Enter e:");
   	scanf ("%lf", &e);
   	pi = funpi (e);
  	printf ("pi = %f\n", pi);	

	return 0;
}
double funpi (double e) 
{	 int denominator, flag; 
      double item, sum;
   	 flag = 1; 
   	 denominator = 1;
  	 item = 1.0; 
   	 sum = 0; 
      while (fabs (item) >= e){   
	     item = flag * 1.0 / denominator;
          sum = sum + item;
          flag = -flag; 
	     denominator = denominator + 2; 
       }
   	  return sum * 4;
}
求100以内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。要求定义和调用函数prime (m)判断m是否为素数,当m为素数时返回1,否则返回0。
#include <stdio.h>
#include <math.h>
int main(void)
{  	int count, m;   
   	int prime (int m);
    	count = 0;
    	for(m = 2; m <= 100; m++){
	    if ( prime(m) != 0   ){
	        printf("%6d", m );     
             	count++;            	
             	if (count %10 == 0)  
		    printf ("\n");
         }
    	}
    	printf ("\n");
}
int prime (int m)
{   int i, n;
    if ( m == 1 ) return 0;  
    n = sqrt (m);
    for( i = 2; i <= n; i++) 
        if (m % i == 0){
          	    return 0;	
       }
    return 1; 
}
递归求n!
/*递归求n!*/
#include <stdio.h>
double  fact(int n);
int main(void)
{   int n;
    scanf ("%d", &n);
    printf ("%f", fact (n) );
    return 0;
}
double  fact(int n)	           /*  函数定义  */
{  
	double result;
    if (n==1 || n == 0) 	           /*  递归出口  */
        result = 1;
    else 
        result = n * fact(n-1);      
    return result;
}
冒泡排序算法
/*冒泡排序算法*/
#include <stdio.h>
void main(){
	int i,j,t,a[10];                   //定义变量数组基本类型
	printf("Please input numbers: ");
	for(i=0;i<10;i++){
		scanf("%d",&a[i]);             //从键盘输入要排序的数组
	}	
	for(i=0;i<10;i++){
		for(j=i+1;j<=9;j++){
			if(a[i]>a[j]){            //如果后一个数比前一个数大利用中间变量t实现俩值互换
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
		}
	}
	printf("Please output numbers: ");
	for(i=0;i<=9;i++){
		printf("%-3d",a[i]);
	}
	printf("\n");
选择排序法
/*选择排序法*/
#include<stdio.h>
int main()
{
	int i,index,k,n,temp;
	int a[10];
	/*输入*/
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
		}
	/*排序*/
	for(k=0;k<n-1;k++){
		index=k;
		for(i=k+1;i<n;i++)
			if(a[i]<a[index])
				index=i;
			temp=a[index];
			a[index]=a[k];
			a[k]=temp;
		}
		/*输出*/
		for(i=0;i<n;i++)
			printf("%d",a[i]);
		printf("\n");
	return 0;
}
		
用数组计算fibonacci数列的前10个数,并按每行打印5个数的格式输出。
1, 1, 2, 3, 5, 8, 13, ……
用数组计算并存放fibonacci数列的前10个数
f[0] = f[1] = 1
f[n] = f[n-1] + f[n-2]    2≤n≤9
#include <stdio.h>
int main(void)
{  
    int i;
    int fib[10] = {1, 1};   /* 数组初始化 */

    for ( i = 2; i < 10; i++ )    
        fib[i] = fib[i - 1] + fib[i - 2];

    for ( i = 0; i < 10; i++ ){ 
        printf ( "%6d", fib[i] );
        if ( (i + 1) % 5 == 0 )      /* 5个数换行 */
            printf("\n");  
     }
    return 0;
} 
输入一个以回车符为结束标志的字符串(少于80个字符),判断该字符串是否为回文。
回文就是字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。。
#include<stdio.h>
int main ( void )
{  int i, k;
   char line[80];
   printf("Enter a string: ");
   k = 0;
   while ( (line[k] = getchar() ) != '\n' )
       k++;
   line[k] = '\0';
   i =0;        
   k = k -1;   
   while ( i< k ){
	   if ( line[i] != line[k] ) 
             break;
	   i++;
	   k--;
   }
   if( i >= k)  printf("It is a plalindrome\n");
   else printf("It is not a plalindrome\n");
   return 0;
} 
   
输入10个整数,计算这些数的平均值,再输出所有大于平均值的数。
#include<stdio.h>
int main(void)
{  int i; double average, sum;          /* average存放平均值 */
   int a[10];                     
  printf ("Enter 10 integers: ");
   sum = 0;
   for( i = 0; i < 10; i++ ){
      scanf ( "%d", &a[i] ); 
      sum = sum + a[i]; 
   }
    average = sum / 10;	
   printf ( "average = %.2f\n", average );
   printf ( ">average:" );
   for( i = 0; i < 10; i++ ){ 
       if( a[i] > average )
            printf( "%d ", a[i] );
    }
   printf ( "\n" ); 
    return 0;
}
有一个3*4的矩阵,要求编程序求出其中最大值的那个元素的值及其所在的行号和列号。

#include <stdio.h>
void  main( )
{   int i, j, row=0, colum=0, max;
     int  a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; 
  max=a[0][0];
  for(i=0; i<=2; i++)
   for(j=0; j<=3; j++)
   if (a[i][j]>max)
            {  max=a[i][j];
                row=i;
                colum=j;
             }
   printf("max=%d,row=%d, colum=%d\n", max, row, colum);
 }
输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。

#include <stdio.h>
int main(void)
{   int i, flag, x;   int a[5];    
    printf(“Enter 5 integers: ");
    for(i = 0; i < 5; i++) 
        scanf("%d", &a[i]);
    printf(“Enter x: "); 
    scanf("%d", &x);
    flag = 0;
    for(i = 0; i < 5; i++) 
        if(a[i] == x){ 
            printf("Index is %d\n", i);
            flag = 1;
            break;
        }
    if(flag == 0)     printf("Not Found\n");
    return 0;
} 
将二维数组行列元素互换,存到另一个数组中。
#include <stdio.h>
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");
    }
}
指针作为函数参数模拟角色互换
#include<stdio.h>
void swap2( int *px, int *py );
int main (void) 
{  
   int a = 1, b = 2;
      int *pa = &a, *pb = &b;
      swap2(pa, pb);
      printf (“After calling swap2: a=%d b=%d\n”, a, b);
      return 0;
}
swap2 (&a, &b);
void swap2 (int *px, int *py)
{    int t;

     t = *px; 
     *px = *py; 
     *py = t;
}
分别使用指针计算数组元素之和 

int main(void)
{   
	int i, a[10], *p;
    long sum = 0;
    printf("Enter 10 integers: ");
    for(i = 0; i < 10; i++) 
         scanf("%d", &a[i]);
    for ( i = 0; i < 10; i++)
         sum = sum + a[i];
   printf("calculated by array, sum=%ld \n", sum); 
   sum=0; 
    for(p = a; p <= a+9; p++)
        sum = sum + *p;
    printf("calculated by pointer, sum=%ld \n", sum); 
    return 0;  
    } 

#include<stdio.h>
int main(void)
{
	int i,k,temp;
	char str[80];
  	printf("input a string:");
	i=0;
	while((str[i]=getchar())!='\n')
		i++;
	str[i]='\n';
	k=i-1;
	for(i=0;i<k;i++){
		temp=str[i];
		str[i]=str[k];
		str[k]=temp;
		k--;
}
	for(i=0;str[i]!='\0';i++)
		putchar(str[i]);
	return 0;
}
利用指针找最大值:利用指针指向两个整型变量,并通过指针运算找出两个数中的最大值,输出。

#include<stdio.h>
int main()
{
	int max,x,y,*pmax,*py,*px;
	scanf("%d%d",&x,&y);
	px=&x;
	py=&y;
	pmax=&max;
	*pmax=*px;
	if(*pmax<*py)
		*pmax=*py;
	printf("max=%d\n",max);
	return 0;
}

连接字符串:函数strc的作用是将字串s连接到字串t的尾部。编写一个程序,在主函数中输入两个字符串s和t,调用函数strc完成字符串的链接
#include<stdio.h>
#include<string.h>
void strc(char *s,char *t);
int main()
{
	char s[80],t[80];
	gets(s);
	gets(t);
	strc(s,t);
	puts(t);
	return 0;
}
void strc(char *s,char *t)
{
	while(*t!='\0')
	t++;
	while(*t++=*s++)
		;
	
}
结构体计算职工工资(简单在输出时进行计算)
#include<stdio.h>
int main(void)
{
	struct emp{
		char name[10];
		float jbgz;
		float fdgz;
		float zc;
	};
	struct emp s[10];
	int i,n;
	printf("n=");
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%s%f%f%f",s[i].name,&s[i].jbgz,&s[i].fdgz,&s[i].zc);/*%s对应的取地址不用符号“&”*/
	for(i=0;i<n;i++)   
		printf(%s,实发工资:%.2f\n",s[i].name,s[i].jbgz+s[i].fdgz-s[i].zc);
	return 0;
}
结构体计算时间:一个时间再过n秒后的时间
#include <stdio.h>
int main()
{
    int ss;
    struct time{
		int h,m,s;};
    struct time s1;
    scanf("%d:%d:%d",&s1.h,&s1.m,&s1.s);
    scanf("%d",&ss);
    s1.s=s1.s+ss;
	if (s1.s>=60) {
        s1.m=s1.s/60+s1.m;
        s1.s=s1.s%60;
    }
    if (s1.m>=60) {
        s1.h=s1.m/60+s1.h;
        s1.m=s1.m%60;
    }
    if (s1.h>=24) {
        s1.h=s1.h%24;
    }
    printf("%d:%d:%d\n",s1.h,s1.m,s1.s);
}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值