精华内容
下载资源
问答
  • 循环语句 ;while语句 ;sum=0; sum =sum +1 sum =sum +2 sum =sum +3 sum=sum+10;二do/while语句 ;while和do/while的比较 ;...例输入m判断m是否为素数质数 ;例输入m判断m是否为素数质数 ;多重循环循环嵌套 ;多重
  • int main1() //判断一个数是否为素数 /*//这个程序是不对的,当输入99,453之类的数值时,会打印yes2和no两个答案  //因为我们在for循环内做了两步,才会出现这种错误情况 { int m; scanf(“%d”,&m); int i;...

    #include<stdio.h>

    #include<string.h>

    int main1() //判断一个数是否为素数

    /*//这个程序是不对的,当输入99453之类的数值时,会打印yes2no两个答案

      //因为我们在for循环内做了两步,才会出现这种错误情况

    {

    int m;

    scanf(“%d”,&m);

    int i;

    if(m==2)

    printf(“m yes1\n”);

    else

    {

    for(i=2;i<m;i++)

    {

    if(m%i==0)

    printf(“m no\n”);

    break;

    else

    printf(“m yes2\n”)

    }

    }

    return 0;

    }

    */

     

    //正确书写

    {

    int m;

    int i;

    scanf(“%d”,&m);

    if(m==2)

    {

    printf(“m yes1\n”);

    }

    for(i=2;i<m;i++)

    {

    if(m%i==0)

    {

    printf(“m no\n”);

    break;

    }

    else

    {

    if(m==i)

    printf(“m yes2”);

    }

    return 0;

    }

    或者:

    if(m==2)

    {

    printf(“m yes1\n”);

    }

    else

    {

    for(i=2;i<m;i++)

    {

    if(m%i==0)

    break;

    }

    if(i==m)

    {

    printf(“m yes2\n”);

    }

    else

    {

    printf(“m no\n”);

    }

    }

     

    int main2() //判断一个年是否为闰年

     //闰年:能被四整除但不能被100整除  或能被400整除

    {

    int m;

    scanf(“%d”,&m);

    if((m%4==0&&m%100 != 0) || m%400==0)

    //if((m%4==0 && !(m%100=0))|| m%400=0)

    printf(“m yes%d”);

    else

    printf(“m no\n”);

    return 0;

    }

     

    int main3() //测试数组的地址

    {

    int a[10];

    printf(“a=%d,&a[0]=%d\n”,a,&a[0]);

    printf(“a=%0x,&a[0]=%0x\n”,a,&a[0]);

    printf(“a=%p,&a[0]=%p\n”,a,&a[0]);

    return 0;

    }

    //由结果可知 a=&a[0] 也就是数组首地址等于数组首个元素的地址

     

    int main4() //怎样从键盘输入一串字符串,给字符串数组赋值

    {

    char a[10];

    scanf(“%s”,&a);   //注意:输入字符串的长度不得大于我们定义字符串数组时的长度

    printf(“%s\n”,a);

    return 0;;

    }

     

    int main5()  //puts()puts(字符数组)  功能是打印字符串,会自动换行

    {

    char str[]={“banzhang’\n’zuishuai”};   //   ‘\n’在这里为转义字符,表换行的意思

    puts(str);  //puts函数输出的字符串可以包含转义字符

    printf(“%s\n”,str);  //%s格式输出字符串时,printf函数中写的是字符数组名(地址)

    //而不是数组元素名(表示值)

    return 0;

    }

     

    int main6() //strcat(): 将两字符串进行合并,合并后会得到一个值,是str1的地址

    {

    char str1[100]={“people\’s repulation of”};  //输出’ 要用转义字符 \’ 

    char str2[]={“China”};

    strcat(str1,str2);   //合并要求str1足够大,否则会溢出

    puts(str1)

    return 0;

    }

     

    int main7() //输出一个以下图形的东西

    /*

      *

     ***

    *****

    */

    {

    int i,j,k;

    for(i=0;i<3;i++)

    {

    for(k=0;k<2-i;k++)

    {

    printf(" ");

    }

    for(j=0;j<2*i+1;j++)

    {

    printf("*");

    }

    printf("\n");

    }

    return 0;

    }

    //小技巧:行i  空格‘ ‘k  *j  先打印空格再打印* 根据他们与i的数学关系作为控制循环范//围的条件

     

    int main8()  //strncpy(str1,str2,n):复制str2的前n个字符到str1

    {

    char str1[100]={“abcdefg”};

    char str2[]={“China”};

    //strcpy(str1,str2);  //这个结果为China 因为把str2全部复制到str1中 也就是str2\0 //也复制进来了

    strncpy(str1,str2,2);

    printf(“%s\n”,str1);   //Chcdefg

    //因为str2的长度大于n的长度 所以str2最后的\0并未复制进来

    puts(abc\0def); //abc

    return 0;

    }

     

    int main9()  //strcmp 比较的是ASCII

    {

    char str1={“China”};

    char str2={“Korean”};

    if(strcmp(str1,str2)>0)

    {

    printf(“1\n”);

    strcpy(str1,str2,5);

    printf(“%s\n”,str1);

    }

    if(strcmp(str1,str2)<0)

    {

    printf(“-1\n”);

    strcpy(str2,str1);

    printf(“%s\n”str2);

    }

    if(strcmp(str1,str2)==0)

    {

    printf(“0\n”);

    }

    return 0;

    }

    //结果为 -1  China  0

    //这里有一个小bug 0 因为上一步将str1复制到str2中 包括\0 所以再往下执行则相等

    //若想改变这种结果 可用switch...case进行尝试 这里不再进行书写

     

    int main10()  //比较字符数组所占的内存和长度

    {

    char a[]={“China”};

    printf(“a=%d”,sizeof(a));  //所占内存为6

    printf(“a=%d”,strlen(a));  //长度为5    //注意 是a     不是a[]

    return 0;

    }

     

    int main11()  //怎样调用函数

    {

    int c;

    int a=1;

    int b=2;

    c=max1(a,b);   //直接调用一个函数的结果,参数里没有&

    return 0;

    }

     

    int max1(int *x,int *y)  //*:后面放的是地址

      //*x:这是一个值 *x=*x+2 改变的是地址上的值

    {

    if(x>y)

    printf(“%d\n”,x);

    if(x<y)

    printf(“%d\n”,y);

    return 0;

    }

     

    int main12()  //调用的函数里面的值改变可以在main中体现

    {

    int a=2,b=4;

    max2(&a,&b);

    printf(“a=%d,b=%d\n”,a,b);

    return 0;

    }

     

     

     

     

    int max2(int *x,int *y)

    {

    //x++;   //main中不会改变

    //y++;

    *x=*x+2;  //用地址在main中才会改变

    *y=*y+2;

    return 0;

    }

     

    int change(int a[5][5])  //因为定义的是数组,所以传进来的也是数组

    {

    int i,j;

    for(i=0;i<5;i++)

    {

    for(j=0;j<5;j++)

    {

    printf("%4d",a[i][j]);

    }

    printf("\n");

    }

    return 0;

    }

    int main13()//main中定义一个二维数组,并且调用一个函数,使其打印出如下图所示

    /*

    0   1   2    3  4

    5   6   7    8  9

    10  11  12  13  14

    15  16  17  18  19

    */

    {

    int a[5][5]={{0}};

    int i,j;

    for(i=0;i<5;i++)

    {

    for(j=0;j<5;j++)

    {

    a[i][j+1]=a[i][j]+1;

    }

    }

    change(a);

    return 0;

    }

    展开全文
  • 供初学者练习和参考使用,...1.利用函数调用判断一个整数是否为素数 #include <stdio.h> int isprimer(int n) { int i,count=0; for(i=2;i<n;i++) { if(n%i!=0) count++; } if(count==n-2) retur...

    供初学者练习和参考使用,代码直接可以运行,这里我就不贴出结果截图了,可以自己运行看看。

    1.利用函数调用判断一个整数是否为素数

    #include <stdio.h>
    int isprimer(int n)
    {
    	int i,count=0;
    	for(i=2;i<n;i++)
    	{
    		if(n%i!=0)
    		count++;
    	}
    	if(count==n-2)
    	return 1;
    	else
    	return 0;
    }
    int main()
    {
    	int x;
    	printf("请输入一个整数:"); 
    	scanf("%d",&x);
    	if(isprimer(x)==1)
    	printf("%d是素数",x);
    	else
    	printf("%d不是素数",x);
    	return 0;
    }
    
    

    2.利用函数调用求分段函数的值

    #include <stdio.h>
    #include<stdio.h>   
    const double x1=0.3, x2=0.8; 
    double f(double);
    int main( )  
    {  
       double x;  
       printf("请输入x的值:");  
       scanf("%lf",&x);
       printf("解得:f(%lf)=%lf\n",x,f(x));  
       return 0;  
    }    
    double f(double x)  
    {  
       double y;
       if(x<x1)
       y=0;
       else if(x>=x1&&x<=x2)
       y=(x-x1)/(x2-x1);
       else
       y=1;
       return y;
    }    
     
    
    

    3.利用函数调用输出星号

    #include <stdio.h>
    void printstars(int m)
    {
    	int j;
    	for(j=1;j<=m;j++)
    	printf("*");
    	printf("\n");
     } 
     int main()
     {
     	int n,i;
     	printf("请输入行数:"); 
     	scanf("%d",&n);
     	for(i=1;i<=n;i++)
    	printstars(2*i-1);
    	return 0;
     }
    
    

    4.求1到20阶乘的和

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

    5.求1000以内所有的完数

    #include <stdio.h>
    int main()
    {
    	int a,b,sum;
    	for(a=1;a<=1000;a++)
    	{
    		sum=0;
    		for(b=1;b<a;b++)
    		{
    			if(a%b==0)
    			sum=sum+b;		
    	    }
    		if(sum==a)
    	    {
    	    	printf("%d,its factors are: ",a);
    	    	for(b=1;b<a;b++)
    	    	{
    	    		if(a%b==0)
    	    	    printf("%d,",b);
    	    	    
    			}
    			printf("\b");
    			printf("\n");
    		}
    	    
    	}
    	
    	return 0;
    }
    
    

    6.求1000以内所有偶数的和

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

    7.求m到n之间的素数

    #include <stdio.h> 
    int main()
    {
    	int m,n,i,x,a;
    	int count;
    	a=0;
    	printf("请输入m的值:");
    	scanf("%d",&m); 
    	printf("请输入n的值:"); 
    	scanf("%d",&n);
    	for(x=m;x<=n;x++)
    	{
    		count=0;
    		for(i=2;i<=x-1;i++)
    		{
    			if(x%i!=0)
    			count++;
    		}
    		if(count==x-2)
    	    {
    	    printf("%d是一个素数 ",x);
    	    a++;
    	    if(a%5==0)
    	    printf("\n");
    		}	
    	}
    	printf("一共有素数%d个\n",a);
    	return 0;
    }
    
    

    8.求二维数组中的鞍点

    #include <stdio.h>
    int main()
    {
    	int a[3][3]={{1,2,3},{4,5,3},{7,8,9}};
    	int i,j,t,m,n,max,min;
    	for(i=0;i<3;i++)
    	{
    		for(j=1;j<3;j++)
    		{
    			max=a[i][0];
    			if(max<a[i][j]);
    			{
    				max=a[i][j];
    				t=j;
    			}
    		}
    		min=a[i][t];
    		for(m=1;m<3;m++)
    		{
    			if(min>a[m][t])
    			{
    				min=a[m][t];
    				n=m;
    			}	
    		}
    		if(max==min&&n==i)
    		printf("有鞍点:a[%d][%d]=%d\n",n,t,a[n][t]);
    		else;
    	}
    	return 0;
     } 
    
    
    展开全文
  • 数组

    2019-10-26 15:54:38
    二维数组:两个下标确定数组的物理存储结构二维数组的定义与初始化数组下标越界访问一维数组:二维数组数组的应用筛法判断素数 数组的定义和初始化 一维数组的定义 定义 基类型(Base Type) 数组长度 在内存中...

    数组的定义和初始化

    一维数组的定义

    1. 定义 基类型(Base Type) 数组长度

    2. 在内存中分配连续的存储空间给数组

    3. 下标从0开始,数组名代表首地址 其他元素的下标表示偏移位置

    4. 定义数组时不可以使用变量定义数组长度,最好使用宏定义

    5. 数组的数据类型–每一元素占内存的字节

      数组的存储类型–内存的动态、静态或寄存器

    一维数组的初始化

    1. 初始化:静态、全局数组初始化为0,否则为随机数

    2. int a[5]={52,74,56,88,90};
      int a[5]={62,74}; //相当于 int a[5]={62,74,0,0,0};
      int a[]={62,74,56,88,90};
      //更为高效的数组初始化
      #include<string.h>
      memset(a,0,sizeof(a));   //假设数组a已经被定义
      

    一维数组的访问

    1. 引用 数组名[下标]
    2. 允许随机快速访问

    一维数组的赋值

    使两个数组值相等

    1. 逐个元素赋值

    2. 循环语句

    3. #include<string.h>
      memcpy(b,a,sizeof(a))   //要求两个数组a,b的长度一致
      

    数组的逻辑存储结构

    一维数组:一个下标确定;二维数组:两个下标确定

    数组的物理存储结构

    存放顺序:按行存放,线性存储

    所以已知每行列数才能读出正确的数组元素

    二维数组的定义与初始化

    int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//定义时第二位长度不可以省略,但第一维可以省略
    int a[][4]={{1,2,3},{4,5},{6}}; //等价于 int a[3][4]={{1,2,3,0},{4,5,0,0},{6,0,0,0}};  缺省赋值为0
    

    数组下标越界访问

    一维数组:

    访问下标过大:缓冲区溢出,可能导致其他变量值的修改,黑客攻击

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J3ljsGHE-1572076450918)(C:\Users\17811\AppData\Roaming\Typora\typora-user-images\1569315600739.png)]

    二维数组

    1. 越界访问

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uhzzgpfc-1572076450923)(C:\Users\17811\AppData\Roaming\Typora\typora-user-images\1569315657648.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EANA7piP-1572076450924)(C:\Users\17811\AppData\Roaming\Typora\typora-user-images\1569315857100.png)]

    数组的应用

    筛法判断素数

    void SiftPrime(int a[], int n)
    {
         int i,j;
         for(i=2; i<=n; i++)
              a[i]=i;
         for(i=2; i<=sqrt(n); i++)
              for(j=i+1; j<=n; j++)
                   if(a[i]!=0 && a[j]!=0 && a[j]%a[i]==0)
                        a[j]=0;     
    }
    void PrintPrime(int a[],int n)
    {
         int i;
         for(i=2; i<=n; i++)
              if(a[i]!=0)
                   printf("%d\t",a[i]);
         printf("\n");
    }
    
    展开全文
  • 用数组来表示前五十个素数 1 两个变量 从3开始个数去除的素数变量 放入的变量;...1.二维数组遍历需要两层循环; 2.1有两层含义 下个再发现什么要放到数组的1里面 数组里面只有个数放在里

    用数组来表示前五十个素数

    1 两个变量 从3开始一个一个数去除的素数变量
    放入的变量;
    2 核心算法 算法经过数学思考后的简化 只除已前面的素数;
    3 debug理解循环过程;

    calss note 11.15
    0.所有的偶数都不是素数 借此提升运算效率;
    1.判断是否能被已知的且<x的素数整除;
    2.for-each非常适合输出数;
    3.primes[cnt++]=2;
    4.%取余数;

    1.二维数组遍历需要两层循环;
    2.1有两层含义 下一个再发现什么要放到数组的1里面 数组里面只有一个数放在里面;
    3.两个变量一个数组;
    4.if 看下一个数;
    5.int k:数组名

    import java.util.Scanner;
    
    public class Bianli3 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in = new Scanner(System.in);
    		int [] S = new int [50];
    //		将数组改为初始值为2的数组
    		S [0] = 2; 
    		int cnt = 1;
    		BIAO:
    		for (int x=3;cnt<50;x++)
    		{
    			for (int i=0;i<cnt;i++)
    	//		遍历数组
    			{
    				if (x%S[i]==0)
    				{
    					continue BIAO;
    				}
    			}
    			S[cnt++] = x;
    		}
    		for (int k:S)
    		{
    			System.out.print(k+" ");
    		}
    	}
    
    }
    
    
    展开全文
  • 以搜索1000以内的素数为例,判断出来的素数存放于一维数组中。1、一般遍历(双重循环) 采用双重循环,表层循环游标 J 负责遍历2-1000,内层游标K的范围是[2,根号J],在内层游标遍历的过程中,如果 表层循环游标J...
  • 数组的本质就是可以次定义多个类型相同的变量,同时数组中所有的元素在内存中都是顺序存放的。但要记得在C语言中如果定义了如下数组:Char s[100] ;//s[0] – s[99],切记没有s[100]这个元素,而且C语言...
  • ★C语言编程:打印个圆形★C语言编程:输入个字符串,然后逆序输出★求1000以内的水仙花数★C语言编程判断回文数★随机产生 100 之内的整数并赋值给二维数组 a[3][4],并求所有元素和★C语言编程求阶乘和:1!...
  • ★C语言编程:输入个字符串,然后逆序输出★求1000以内的水仙花数★C语言编程判断回文数★随机产生 100 之内的整数并赋值给二维数组 a[3][4],并求所有元素和★C语言编程求阶乘和:1!+2!+3!+ ... + n!★C语言编程...
  • 笔记数组数组变量定义与初始化数组元素赋值遍历for 循环for-each 循环例子判断是否为素数构造素数表二维数组遍历初始化例子tic-tac-toe游戏小测验编程题题目1. 多项式加法(5分)解题代码 数组是种容器(放东西的...
  • 这里有些学长喜欢用二维数组的去处理,新萌在这里用的是三个位数组处理。 #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> using namespace std; int main() {...
  • ★C语言编程:打印个圆形★C语言编程:输入个字符串,然后逆序输出★求1000以内的水仙花数★C语言编程判断回文数★随机产生 100 之内的整数并赋值给二维数组 a[3][4],并求所有元素和★C语言编程求阶乘和:1!...
  • 因此我们可以用数组储存每个素因子的归属,并且用个二vectorvectorvector保存每个数的素因子。 再用个vis[]vis[]vis[]数组记录机器是否打开,就可以完成模拟了,具体看代码。 AC代码: #include<cstdio...
  • 2)判断哪些奇数和偶数相加为质数,标记在二维数组中; 3)为了生成最多的搭配方法,这里用匈牙利算法去解(详细解法见代码备注,备注中详细写了如何用匈牙利算法,若还是不懂的见...
  • HDU 1016 Prime Ring Problem

    2016-07-19 15:56:26
    深度优先搜索,事先写判断是否是素数的函数,然后把每两个数的和判断是否为素数的结果存储到个二维数组中。
  • 实验四

    千次阅读 2010-02-26 06:59:00
    (1)实验内容 求2-100的所有素数,并把结果存放于一维数组a[100]中。其中,a[0]存放素数的个数,a[1],a[2],...存放素数,然后输出结果,要求每行输出5个素数。编程要求:无(2)算法说明先判断是否为素数;是则将i的...
  • 8.2.3 二维数组 8.1.1 初试数组 之前提到过如何计算用户输入的数字的平均数? 之前的做法:每读到个数(!=-1)加到sum里,cnt++,sum/cnt 这样我们不需要记录每个数 如果题目还要求:输出所有大于平均数的数?...
  • 知识空缺

    2019-09-20 17:04:45
    1.三元运算 2.一维数组初始化 3.for的那些事 4.SDU1165---素数判断是从2开始,不是1! 5.HDU1205--字符数组必须用''括起来
  • 素数(只能被1和它本身整除的数)指针 请把 int * 当作一种数据类型,该类型占4个字节,并且只能存放整形变量(4个字节)的第一个字节的“内存地址编号“指针经典案例--两个整数的交换指针和一维数组 一维数组的两个...
  • 每日题4.8.1

    2019-04-14 23:27:17
    两个日期相差两年以上,分别计算,还要判断月份是否为素数,该年是否为闰年,用个二维数组存储平年与闰年每月的天数,最后计算总收益 代码实现: #include <iostream> #include <math.h> using namesp...
  • 二、字符串类问题 字符串删除、字符串长度、字符串计数、字符串字符排序、字符串逆置、字母大小写转换三、数组类问题 一维数组操作、二位数组操作、矩阵的操作四、结构体类问题 学生成绩最大值和最小值、学生成绩...
  • C语言基础习题50例(八)36-40

    千次阅读 多人点赞 2020-06-11 20:48:26
    个3*3矩阵对角线元素之和,先使用双重for循环输入二维数组,再根据判断条件即i和j相等时就将该元素加入求和。在个有序数组中再插入个数,使插入后的数组依然有序,有两种情况:这个数大于最后个数则直接插...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

一维数组判断素数