c语言指针训练之抄作业,C语言实验报告(1/4)

C语言实验报告

预处理

编程序并上机调试运行。

预处理 1

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

代码

#include

#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

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

#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

#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]='A'&&s1[i]

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

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

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

}

void swap(int *p1, int *p2)

{

int temp;

temp = *p1;

*p1 = *p2;

*p2 = temp;

}

改为输入字符串:

代码 —— 网上找的

#include

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文件中的内容是否正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值