2016年计算机程序设计

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 2016年计算机程序设计

一、阅读程序

1.

#include<stdio.h>
int z=1;
void p(int *x,int y){
    ++(*x);
    y=y-1; z=*x+y+z
    printf("%d,%d,%d",*x,y,z);
}
void main(){
    int x=1,y=5,z=9; p(&x,y);
    printf("%d,%d,%d",x,y,z);
}

答案:2,4,7 2,5,9

解析:先运行main函数,x=1,y=5,z=1;

x=1+1=2,y=5-1=4,z=2+4+1=7;所以输出2,4,7

x=1,x=5,x=9,p(&x,y),p()是一个函数,该函数的第一个参数是一个指针,第二个参数是一个数值。y的值和它调用函数p()之前的值还是一个样。

x=2,y=5,z=9

2.

#include<stdio.h>
void main{
    int i,j,row=0,column=0,max;
    int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,5,2}};
    max=a[0][0];
    for(i=1;i<3;i++)
        for(j=0;j<2;j++){
            if a[i][j]>max{
                max=a[i][j]; row=i;column=j;            
            }        
        }
    printf("max=%d,row=%d,column=%d\n",max,row,column);
}

答案:max=10,row=2,column=1

解析:二维数组a[3][4]表示有3行和4列,在该数组中最大的数值是10。

i<3,j<2,row=i,column=j,所以row=2,column=1。

3.

#include<stdio.h>
int main(){
    int i,m=0,n=0,k=0;
    for(i=9;i<=11;i++)
    switch(i/10){
        case 0:m++;n++;
        case 10;n++;break;
        default:k++;n++;    
    }
    printf("%d,%d,%d\n",m,n,k);
    return 0
}

答案:1 4 2

解析:9/10=0,m=0+1=1,k=0+1=1,n=0+1=1;

10/10=1

4.

#include<stdio.h>
int f(int m){
    static int k=2;k++;
    return k+m;
}
void main(){
    int s,x=2;s=f(2);
    printf("%d,%d\n",s,f(s));
}

答案:5.9

解析:s=2时,m=2,k=2+1=3,so s=f(2)=5,f(s)=3+1+5=9

5.

#include<stdio.h>
int main(){
    int a=1,b=0;
    if(a=b){
        b++;    
    }
    else if(a=0){
        b+=2;    
    }else{
        b+=3;    
    }
    printf("%d\n",b);
    return 0;
}

答案:3

二、空白处填写正确语句

选择法对10个浮点数按从小到大排序。

#include<stdio.h>
int main(){
    int i,j,min;
    float temp,a[10];
    printf("enter data:\n");
    for(i=0;i<10,i++){
            scanf("%f",&a[i]);
    }
    for(i=0;i<0;i++){
        min=i;    
    }
    for (j=j+1;j<10;j++){
        if (a[min]>a[j]){
            min=j;        
        }    
    }
    temp=a[min];
    a[min]=a[j];
    a[i]=temp;
    printf("\n the sorted numbers:in");
    for(i=0;i<10;i++)
    printf("%6.2f",a[i]);
    printf("\n");
    return 0;}

三、编程题

1.对输入的两个整数按大小顺序输出。用函数处理,而且用指针类型的数据作函数参数。

#include<stdio.h>
void swap(int *x,int *y){
    int t;
    if(*x<*y){
        t=*x;
        *x=*y;
        *y=t;    
    }
}
void main(){
    int a,b,*p1,*p2;
    scanf("%d&d\n",&a,&b);
    p1=&a;
    p2=&b;
    swap("%d%d\n",a,b);
}

2.在主函数中用gets()输入一个字符串,调用自定义函数replace()将其中所有的her替换成she,最后在主函数中输出结果,若输入的字符串中不包含her,应输出相应的提示。

#include<stdio.h>
#include<string.h>
void replace(char a[]){
    int i;
    for(i=0;i<strlen(a);i++)
    if a[i]='h'&&a[i+1]='e'&&a[i+2]='r';{
        a[i]='s';
        a[i+1]='h';
        a[i+2]='e';    
    }
    else return 1
}
void main(){
    char a[100];b=[100]={0};
    get(a);strcpy(b,a);
    replace(a);
    if(strcpy(a,b)==)
    print("null");
    else{
        printf("%d\n",a);
        return 0;    
    }
}

3.请编写程序完成两个矩阵相乘。要求A是x行y列的矩阵,B是y行z列的矩阵,结果A*B。

#include<stdio.h>
#define row 4
#define col 3
void mat_mub(const int a[4][3],const int b[3][4],int c[3][3]){
    int i,j,k;
    for(i=0;i<3;i++){
        c[i][j]=0;
        for(k=0;k<4;k++){
            c[i][j]=b[i][k]*a[k][j];        
        }    
    }
}}
int main(void)
{
    int i,j;
    int a[clo][cow];
    int b[cow][clo];
    int c[cow][cow];
    mat_mub(a,b,c);
    printf("显示数组C中的元素:\n");
    for(i=0;i<clo;i++)
    {
        for(j=0;j<clo;j++)
        {
            printf("C[%d][%d]=%d\n",i,j,c[i][j]);
        }
    }
    return 0;
}

