只有汝丶 发表于 2017-12-18 13:36:13

一个c语言问题,新手

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
      int i,j,k;
      char name = {"周一清","任齐","唐经济","陈有秀","朱成","陈特","周凯","苏英华","徐英","周明成","赵中一","李新","李长表","朱清华","陈中俊"};
      int cj;      
      printf("输入成绩:");
      for(i=0;i<15;i++){
         scanf("%d",&cj); //{67,84,72,54,60,77,92,42,81,90,62,81,91,58,82};      
                }
      //查找
      char find;
                printf("输入查询学生的姓名:"); scanf("%s",&find);
      for(k=0;k<15;k++);{
               if(name==find)
               i=k;
      {         j=i;
            printf("你的成绩是:%d\n",cj);
      }      
                }
      return 0;
}
能看看我的哪里写错了吗,这程序按我的思路是:我先输入了6784 72 54 60 77 92 42 81 90 62 81 91 58 82 这15个成绩,然后我输入要查询:朱成,按理说应该输出成绩是60啊,可是不对啊。
先拜谢了,

BngThea 发表于 2017-12-18 13:52:38

1 成绩录入应该依次写入,而不是全部交给&cj,改为:
scanf("%d",&cj);

2 一个字符变量find如何能存放%s?你可以改为字符指针
char * find

3 scanf输入需要清除流里面的信息

4 最后的判断不能用==判断字符串的相等,用strcmp函数

只有汝丶 发表于 2017-12-18 15:06:11

BngThea 发表于 2017-12-18 13:52
1 成绩录入应该依次写入,而不是全部交给&cj,改为:
scanf("%d",&cj);



我还是不懂你的意思,我改了程序无法运行了, {:9_230:}

BngThea 发表于 2017-12-18 15:24:18

只有汝丶 发表于 2017-12-18 15:06
我还是不懂你的意思,我改了程序无法运行了,

{:10_285:}哪一句不理解
出错未必是件坏事,理解透就好

只有汝丶 发表于 2017-12-18 15:31:14

BngThea 发表于 2017-12-18 15:24
哪一句不理解
出错未必是件坏事,理解透就好

我按你的意思就改成这样了,运行的输入名字就出错了,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
        int i,j;
        char name[] = "'周一清','任齐','唐经济','陈有秀','朱成','陈特','周凯','苏英华','徐英','周明成','赵中一','李新','李长表','朱清华','陈中俊'";
        char cj;
        printf("输入成绩:"); scanf("%d",&cj); //{67,84,72,54,60,77,92,42,81,90,62,81,91,58,82};       
        //查找
        char * find;
                printf("输入查询学生的姓名:"); scanf("%s",&find);
        for(i=0;i<15;i++);{
               if(strcmp(name,find)==0)
        {       
          printf("你的成绩是:%d\n",cj);
        }       
                }
        return 0;
}

BngThea 发表于 2017-12-18 15:40:34

find已经是指针了,scanf中不需要再取地址

只有汝丶 发表于 2017-12-18 16:00:57

BngThea 发表于 2017-12-18 15:40
find已经是指针了,scanf中不需要再取地址

scanf("%s",find); 这样吗?
但是好像没什么用,

BngThea 发表于 2017-12-18 16:21:00

因为你没有声明这是一个字符串,而只是一个字符指针
如果要达到你的目的,就用字符数组
char find = {0};
scanf("%s",find)

只有汝丶 发表于 2017-12-18 16:51:17

BngThea 发表于 2017-12-18 16:21
因为你没有声明这是一个字符串,而只是一个字符指针
如果要达到你的目的,就用字符数组
char find = { ...

谢谢指教了, {:5_106:}

只有汝丶 发表于 2017-12-18 18:02:57

RE: 一个c语言问题,新手

只有汝丶 发表于 2017-12-18 16:51
谢谢指教了,

我百度了很多,也试过了,还是不行,所以再来请教一下,
就是最后查询成绩那,不能返回成绩
应该怎么写呢?{:9_233:}

BngThea 发表于 2017-12-18 21:20:58

只有汝丶 发表于 2017-12-18 18:02
我百度了很多,也试过了,还是不行,所以再来请教一下,
就是最后查询成绩那,不能返回成绩
应该怎么写 ...

cj在录入的时候就要下标索引,我的第一条回复就说了
页: [1]
查看完整版本: 一个c语言问题,新手