"); int n = 0; scanf("%d", &n); for(i = 1; i<=n; i++) { ret = ret * i; } print" />

飞道的博客

循环语句练习、c语言练习

235人阅读  评论(0)

循环语句练习:

1)计算n的阶乘:

#include <stdio.h>
int main()
{
      int i = 0;
    int ret = 1;
    printf("计算阶乘:>");
	int n = 0;
	scanf("%d", &n);
	for(i = 1; i<=n; i++)
	{
     
	    ret = ret * i; 
	
	}
	printf("结果是:%d",ret);

  return 0;
}

2)计算1!+2!+3!+…+10!:

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


第二种:

#include <stdio.h>
int main()
{
     
	int i = 0;
	int sum = 0;
	int n = 0;
	int ret = 1;
	for(i = 1; i<= 10; i++)
	{
   
	   ret = ret * i;
	   sum = sum + ret;

	 }
		printf("%d\n",sum); 
   return 0 ;
}

3)在一个有序数组中查找具体的某个数字n:

#include <stdio.h>
int main()
{
     
	int arr[] = {
   1,2,3.4,5,6,7,8,9,10,11};
	int left = 0;
	int sz = sizeof(arr)/sizeof(arr[0]);
	int right = sz-1;
	int mid= (left + right)/2;
	int k = 7;
	while(left<=right)
{
   
	if(arr[mid] >k)
	{
   
         right = mid - 1;	
	}
	else if(arr[mid] <k)
	{
   
	    left = mid + 1;
	}
	else 
	{
   
	  printf("找到了,下标是:%d\n",mid);
	  break;
	}
   
}
	 if(left>right)
	printf("找不到\n");
	return 0 ;

}

运用了二分找查法,利用下标与数组中的元素关系,寻找中间值,从而找到目标数字。

4)编写代码,演示多个字符从两端移动,向中间汇聚 :

#include <string.h>
#include <stdio.h>
#include<Windows.h>
int main()
{
    
	char arr1[] = "welcome to GPNU!" ;
	char arr2[] = "################";
	int left = 0;
	int right = strlen(arr1)-1;
	while(left<=right) 
	{
   
		arr2[left] = arr1[left];
	    arr2[right] = arr1[right];
		printf("%s\n",arr2);
	    Sleep(1000);
		system("cls");
		left++;
		right--;

	}
	printf("%s\n",arr2);
   return 0;
}

Sleep(1000); 睡眠函数,可以短暂停留。
system(“cls”); 清空屏幕

5)编写代码实现,模拟用户登录情景,并且只能登录三次 :

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


c语言练习:

1、关于c语言关键字说法正确的是:(B)
A.关键字可以自己创建
B.关键字不可以自己创建
C.关键字可以做变量名
D.typedef不是关键字

2、下面不是关键字的是(C)
A.int
B.struct
C.define 预处理指令
D.continue

3、

int func(int a)
{
   
   int b;
   switch(a)
   {
   
     case 1: b= 30;
     case 2: b= 20;
     case 3: b= 16;
     case 4: b= 0;
   }
   return b;
}

则func(1)=(D)
A.30
B.20
C.16
D.0
没有break语句,所以一直执行到结束。

写代码将三个数从大到小输出

#include <string.h>
#include <stdio.h>
int main()
{
    
  int a= 0;
  int b= 0;
  int c= 0;
  scanf("%d %d %d",&a,&b,&c);
   if(a<b)
   {
   
       int tmp = a;
	   a=b;
	   b= tmp;
   }
   if(a<c)
  {
   
       int tmp = a;
	   a=c;
	   c= tmp;
   }
   if(c>b)
	   {
   
       int tmp = b;
	   b=c;
	   c= tmp;
   }
	printf("%d %d %d",a,b,c);
   return 0;
}

写代码输出1-100中3的倍数

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

给定两个数,求这两个数的最大公约数

#include <stdio.h>
int main()
{
    
   int m =0;
   int n =0;
   scanf("%d%d",&m,&n);
   int r = m % n;
     while(r!=0)
	 {
   
	   m = n;
	   n = r;
	   r = m % n; 
	 }
	 printf("%d",n);
   return 0;
}

辗转相除法: m除以n,若剩有余数,余数赋值为n,原先n的值赋值给m,再继续相除,直到余数为0,此时n的值就是两个数的最大公约数。

打印1000年到2000年之间的闰年
判断闰年的方法是 1、能被4整除且不能被100整除。2、能被400整除 。

#include <stdio.h>
int main()
{
    
   int year = 0;
   for(year=1000; year<=2000;year++)
   {
   
      if(year %4 ==0 && year % 100 !=0 )
       printf("%d ",year);
      else if(year %400 ==0)
	   printf("%d ",year);
   }
   return 0;
}


打印100~200之间的素数
试除法:

#include <stdio.h>
int main()
{
    
   int i= 0;
   int count =0;
   for(i=100; i<=200; i++)
   {
   
	   int j= 0;
      for(j=2; j<i; j++)
	  {
   
	      if(i%j == 0)
		  {
   
		    break;
		  }
	  }
	  if(j == i)
		  {
    
			count++;
		    printf("%d ",i);
		  }

   }
   printf("\ncount=%d\n",count);
   return 0;
}


当一个数不是素数时,这个数可以写成,i=a*b,且a\b<=开平方i.

4、
关于while(条件表达式),以下叙述正确的是(B)?(假设循环体里面没有break,continue,return,goto等等语句)
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关

1-100之间有多少个数字9

#include <stdio.h>
int main()
{
    
  int i =0;
  int count = 0;
  for(i=1; i<=100;i++)
	{
     if(i%10 == 9)
	  {
   
	     count++;
	  }
	  if(i/10 == 9)
	  {
   
	     count++;
	  }
     }
	  printf("%d ",count);
     return 0;
}

一共20个9。

分数求和
求解:1/1-1/2+1/3-1/4+1/5…+1/99-1/100;

#include <stdio.h>
int main()
{
    
  int i =0;
  double sum = 0.0;
  int flag =1;
  for(i=1; i<=100; i++)
  {
   
    sum += flag*1.0/i;
	flag = -flag;
   
  }
  printf("%lf\n",sum);
     return 0;
}

求十个负数的最大值

#include <stdio.h>
int main()
{
   
  int i = 0;
  int arr[] ={
   -1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
  int max = arr[0];
  int sz = sizeof(arr)/sizeof(arr[0]);
   for(i=1; i<sz; i++)
   {
   
     if(arr[i]> max)
       {
   
         max = arr[i];
      }
   }
   printf("max=%d\n",max);
}


打印九九乘法表

#include <stdio.h>
int main()
{
   
  int i = 0;//打印九行
  for(i= 1; i<= 9; i++)
  {
   
      int j = 1;//打印一行
	  for(j=1; j<=i; j++)
	  {
   
	    printf("%d*%d=%-2d ",i,j,i*j);//左对齐,打印数字时打印两位,数字不够两位就用空格填充
	  
	  }
     printf("\n");
 }
  return 0;
}


大部分代码都没有办法自己写出来,但是能够理解代码。所以需要反复看,将方法和算法记住。


转载:https://blog.csdn.net/xiaotangyu7dong/article/details/115388306
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场