关于c语言的问题,无法运行,

无法运行,该怎么解决,


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct person
{
    char name[20];
    int count;
}
leader[3] = { "Jordan",0,"Kobe",0,"James",0 };
int main()
{
    int i, j;
    char leader_name[20];
    for (i = 1; i <= 10; i++)
    {
        scanf("%s", leader_name);
        for (j = 0; j < 3; j++)
            if (stremp(leader_name, leader[j].name) == 0)
                leader[j].count++;
    }
    for (i = 0; i < 3; i++)
        printf("%5s:%d\n", leader[i].name, leader[i].count);
    system ("pause");
}

比较函数是 strcmp, 不是 stremp

stremp
->
strcmp

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7588228
  • 这篇博客也不错, 你可以看下c语言单链表的创建,头插法,尾插法
  • 除此之外, 这篇博客: 【c语言】冒泡排序,选择排序法详解中的 冒泡算法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 核心思想: 让每一对相邻的邻居比较 ,发现前面的比后面的大的就交换两个的位置 。 关键是每一对相邻的元素作比较 ,比较完每一轮之后,后面的都是有序的

    细节:

    1. 有n个数,就要进行n-1趟比较,第1趟要进行n-1次两两比较,
    2. 第j趟就要进行n-j次比较 。 算法思想: j在移动,j和他右边的数字比较,一旦有符合条件的,就交换位置 。
    3. 外循环 i 不管具体的数组元素, 而是控制循环的趟数!
    #include <stdio.h>//冒泡排序法 
    int main()
    {
    	int a[10] = { 10,9, 8, 7, 6, 5, 4, 3, 2, 1 };
    	int i, j, t;
    	for (i = 0; i < 10; i++)
    	{
    		for (j = 0; j < 10 - i - 1; j++)  //j+1 保证不越界
    		{
    			if (a[j] > a[j + 1])
    			{
    				t = a[j];
    				a[j ] = a[j+1];
    				a[j + 1] = t;    
    			}
    		}
    		
    	}
    		for (i = 0; i < 10; i++)
    		{
    			printf("%d  ", a[i]);
    		}
    }
    
  • 您还可以看一下 CSDN讲师老师的C语言精髓之编译过程视频教程课程中的 计算机的组成部分,栈内存的特点;画出内存图,引入指针的概念小节, 巩固相关知识点