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

《计算机科学》课程主页在: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;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值