C语言实验报告(1/4)

C语言实验报告

预处理

编程序并上机调试运行。

预处理 1

定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值(本题是教材第9章习题9.1)。

代码

#include <stdio.h>
#define swap(a,b) t=a;a=b;b=t;

int main(void)
{
    int x,y,t;
    scanf("%d%d",&x,&y);
    swap(x,y);
    printf("%d,%d",x,y);
    
    return 0;
}

预处理 2

设计输出实数的格式,包括:①一行输出一个实数;②一行内输出两个实数;③一行内输出3个实数。实数用“%6.2f”格式输出(本题是教材第9章习题9.6)。

  • 用一个文件print_formar.h包含以上用#define命令定义的格式。在自己的文件(自己命名)中用#include命令将print_format.h文件包含进来。在程序中用scanf函数读入3个实验给f1、f2、f3。然后用上面定义的3种格式分别输出:①f1;②f1、f2;③f1、f2、f3 。

代码——自己写的

print_format.h

#define format1(f1,f2,f3) printf("format1:\n"); printf("%6.2f\n%6.2f\n%6.2f\n",f1,f2,f3);
#define format2(f1,f2,f3) printf("\nformat2:\n"); printf("%6.2f、%6.2f\n%6.2f\n",f1,f2,f2);
#define format3(f1,f2,f3) printf("\nformat3:\n");   printf("%6.2f、%6.2f、%6.2f\n",f1,f2,f3);
#include "print_format.h"
#include <stdio.h>
int main(void)
{
    int i;
    float f1,f2,f3;
    printf("please input three float numbers:");
    scanf("%f%f%f",&f1,&f2,&f3);
    format1(f1,f2,f3);
    format2(f1,f2,f3);
    format3(f1,f2,f3);
    
} 

代码——网上找的

直接抄这个很容易被发现。建议先改一改再收入囊中为己所用.

#include<stdio.h>
#define PR printf
#define NL putchar('\n');
#define PRINT1(a) PR("%6.2f",a);NL
#define PRINT2(a,b) PR("%6.2f",a);PRINT1(b)
#define PRINT3(a,b,c) PR("%6.2f",a);PRINT2(b,c)
int main()
{
    float a,b,c;
    PR("输入a,b,c三个数:\n");
    scanf("%f%f%f",&a,&b,&c);
    PR("一行输出一个:\n");
    PRINT1(a);
    PRINT1(b);
    PRINT1(c);
    PR("一行输出两个:\n");
    PRINT2(a,b);
    PRINT1(c);
    PR("一行输出三个:\n");
    PRINT3(a,b,c);
}

其实这题我感觉怪怪的。即便如此还是觉得自己写得更聪明点,希望事实也是如此。

预处理 3

用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如′a′变成′b′,…,z′ 变成′a′。其他字符不变)。用#define命令来控制是否要译成密码。例如:

  • 编写程序,用条件编译方法来处理题目要求。
  • 开始在程序中用“#define CHANGE 1”,运行程序,应得到密码。
  • 将“#define CHANGE 1”改为“define CHANGE 0”,再运行,应得到原文。

代码——网上找的

#include<stdio.h>
#define LOCK 1                                   //自行修改LOCK的值,若为1则按照加密(将字母变成下一字母)输出,为0则按照原内容输出
int main()
{
    char s1[20];
    int i;
    printf("输入一行字符串:\n");
    gets(s1);
    printf("输出字符串:\n");
    if(LOCK)//根据宏进行判断 ,lock==1 
    {
        for(i=0;i<20;i++)
        if(s1[i]!='\0'){
            if(s1[i]>='a'&&s1[i]<'z'||s1[i]>='A'&&s1[i]<'Z')
            s1[i]++;
            else if(s1[i]=='z'||s1[i]=='Z')
            s1[i]-=25;
        }
    }
    printf("%s",s1);//输出结果 
}

代码——自己写的

#define CHANGE 1

int main(void) 
{
    int i;
    static char str[]="Zchinaz";
    #if CHANGE
        for(i=0;i<strlen(str);i++)
            if(str[i]=='z')
                str[i]='a';
            else if(str[i]=='Z')
                str[i]='A';
            else
                str[i]+=1;
        puts(str);
    #else 
        puts(str);
    #endif

别人写得真好。果然抄作业是对的。

指针

编程序并上机调试运行程序(都要求用指针处理)。

指针 1

输入3个整数,按由小到大的顺序输出,然后将程序改为:输入3个字符串,按由小到大顺序输出(本题是教材第10章习题10.1和10.2)。

代码——自己写的

#include <stdio.h>

void swap(int *p1, int *p2);
int main(void) 
{
    int a,b,c;
    int *p1,*p2,*p3;
    
    printf("please inout three numbers :") ;
    scanf("%d%d%d",&a,&b,&c);
    p1=&a;
    p2=&b;
    p3=&c;
    if(*p1>*p2) swap(p1,p2);
    if(*p1>*p3) swap(p1,p3);
    if(*p2>*p3) swap(p2,p3);    
    printf("%d<%d<%d\n",*p1,*p2,*p3);
}

void swap(int *p1, int *p2)
{   
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;     
}

改为输入字符串:

代码 —— 网上找的

#include <stdio.h>
void CompareInt(int* a, int* b, int* c)
{
    if( *a >= *b && *a >= *c )
    {
        if( *b >= *c )
            printf("%d %d %d", *c, *b, *a);     
        else
            printf("%d %d %d", *b, *c, *a);
    }
    if( *b >= *a && *b >= *c )
    {
        if( *a >= *c )
            printf("%d %d %d", *c, *a, *b);
        else
            printf("%d %d %d",*a, *c, *b);
    }
    if( *c >= *a && *c >= *b )
    {
        if( *a >= *b )
            printf("%d %d %d",*b, *a, *c);
        else
            printf("%d %d %d",*a, *b, *c);
    }
}
int main(void)
{
    int a = 0, b = 0, c = 0;
    printf("please input three number:");
    scanf("%d %d %d",&a, &b, &c);
    CompareInt(&a, &b, &c);
    return 0;
}

改为输入字符串:

指针 2

用指向指针的指针的方法对n个字符串排序并输出。(本题是教材第10章习题10.20)。

结构体和共用体

结构体和共用体 1

有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。(本题是教材第11章习题11.5)

  • 要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。

结构体和共用体 2

建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结眯所包含的年龄等于此年龄,则将此结点删去(本题是教材第11章11.11)。

文件

文件 1

有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中(本题是教材第13章习题13.6)。

  • 设5名学生的学号、姓名和3门课成绩如下:
    99101 Wang 89,98,67.5
    99103 Li 60,80,90
    99106 Fun 75.5,91.5,99
    99110 Ling 100,50,62.5
    99113 Yuan 58,68,71

文件 2

将上题stud文件中的学生数据按平均分进行排序处理,将已排序的学生数据存入一个新文件stu_sort中(本题是教材第13章习题13.7)。

  • 在向文件stu_sort写入数据后,应检查验证stu_sort文件中的内容是否正确。

文件 3

将上题已排序的学生成绩文件进行插入处理。插入一个学生的3门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件(本题是教材第13章习题13.8)。

  • 要插入的学生数据为:
    99108 Xin 90,95,60
    在向新文件stu_new写入数据后,应检查验证stu_new文件中的内容是否正确。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容