C语言中if函数中的问题

#include
int main()
{
int num[2][6]={{0,0,0,0,0,0},{0,0,0,0,0,0}};
int i=0,j=0,m,n,p,z;
printf("Please type 1 for first class,Please type 2 for economy\n");
{
for(p=1;p<=10;p++)
{

scanf("%d",&z);
if(z==1&&num[0][4]!=1)
num[0][i]=1,
i++,
printf("头等舱%d,%d\n",1,i);
else if(z==2&&num[1][4]!=1)
num[1][j]=1,
j++,
printf("经济舱%d,%d\n",2,j);
else if(z==1&&num[0][4]==1)
{
printf("Can you change to the economy?\n");
scanf("%d",&m);
{
if(m==8)
{
num[1][p-5]=1,
j++,
printf("经济舱%d,%d\n",2,p-5);
}
else
printf("The next flight start in 3 hours later\n"),p=p-1;
}

    }
                        else if(z==2&&num[1][4]==1)
    {
                    printf("Can you change to the first class\n");
                    scanf("%d",&n);
            {
                            if(n==9)
                {
                    num[0][p-5]=1,
                i++,
                printf("头等舱%d,%d\n",1,p-5);
                }
                        else 
                            printf("The next flight start in 3 hours later\n"),p=p-1;}

}

else
printf("Error\n"),p=p-1;
}
}
printf("All tickets are sold!\n");
return 0;
}

就是这样一个程序,目的是选票,当输入1的时候自动给出头等舱以及位置序号,当输入2的时候给出经济舱以及位置序号。当然已被选择的不能再次被选择。
问题:

加入头等舱满了,会再次有一个if函数出来询问你是否可以换到经济舱,然而我定义

if(m=='y')

这个语句的时候会直接输出下面的else.....所以我不得不用数字来表示是否,比如输入8就代表可以,具体长这样

用数字时候是这样图片说明

然而当我想用y来表示的时候,就变成这样了(运行时我已经把变量改成char 型,,输入时也是%c了)图片说明

请教如何解决?

4个回答

#include
int main()
{
int select = 0;
int firstCl = 6;
int businessCl = 6;

while (1)
{
    printf("/***************************/\n");
    printf("* Menu:                     *\n");
    printf("* 1: First Class            *\n");
    printf("* 2: Business Class         *\n");
    printf("* 3: Exit                   *\n");
    printf("* Please Select.            *\n");
    printf("/***************************/\n");
    scanf("%d", &select);

    if(select == 3) break;
    if(firstCl == 0 && businessCl == 0) 
    {
            printf("All tickets are sold!\n");
            break;
    }

    else if(firstCl == 0 && select == 1)
    {
            printf("Please input 2 change to the Business Class or Exit!\n");
            continue;
    }   
    else if(businessCl == 0 && select == 2)
    {
            printf("Please input 1 buy the First Class or Exit!\n");
            continue;
    }   

    switch(select)
    {
        case 1:             
                printf("First Class:%d\n", firstCl);
                firstCl--;
            break; 
        case 2:
                printf("Bbusiness Class:%d\n", businessCl);
                businessCl--;
                break; 
        default:printf("Select Error\n");
    }
    printf("The remainder of the First Class ticket is:%d\n", firstCl);
    printf("The remainder of the Bbusiness Class ticket is:%d\n", businessCl);
}

return 0;

}