4.节点结构体定义如下:

Struct NODE{

NODE *link;

int value;}Node;

请编写两个函数Node*create()和int count_nodes(Node *root)。其函数功能分别为创建一个单向链表、统计单向链表的节点个数。

#include<stdio.h>
#include<stdio.h>
#define len sizeof(struct NODE)
struct NODE{
    NODE*link;
    int value;
}Node;
int n;
int main(){
    int num;
    struct NODE Node* Create();
    int Count_nodes(Node *root);
    struct NODE *head;
    struct NODE *p1,*p2;
    n=0;
    p1=p2(struct NODE*)malloc(LEN);
    scanf("%d",&p1->value);
    head=null;
    while(p1->Value!=0){
        n=n+1;
        if(n==1)head=p1;
        else p2->link=p1;
        p2=p1;
        p1=(struct NODE*)malloc(LEN);
        scanf("%d",&p1->Value);    
    }
    p2->link=null;
    return(head);}
    int count_nodes(Node*root){
        int num;
        struct NODE *p;
        p=head;
        num=0;
        if(p!=null)
        do{
            ++num;
            p=p->link;        
        }    while(p!=null
        return(num);
    }

5.请编写一个程序实现图书信息管理的功能

要求:(1)能够插入每个图书的书号、书名、出版日期、出版社和简介;

(2)能够显示每本书的相关信息。

#include<stdio.h>
struct book{
    char num[10];
    char name[10];
    long Date[10];
    char ed[10];
    char in[20];
}book[s];
int main(){
    int i,Char ch[10];
    for(i=0,Char ch[10]){
        print("书名");
        scanf("%s"&book[i].num);
        printf("图书列表");
        printf("书名简介");
        for(i=0;i<5,i++) 
        printf("%s%5s%5d%5s%5s\n",book[i].num,"书","名","简","介");
        return 0;   
    }
}


相关文章
|
11天前
|
数据库 开发者
后端开发的哲学:代码与人生的交织
在数字化的时代,后端开发不仅仅是技术的堆砌,它更像是一场深刻的人生修炼。本文将探讨后端开发中蕴含的哲理,以及这些哲理如何影响我们的职业生涯和人生观。我们将从代码的本质出发,逐步深入到人生的意义,最终理解为何“你必须成为你希望在世界上看到的改变。”
|
5月前
|
存储 数据库 芯片
计算机系统论述与相关概念-思维导图
计算机系统论述与相关概念-思维导图
|
3月前
|
算法 程序员 C语言
【深度揭秘】汇编语言:现代编程中不可或缺的秘密武器!它如何在幕后操控一切?
【8月更文挑战第31天】随着计算机科学的进步,尽管高级编程语言因易读和可维护而流行,汇编语言在特定领域仍不可或缺。本文介绍汇编语言基础及其在现代编程中的应用。汇编语言通过助记符表示机器码,便于编写和理解。例如,在x86架构下,加法指令可表示为 `add eax, ebx`。尽管高级语言提供更高抽象,但在优化性能瓶颈(如矩阵乘法)和嵌入式系统中精确控制硬件方面,汇编语言依然发挥重要作用。例如,通过AVX-2指令集优化矩阵乘法,或在实时系统中实现精确时间延迟。这些示例展示了汇编语言在现代编程中的独特价值。
61 3
|
6月前
|
Python
电学:原理、应用与编程实践
电学:原理、应用与编程实践
|
6月前
|
前端开发 Go Android开发
人机对话:程序设计,学哪种语言好?
人机对话:程序设计,学哪种语言好?
|
6月前
|
算法 Serverless 编译器
什么是计算机程序
计算机程序,简而言之,是一系列指令的集合,这些指令指挥计算机硬件执行特定的操作。这些指令通常是用高级编程语言编写的,然后通过编译器或解释器转换成计算机硬件可以理解的机器语言。计算机程序是计算机系统的核心组成部分,它使得计算机能够执行复杂的任务,如数据分析、图像处理、游戏运行等。
107 0
|
6月前
|
存储 缓存 网络虚拟化
深入理解计算机系统第九章知识点总结
深入理解计算机系统第九章知识点总结
107 0
|
JavaScript 前端开发 Java
编程语言常识
编程语言常识
|
NoSQL 前端开发 测试技术
编程之你不知道的坑,足以致命!
编程之你不知道的坑,足以致命!
98 0
编程之你不知道的坑,足以致命!
|
C语言 Perl
西门子S7-1200有哪几种编程方法?什么是线性化编程、模块化编程、结构化编程?
今天我们来说一说西门子S7-1200有哪几种编程方法,给大家简单介绍一下什么是线性化编程、模块化编程和结构化编程。
西门子S7-1200有哪几种编程方法?什么是线性化编程、模块化编程、结构化编程?