计算机科学-第9周 数组、结构体、指针综合练习 题目及参考解答

简介: 《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597发现第9周的题目及参考没有公布,补上。1、阅读程序阅读下面的程序,写出运行结果,上机时运行程序,记录结果,从而能够理解指针的用法(1)#include<stdio.h>int main(){ char a[]="Hello Wo

《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597


发现第9周的题目及参考没有公布,补上。

1、阅读程序
阅读下面的程序,写出运行结果,上机时运行程序,记录结果,从而能够理解指针的用法
(1)

#include<stdio.h>
int main(){
    char a[]="Hello World",*p;
    int i;
    i=8;
    p=a+i;
    printf("%s\n",p-2);
    return 0;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

(2)

#include<stdio.h>
int main(){
    char *s="12134211";
    int v[4]= {0,0,0,0},k,i;
    for(k=0; s[k]!='\0'; k++){
        switch(s[k])
        {
        case '1':
            i=0;
            break;
        case '2':
            i=1;
            break;
        case '3':
            i=2;
            break;
        case '4':
            i=3;
            break;
        }
        v[i]++;
    }
    for(k=0; k<4; k++)
        printf("%d ",v[k]);
    return 0;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

(3)

#include<stdio.h>
int main(){
    char c;
    c=getchar();
    while(c!='?'){
        putchar(c);
        c=getchar();
    }
    return 0;
}
如果从键盘输入abcde?fgh(回车)
你认为运行结果为:_________________
实际运行的结果为:_________________

(4)

#include<stdio.h>
int main(){
    int i,a[10];
    for(i=9; i>=0; i--)
        a[i]=10-i;
    printf("%d%d%d",a[2],a[5],a[8]);
    return 0;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

(5)

#include<stdio.h>
int main(){
    int i,k,a[10],p[3];
    k=5;
    for(i=0; i<10; i++)
        a[i]=i;
    for(i=0; i<3; i++)
        p[i]=a[i*(i+1)];
    for(i=0; i<3; i++)
        k+=p[i]*2;
    printf("%d\n",k);
    return 0;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

(6)

#include <stdio.h>
struct abc
{
    int a,b,c;
};
int main(){
   struct abc s[2]={{1,2,3},{4,5,6}};
   int t;
   t=s[0].a+s[1].b;
   printf("%d \n",t);
   return 0;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

2、程序设计
#include <stdio.h>
int main()
{
    char s[80];
    int n;
    gets(s);
    //下面写出代码,求输入的字符串s的长度n


    printf("len=%d",n);
    return 0;
}
请完成两个版本的程序:
(1)直接用字符串处理函数str???()处理;
(2)不能使用字符串处理函数,而是逐个“扫描”字符数组中的字符完成统计。

参考解答:
(1)直接用字符串处理函数str???()处理;

#include <string.h>
int main()
{
    char s[80];
    int n;
    gets(s);
    //下面写出代码,求输入的字符串s的长度
    n=strlen(s);
    printf("len=%d",n);
    return 0;
}

(2)不能使用字符串处理函数,而是逐个“扫描”字符数组中的字符完成统计。
#include <stdio.h>
#include <string.h>
int main()
{
    char s[80];
    int n;
    gets(s);
    //下面写出代码,求输入的字符串s的长度
    n=0;
    int i;
    for(i=0;s[i]!='\0';i++)
        n++;
    printf("len=%d",n);
    return 0;
}

3、程序设计
  下面的程序框架将从键盘上输入5名学生的信息,保存到结构体数组中,然后输出两门课都及格了的同学的学号和姓名。请补充完整程序。作为解决方案,在结构体中,用字符数组表示学号和姓名(设学号和姓名中间不出现空格)
#include <stdio.h>
struct Student{
    char num[13];  //12位学号,连同字符串后\0,共13位
    char name[10]; //汉字占2字节,中文名不超过4个汉字
    int c;    //C语言课成绩
    int law;  //法律课成绩
};
int main( )
{
    struct Student stu[5];//定义结构体数组
    //写出代码,从键盘上将5名学生的信息读入到结构体数组stu中


    //写出代码,输出两门功课都及格了的同学的信息学号、姓名
 
    return 0;
}

参考解答:

#include <stdio.h>
struct Student
{
    char num[13];  //12位学号,连同字符串后\0,共13位
    char name[10]; //汉字占2字节,中文名不超过4个汉字
    int c;    //C语言课成绩
    int law;  //法律课成绩
};
int main( )
{
    int i;
    //定义结构体数组
    struct Student stu[5];
    //写出代码,从键盘上将5名学生的信息读入到结构体数组stu中
    for(i=0; i<5; i++)
    {
        scanf("%s%s%d%d",stu[i].num,stu[i].name,&stu[i].c,&stu[i].law);
    }
    //写出代码,输出两门功课都及格了的同学的信息学号、姓名
    for(i=0; i<5; i++)
    {
        if(stu[i].c>=60 && stu[i].law>=60)
            printf("%s%s\n",stu[i].num,stu[i].name);
    }
    return 0;
}





目录
相关文章
|
2月前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
46 3
|
2月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
219 13
|
2月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
2月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
2月前
|
容器
在使用指针数组进行动态内存分配时,如何避免内存泄漏
在使用指针数组进行动态内存分配时,避免内存泄漏的关键在于确保每个分配的内存块都能被正确释放。具体做法包括:1. 分配后立即检查是否成功;2. 使用完成后及时释放内存;3. 避免重复释放同一内存地址;4. 尽量使用智能指针或容器类管理内存。
|
2月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
70 4
|
2月前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
54 2
|
2月前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
43 1
|
3月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
47 0