for (int i=1;i<=100;i++){ if(i%6==0) { printf("%4d" if (条件)后面如果没有大括号跟着 最好加上大括号 如果要在IF条件下执行I++则要把所有IF下的语句用大括号放在一起|||if 语句假如没有花括号 那下一条语句就是它的成分 假如有花括号 那括号里面就是它的执行语句 for (int i=1;i<=100;i......
答案就在这里: C语言中关于IF的问题..
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

看晕了,没看明白你的问题。用8代表y太不直观,给用户使用很不方便。为什么不用y? 没看明白你的原因。

Catoaim
Catoaim 是这样,就是那两张图,在头等舱选择完后,再次键入1的话应该出现“Can you change to the eneocmy”这句话,但是如果我想要用Y来表示同意的话,就会如二图.....输出这句话后把else的那个The next flight is 3 hours later 也输出了,当然按Y的话也可以实现把作为换到经济舱,就是不知道为什么会输出那个else上的内容,明明还没有键入任何东西。
4 年多之前 回复
Catoaim
Catoaim 是这样,就是那两张图,在头等舱选择完后,再次键入1的话应该出现“Can you change to the eneocmy”这句话,但是如果我想要用Y来表示同意的话,就会如二图.....输出这句话后把else的那个The next flight is 3 hours later 也输出了,当然按Y的话也可以实现把作为换到经济舱,就是不知道为什么会输出那个else上的内容,明明还没有键入任何东西。
4 年多之前 回复

if(m=='y')
前把m打印出来看是什么值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言 函数的定义和调用有点问题,求助
#include<stdio.h> typedef int Status; typedef int ElemType; #define Maxsize 20 #define OK 1 #define ERROR 0 typedef struct {ElemType elem[Maxsize]; int top; }SqStack; Status lnitStack(SqStack *S); Status Push(SqStack *S,ElemType e); Status Pop(SqStack *S,ElemType *e); Status GetTop( SqStack S, ElemType *e); int StackEmpty( SqStack S ); Status zhuanhuan(int x, int n); Status lnitStack(SqStack *S) { S->top=-1; } Status Push(SqStack *S,ElemType e) {if(S->top>=Maxsize-1) return ERROR; else{ S->top++; S->elem[S->top]=e; return OK;} } Status Pop(SqStack *S,ElemType *e) { if(S->top==-1) return ERROR; *e=S->elem[S->top]; S->top--; return OK; } Status GetTop( SqStack S, ElemType *e) { if( S.top == S.base ) return ERROR; *e = *( S.top – 1 ); return OK; } int StackEmpty( SqStack S ) { if(S.top == S.base) return 1; else return 0; } Status zhuanhuan(int x, int y) { SqStack S; int e; InitStack(&S); printf("\n\n\t\t未转换的十进制数为:%d\n",x); while(x) { Push(&S,x%n); x=x/y; } printf("\n\t\t转换后的的%d进制数为:",n); while(!StackEmpty(S)) { Pop(&S,&e); printf("%d",e); } printf("\n\n"); return OK; } int main() {SqStack S; int n,e,x,y; printf("------------\n"); printf("--1.初始化栈--\n"); printf("--2.压栈--\n"); printf("--3.弹栈----\n"); printf("--4.取栈顶元素----\n"); printf("--5.判栈空\n"); printf("--6.十进制数转换成N进制数\n"); printf("--7.退出----\n"); while(1) { printf("请选择功能"); scanf("%d",&n); switch(n) { case 1:lnitStack(S);break; case 2:scanf("%d",&e);Push(S,e);break; case 3:Pop(S,e);printf("%d\n",e);break; case 4:GetTop(S,e);printf("%d\n",e);break; case 5:if(StackEmpty(S)) { printf("此为空\n"); } else printf("此不为空\n");break; case 6:printf("请输入要转换的十进制数");scanf("%d",&x); printf("请输入想要的进制数");scanf("%d",&y); zhuanhuan(x,y);break; case 7:break; }
**删除C程序中的注释(请你编写一个函数,将C语言源程序中的注释全部删去。)
请你编写一个函数,将C语言源程序中的注释全部删去。 函数原型 // 删除注释 void Pack(FILE *src, FILE *dst); 说明:参数 src 和 dst 均为文件指针,其中:src 指示原始程序文件,dst 指示整理后得到的文件。 C语言规定:注释以 /* 开始,以 */ 结束。注释可以跨行,不允许嵌套。字符串中的 /* 和 */ 不是注释。 此外C语言还规定:注释相当于一个空白字符。因此,注释被删除后应补入一个空格。 裁判程序 #include <stdio.h> #include <ctype.h> #include <string.h> // 删除注释 void Pack(FILE *src, FILE *dst); int main() { char sname[1024], dname[1024]; FILE *sfile, *dfile; gets(sname); gets(dname); sfile = fopen(sname, "rb"); if (!sfile) { printf("%s 无法打开!\n", sfile); } dfile = fopen(dname, "wb"); if (!dfile) { printf("%s 无法打开!\n", dfile); } if (sfile && dfile) { printf("正在整理..."); Pack(sfile, dfile); puts("整理完成!"); } if (sfile) { fclose(sfile); } if (dfile) { fclose(dfile); } return 0; } /* 你提交的代码将被嵌在这里 */
C语言递归函数C语言递归函数C语言递归函数
``` #include<stdio.h> #include<stdlib.h> //用递归函数来计算N的阶乘 double factorial(int n) { double result; if(n<0) { printf("输入错误\n"); } else if(n==1 ||n==0) { result=1; } else { result=factorial(n-1)*n; //n=5 5-1=4 4*5=20 接下来该怎么算呢 麻烦前辈指点一下! } return result; } int main () { double n ; scanf("%lf",&n); printf("%lf的阶乘=%g\n",n,factorial(n)); printf("%lf的阶乘=%lf\n",n,factorial(n)); return 0; } ```
这是一个关于C语言的if结构和for循环问题
我感觉 for循环就是由if选择结构和顺序结构组成的。比如 ``` for(int i=0;i<10;i++) ``` 这个可以改写成 ``` int i=0; if(i<10) {操作 i++} ``` 把这个封装成一个函数,执行多次就好了。循环结构应该有 但是,为什么说C语言结构三大部分 有循环结构呢?我想,循环结构应该有他自己特别厉害的地方,和顺序结构选择结构完全不同的地方的。就是不清楚不同的地方在哪里。希望大佬们帮忙解疑
C语言 gets函数相关问题
``` #include<stdio.h> #include <stdlib.h> #include<conio.h> #include<String.h> int main() { FILE *fp; char ch; fp=fopen("F:\\啦啦.txt","at+"); /* if((fp=fopen("F:\\啦啦.txt","at+"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } ch=fgetc(fp); while (ch != EOF) { putchar(ch); ch=fgetc(fp); } *///这个过程是进行读数据的测试过程 //接下来进行语法分析 ch = getchar(); //这里回车作为输入结束 FILE *stream = stdin; int stdin_len = strlen(stream->_ptr); stream->_ptr[strlen(stream->_ptr)-2]='\0'; if (stdin_len > 0) { fputs(stream->_ptr-1, fp); //stream->_ptr 后面会带有\n\n 不需要就开空间复制前面的输入字符串 } char en[20]; gets(en); printf("%s",en);//测试gets函数效果 system("pause"); return 0; } ``` 我想测试下gets函数效果,这个函数就是运行的时候 ,等待用户输入,然后我弄了个输出,输出结果很变态![图片说明](https://img-ask.csdn.net/upload/201910/09/1570598808_700634.png) 输出结果 变少了 为什么呢。
C语言中函数调用出错问题的解决方法,主函数中的函数参数问题
最后的主函数中的Locatei(&Q)一直提示参数不够,但我添加了指向pos的整型变量并赋值给i后仍不能成功,我现在不知道是调用错了还是那里的问题,求解答啊! # include<stdio.h> # include<stdlib.h> # include<string.h> #define ERROR 0 #define OK 1 #define RL 200 typedef struct{ char *name[RL]; char *phonenum[RL]; char *add[RL]; int TD_length; }telephoneDirectory; int creat_telephoneDirectory(telephoneDirectory *P, int Length)//创建电话簿 { int i; for (i = 0; i<Length; i++){ P->phonenum[i] = (char *)malloc(20 * sizeof(char)); printf("电话号码%d:", i + 1); scanf("%s", P->phonenum[i]); P->name[i] = (char *)malloc(Length * 20 * sizeof(char)); printf("姓名%d:", i + 1); scanf("%s", P->name[i]); P->add[i] = (char *)malloc(Length * 20 * sizeof(char)); printf("家庭住址%d:", i + 1); scanf("%s", P->add[i]); } P->TD_length = Length; return OK; } /*int Locatei(telephoneDirectory *p,int *pos)//查找操作 { int i; char LC_name[20] = { '\0' }; printf("请输入要查找的人物姓名: "); scanf("%s", LC_name); while (i<=p->TD_length&&p->name[i]! = LC_name);//元素依次比较 Inserti(p); //调用插入算法,将新的用户信息插入到数组中 i++; if(i<=p->TD_length){ //找到 *pos = i; PrintfP(p,p->phonenum[i],p->name[i],p->add[i]); //调用输出算法,输出找到的这组信息 } return OK; }*/ int Inserti(telephoneDirectory *P)//插入操作 { int i, j; char CR_phone[20] = { '\0' }, CR_name[20] = { '\0' }, CR_add[20] = { '\0' }; printf("请输入插入位置:"); scanf("%d", &i); if (i<1 || i>P->TD_length + 1) return ERROR; printf("请输入插入的电话号码:"); scanf("%s", CR_phone); printf("请输入插入的姓名:"); scanf("%s", CR_name); printf("请输入插入的家庭住址:"); scanf("%s", CR_add); P->phonenum[P->TD_length] = (char *)malloc(20 * sizeof(char)); P->name[P->TD_length] = (char *)malloc(20 * sizeof(char)); P->add[P->TD_length] = (char *)malloc(20 * sizeof(char)); if (!P->phonenum[P->TD_length] || !P->name[P->TD_length] || !P->add[P->TD_length]) return ERROR; for (j = P->TD_length; j >= i; j--){ //P->phonenum[j]=P->phonenum[j-1]; //P->name[j]=P->name[j-1]; strcpy(P->phonenum[j], P->phonenum[j - 1]); strcpy(P->name[j], P->name[j - 1]); strcpy(P->add[j], P->add[j - 1]); } strcpy(P->phonenum[i - 1], CR_phone); strcpy(P->name[i - 1], CR_name); strcpy(P->add[i - 1], CR_add); P->TD_length++; return OK; } int Deletei(telephoneDirectory *P)//删除操作 { int i, j; printf("请输入删除位置:"); scanf("%d", &i); if (i<1 || i>P->TD_length) return ERROR; for (j = i; j <= P->TD_length; j++){ P->phonenum[j - 1] = P->phonenum[j]; P->name[j - 1] = P->name[j]; P->add[j - 1] = P->add[j]; } P->TD_length--; return OK; } int Sorti(telephoneDirectory *p)//排序操作 { int i,j; char temp; for(i=0;i<=p->TD_length;i++){ for(j=0;j<=p->TD_length-j-1;j++){ if(p->phonenum[i]>p->phonenum[i+1]){ temp=*p->phonenum[i+1]; p->phonenum[i+1]=p->phonenum[i]; p->phonenum[i]=&temp; /* 按照输入人物的名字排序 if(p->name[i]>p->name[i+1]){ temp=p->name[i+1]; p->name[i+1]=p->name[i]; p->name[i]=temp; */ /* 按照输入人物的家庭住址排序 if(p->add[i]>p->add[i+1]){ temp=p->add[i+1]; p->add[i+1]=p->add[i]; p->add[i]=temp; */ } } } return OK; } int PrintfP(telephoneDirectory *P)//输出 { int i; printf("电话簿目前存储数量为:%d\n", P->TD_length); for (i = 0; i<P->TD_length; i++){ printf("电话号码%d:%s 姓名%d:%s 家庭住址%d:%s\n", i + 1, P->phonenum[i], i + 1, P->name[i], i + 1, P->add[i]); } return OK; } int Locatei(telephoneDirectory *p,int *pos)//查找操作 { int i; char LC_name[20] = { '\0' }; printf("请输入要查找的人物姓名: "); scanf("%s", LC_name); while (i<=p->TD_length&&p->name[i] != LC_name);//元素依次比较 Inserti(p); //调用插入算法,将新的用户信息插入到数组中 i++; if(i<=p->TD_length){ //找到 *pos = i; PrintfP(p); //调用输出算法,输出找到的这组信息 } return OK; } int main() { int length, operation; telephoneDirectory Q; printf("创建电话簿\n\n请输入电话簿用户数量:"); scanf("%d", &length); creat_telephoneDirectory(&Q, length); while (1){ printf("请选择您想对电话簿进行的操作:\n1、locate(查找).\n2、delete(删除).\n3、insert(插入).\n4、sort(排序).\n5、printfP(输出).\n6、end(结束).\n\n"); printf("请选择您要进行的操作:"); scanf("%d", &operation); printf("\n"); if (operation == 6) break; if (operation == 5){ PrintfP(&Q); } if(operation == 4){ Sorti(&Q); } if (operation == 3){ Inserti(&Q); } if(operation == 2){ Deletei(&Q); } if (operation == 1){ Locatei(&Q); } } // free(&Q); return 0; }
C语言 关于pow函数问题
今天有人问我个问题,解方程A^5+B^5+C^5+D^5+E^5=F^5 满足条件0<=A<=B<=C<=D<=E<=F<=75 下面是我的代码: #include<stdio.h> #include<math.h> main() { int a,b,c,d,e,f; for(f=75; f>0; f--) { for(e=1; e<=f; e++) { for(d=1; d<=e; d++) { for(c=1; c<=d; c++) { for(b=1; b<=c; b++) { for(a=1; a<=b; a++) { if(pow(a,5)+pow(b,5)+pow(c,5)+pow(d,5)+pow(e,5)==pow(f,5)) { printf("A=%d,B=%d,C=%d,D=%d,E=%d,F=%d\n",a,b,c,d,e,f); } } } } } } } } 我用的wintc2.0 运行没有问题,但是我把代码给他在codeblocks下运行就没有结果,debug了一下发现没有进if条件。C语言自打出了校门就没用过,有没有大神知道什么原因。
C语言中函数调用参数的问题......
for (ctr = 0; ctr <= numMov; ctr++) { printf("请输入电影的名字\n\n"); scanf_s("%c", namMov); printf("请对该电影进行评分!\n\n"); scanf("%d", &rating); if (rating>fisRating) { strcpy_s(favorite, namMov); -- 程序在此指出错误:函数调用中的参数太少 fisRating = rating; 请问应该怎么解决???
c语言中函数指针作为参数与函数的嵌套
函数指针作为另一函数的参数和函数的嵌套的区别,感觉都是调用,有什么不一样呢?他们都适用在什么情况下!(我是在学非递归遍历二叉树时看到的) Status Visit(TElemType e){ printf("%c\n",e); return OK; } Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e)){ SqStack S; InitStack(S); Push(S,T); SElemType p; while (!StackEmpty(S)){ while(GetTop(S,p)&&p) Push(S,p->lchild); Pop(S,p); if(!StackEmpty(S)){ Pop(S,p); if(!Visit(p->data)) return ERROR; Push(S,p->rchild); }//if }//while return OK; } 这里边Visit是函数指针,而SqStack和InitStack是嵌套,他们都不都是在调用吗?为什么在InOrderTraverse的参数中不再加上SqStack和InitStack呢,或者将参数*Visit去掉直接调用呢?
关于两条升序的链表,合并成一条新的升序链表; if函数底下的tail已经指向了q,为什么while里面的函数让tail->next继续指向q
plist *merge(plist *ah,plist *bh) //合并函数 { plist *head,*tail,*p=ah,*q=bh,*ptemp; if(ah==NULL)return bh; if(bh==NULL)return ah; tail=p; if(p->no>q->no) tail=q; while(NULL!=p&&NULL!=q) { if(p->no<=q->no) { ptemp=p;p=p->next; } else { ptemp=q;q=q->next; } tail->next=ptemp;tail=ptemp; } if(NULL==p) { p=q; } ptemp=p; tail->next=ptemp; return head; }
c语言 调用函数中数组值传递问题
``` #include<stdio.h> #define N 3 typedef struct Student { int num; char name[10]; int score[3]; float aver; }Student; void input(Student stu[]); Student max(Student stu[]); void print(Student stu[]); int main() { Student stu[N]; Student *p=stu; Student q; input(p); q=max(p); /* printf("%d\n",q.score[1]); */ print(q); /*printf("学号%d\n 姓名%s\n 三门成绩%d %d %d\n 平均分%0.2f\n", q.num, q.name, q.score[0], q.score[1], q.score[2], q.aver); */ return 0; } void input(Student stu[]) { int i; for(i=0;i<3;i++) { scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])*1.0/3; } /* printf("%d\n",stu[2].score[1]); */ } Student max(Student stu[]) { int i,m=0; for(i=0;i<N;i++) { if(stu[i].aver>stu[m].aver) m=i; } /*printf("%d\n",stu[m].score[1]); */ return stu[m]; } void print(Student stud) { printf("成绩最高的同学是:\n"); printf("学号%d\n 姓名%s\n 三门成绩%0.2f %0.2f %0.2f\n 平均分%0.2f\n", stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2], stud.aver); } ``` c:\users\初晨陌夜\desktop\s.cpp(24) : error C2664: 'print' : cannot convert parameter 1 from 'struct Student' to 'struct Student []' 求指教
C语言选择法排序函数的实现问题
我在看C语言程序设计是遇到一个问题,用选择法对数组中的5个整数按由小到大排序 #include<stdio.h> int main() { void sort(int array[],int n); int a[5],i; printf("Please input 5 numbers:\n"); for(i=0;i<5;i++) scanf("%d",&a[i]); sort(a,5); printf("the sort array:\n"); for(i=0;i<5;i++) printf("%d\t",a[i]); printf("\n"); return 0; } 这段代码没什么问题,主要是里面这个sort函数 这是书中给定的 void sort(int array[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k];array[k]=array[i];array[i]=t; } } 而我自己写的少了一个变量k,就不能实现这个功能了,不知道为什么 void sort(int array[],int n) { int i,j,t; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) if(array[j]<array[i]) t=array[j]; array[j]=array[i]; array[i]=t; } }
关于c语言中strlen函数使用
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ #include <stdio.h> struct btbucode//定义结构体btbucode { int n; char pn[50]; }; struct btbucode code[]={{11, "cailiao"},{12, "caiji"},{13, "shang"},{14, "jingji"},{15, "jixin"}, {16, "shipin"},{17, "lixueyuan"},{18, "fama"},{19, "waiguoyu"},{20, "yishuchuanmei"}, {95, "gonghui"},{96,"jiaowuchu"},{97,"renshichu"},{98,"kejichu"},{99,"xiaoban"}};//定义结构体数组code并初始化 /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ #include<string.h> int main() {int m,flag=0,i; scanf("%d",&m); for(i=0;i<strlen(code);i++) if(m==code[i].n) {flag=1;printf("%s\n",code[i].pn);break;} if(flag==0) printf("未找到\n"); return 0;} 我用了一个strlen函数来算结构体数组长度 但是出现错误提示 error C2664: 'strlen' : cannot convert parameter 1 from 'struct btbucode [15]' to 'const char *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C语言指向函数的指针的调用
int *d_bubblesort(int a[],int n)//数组长度为n的冒泡降序排序 { int i,j; int temp; for(i=0;i<n;i++) { for(j=n-1;j>i;j--) { if(a[j]>a[j-1]) { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } } } return(a); } void main() { int i; int *p; int a[10]={6,5,4,1,2,3,9,8,7,10}; int (*fun)(int,int); fun=d_bubblesort; p=fun(a,10); for(i=0;i<10;i++) {printf("%d",p);p=p+1;} } 这是一个经过简化的可以选择功能的程序 主函数的意思是先定义函数指针*fun 然后指向排序函数 执行fun所指向的函数(就是排序) 然后排序函数会返回排好序的数组的首地址,最后进行输出 我知道这个算法肯定有错误 但是不知道错在哪里 希望高手能指正.
C语言关于指针的一个编程
Exercise 6-1 已给程序: • statistics.h • my_pointerFun.h 需要完成并提交的程序: • statistics.c • my_pointerFun.c • my_pointerFun.h • main.c • 1. 完成函数my_pointerFun(顾名思义,指针函数),该函数需有两个整型参数(x and y )且没有返回值. 要求完成的功能在my_pointerFun.h有详细描述。注意在文件头需进行正确的函数声明。 2.按照statistics.h 中的要求完成statistics.c文件 3. 写出测试程序main.c以测试你的程序是否正确。 注意: • my_pointerFun部分占成绩的20%,main 部分占%10, statistics 部分占70%。 • 这里考察的是将指针作为函数参数问题。 • my_pointerFun.h #ifndef _POINTERFUN_H #define _POINTERFUN_H /** Set values by pointers * If param x and y point to the same variable, output value 1 + 2 to it, otherwise: * param x pass-by-pointer: output value 1 * param y pass-by-pointer: output value 2 **/ //注意此处的output并不是输出到屏幕上, 而是对函数而言,函数通过形参可以进行输入, 也可以通过形参返回值(输出) void my_pointerFun( double* x, double* y); #endif • statistics.h #ifndef C_STATISTICS_H #define C_STATISTICS_H #include <stddef.h> /** Read doubles from stdin and calculate statistics of them. * Reading terminates after enough values have been read or when reading a value fails. * If no values are read, nothing is returned via min/max. * param count pass-by-pointer: input max amount of values to read, output actual count of values read, cannot be NULL * param min pass-by-pointer: input none, output min value, nothing if NULL * param max pass-by-pointer: input none, output max value, nothing if NULL * param sum pass-by-pointer: input old sum, output updated sum, nothing if NULL * return the last value read successfully (0.0 if no values were read) **/ double statistics(size_t* count, double* min, double* max, double* sum); #endif
C语言中字符数组作为函数返回值时出现的问题
我想请教一个问题,我在C语言中用字符数组作为函数返回值时,会在返回后多出一个0x01对应的字符,下面贴出程序和调试过程: 子函数如下: ```c char *guess_num(int gen_data[], int input_data[], int n) { int i = 0, j = 0, k = 0; static char result[NUM_GUESS]; for(i = 0; i < n; i++) for(j = 0; j < n; j++) if(0 == input_data[i]-gen_data[j]) { if(0 == i-j) result[k++] = 'A'; else result[k++] = 'B'; } if('\0' == result[0]) for(i = 0; i < n; i++) result[i] = '0'; return result; } ``` 测试情况如下: 第一个测试 ![返回前](https://img-ask.csdn.net/upload/201705/08/1494222074_932652.png) ![返回后](https://img-ask.csdn.net/upload/201705/08/1494222104_649849.png) 可以看到,当字符数组的四个元素都被赋值之后,返回前没有问题,但是当主函数接收到返回的字符数组的首地址之后,字符数组后面会多出一个1. 第二个测试 ![返回前](https://img-ask.csdn.net/upload/201705/08/1494221980_315560.png) ![返回后](https://img-ask.csdn.net/upload/201705/08/1494221998_129015.png) 当字符数组元素未全部赋值时,返回没问题 第三个测试 ![返回前](https://img-ask.csdn.net/upload/201705/08/1494222090_919784.png) ![返回后](https://img-ask.csdn.net/upload/201705/08/1494222109_274407.png) 又看到了熟悉的1。。。。。。。 烦请各位能否帮我解答这个问题,谢谢!
c语言不用函数实现strcmp()输入相同字符串时比较不正确
c语言不用函数实现strcmp()输入相同字符串时比较不正确 ``` //strcmp函数 #include<stdio.h> void main() { int i=0,re,m,n; char str1[1000],str2[1000]; printf("请输入字符串str1:"); gets(str1); printf("请输入字符串str2:"); gets(str2); do { i++; if(str1[i]==str2[i]) { re=0; continue; } else if(str1[i]>str2[i]) { re=1; break; } else if(str1[i]<str2[i]) { re=-1; break; } }while(i<1000); printf("%d\n",i); printf("%d\n",re); if(re==1) printf("字符串str1大于字符串str2"); if(re==-1) printf("字符串str1小于字符串str2"); if(re==0) printf("字符串str1等于字符串str2"); } ``` ![图片说明](https://img-ask.csdn.net/upload/201911/10/1573389441_817896.png)
c语言scanf()函数的返回值
c primer plus 一书中,199页的showchar2.c程序中有一行代码是if(scanf(”%d %d",&rows,&cols)!=2),请问这里的scanf函数返回值的是参数的个数吗?
C语言如何判断命令行参数和某一段字符串是否相同,并进入自定函数?
比如以下片段,我在命令行输入 ``` .\xx.exe -e wo.txt ni.txt ``` ``` int main(int argc, char * argv[]) { //printf("%s\n",argv[1]); if (argv[1]=='-e') //如果argv1是 -e 则进入encryption函数 encryption(argv[2],argv[3]); else if (argv[1]=='-d')//如果argv1是 -d 则进入decryption函数 decryption(argv[2],argv[3]); else printf("error"); } ``` 但是我每次运行都自动到else输出error....程序其他片段都验证过没问题,问题出现在这里。。。请问该怎么办(┬_┬)
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
【资源】一个C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔)【内附资源页】
声明: 1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻… 作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候,就被它的美貌给吸引住了… 就在我用了一段时间之后,我坚决的卸载了电脑上其它碍眼的浏览器,并觉得在之前的搬砖生涯中,我不配当哥,我只配是个沙雕… ...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
立即提问