c语言问题!!写一个函数int even(int a)功能是判断a的 奇偶性,如果a为偶

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言问题!!写一个函数int even(int a)功能是判断a的 奇偶性,如果a为偶相关的知识,希望对你有一定的参考价值。

c语言问题!!写一个函数int even(int a)功能是判断a的
奇偶性,如果a为偶数返回0,a为奇数返回1。再
编写main函数输入10个整数,通过调用even函
数判断奇偶性,统计奇数和偶数的个数并输出。

#include <stdio.h>

int even(int n)

return n%2;

int main()

int i,n1,n2,x;

for(i=n1=n2=0;i<10;i++)

scanf("%d",&x);

if(even(x))n1++;

else n2++;

printf("其中有%d个奇数,%d个偶数\\n",n1,n2); 

return 0;

参考技术A #include<stdio.h>
#define N 10
int event(int a)

    if(a%2==0)    //模2判断奇偶性
        return 0;
    else
        return 1;

int main()

    int i=0;
    int num;
    int test;
    int counter1=0,counter2=0;
    printf("input number:\\n");
    while(i<N)
    
        scanf("%d",&num);
        test=event(num);
        if(test)
        
            printf("奇数\\n");
            counter1++;
        
        else
        
            printf("偶数\\n");
            counter2++;
        
        i++;
    
    printf("奇数有%d个\\n偶数有%d个",counter1,counter2);
    return 0;

C语言:不能将“int **”类型的值分配到“int”类型实体

写一个函数,首先输入一个数组,用一个指针指向数组,用一个函数将指针传递过去,在函数中找出数组中最大的值,然后返回这个值。

这是一条编译错误提示。
代表在代码中,把一个int**类型的值,赋值给了int类型的变量。
类似于
int v;
int *p = &v;
然后做了
v = &p;
这样的操作。

类似操作,大多数是误写,本来要写
p=&v;
但是写成了
v=&p;
针对修改即可。

如果确定要把int**值赋值给int,可以采用
v=(int)&p;
的方式。
不过需要注意的是,在16位和32位系统中,可以完整保存地址值,但是在64位系统中,int**占8字节,而int占4字节,该操作会导致信息丢失。
参考技术A #include<stdio.h>
#include<stdlib.h>
//void maxnum(int n,int *p[]) //这句要改成下边这个样子。函数返回的应该是数组最大值
int maxnum(int n,int *p)

    int max;
    int i,j,temp;
    max=*p; //我增加的,先保存一下最大值。
    for(i=0;i<n;i++) //修改了一下。
//    for(j=i+1;j<n;j++) //这句要去掉,因为是一维数组,没必要两重循环
    
        if(*(p+i)>max)
        
//            temp=p+i;
//            p+i=p+j;
//            p+j=temp;
            max=*(p+i); //改成这个样子
        

    
    return max;  //我增加的

int main()

    int num[50];
    int i,j,n,*p;
    printf("How many number you will input:");
    scanf("%d",&n);
    //这儿要加上一个判断,如果用户输入100,比你预留的50个空间大怎么办?
    if (i<1||i>50) 
        n=50;
    

    for(i=0;i<n;i++)
        scanf("%d",&num[i]);
//    p=num[0]; //改成下边的样子
    p=num;
//    maxnum(int n,int *p); //去掉
//    printf("%d",num[i]);  //去掉
//    printf("The max number is:%d",num[n-1]; //改成如下样子
    printf("The max number is:%d",maxnum(n,p));

    system("pause");

追问

这个怎么办?还有为什么要让max=*p?还有为什么在主函数中可以直接写p=num,而在maxnum函数就都必须写*号?

追答//上边那段程序在CB下编译没有问题,下边这段程序在gcc上编译没有问题。
//你用的是什么编译器?
//从提示上来看,明显是参数类型不一致,你是完全复制我的程序吗?
#include<stdio.h>
#include<stdlib.h>
//void maxnum(int n,int *p[]) //这句要改成下边这个样子。函数返回的应该是数组最大值
int maxnum(int n,int *p)

    int max;
    int i,j,temp;
    max=*p; //我增加的,先保存一下最大值。
    for(i=0;i<n;i++) //修改了一下。
//    for(j=i+1;j<n;j++) //这句要去掉,因为是一维数组,没必要两重循环
    
        if(*(p+i)>max)
        
//            temp=p+i;
//            p+i=p+j;
//            p+j=temp;
            max=*(p+i); //改成这个样子
        
 
    
    return max;  //我增加的

int main()

    int num[50];
    int i,j,n,*p;
    printf("How many number you will input:");
    scanf("%d",&n);
    //这儿要加上一个判断,如果用户输入100,比你预留的50个空间大怎么办?
    if (n<1||n>50)   //原程序这儿有一个错误 
        n=50;
    
 
    for(i=0;i<n;i++)
        scanf("%d",&num[i]);
//    p=num[0]; //改成下边的样子
    p=num;
//    maxnum(int n,int *p); //去掉
//    printf("%d",num[i]);  //去掉
//    printf("The max number is:%d",num[n-1]; //改成如下样子
    printf("The max number is:%d",maxnum(n,p));
 
    system("pause");

本回答被提问者和网友采纳
参考技术B #include <stdio.h>

int maxnum(int n, int *p)

int i, max = *p;
for (i = 0; i < n; i++)
max = max > *(p+i) ? max : *(p+i);

return max;


int main(int argc, char *argv[])
       
int num[50];
int i, j, n, *p;
printf("how many numbers you will input:");
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &num[i]);
p = num;
printf("The max number is:%d\\n", maxnum(n, p));
//system("pause");

return 0;

参考技术C 错的有点多啊
int maxnum(int n, int*p)

int max, i;
for(i=1, max=p[0];i<n;i++)
if(p[i]>max) max=p[i];
return(max);


void main(void)

...

printf("The max number is:%d", maxnum(n, num);
system("pause");

以上是关于c语言问题!!写一个函数int even(int a)功能是判断a的 奇偶性,如果a为偶的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何在函数中修改数组,并且原数组不改变

用C语言编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用户输入,请问怎么写,非常感谢

c语言 判断奇偶数 简单的代码

c语言中如何像用函数strcpy复制字符串一样复制数字,如复制30。

C语言:不能将“int **”类型的值分配到“int”类型实体

C语言,写一个函数,使输入的字符串逆序