郑州轻工业学院
实践报告
实现内容:
OJ1123最佳校友(数组)、OJ1158又是升序(指针)、OJ1180成绩统计(结构)、OJ1203做幻方(文件)
学号:541507020140
学生姓名:王红旭
专业班级:电子信息科学与技术15-01
所在院系:计算机与通信工程学院
指导教师:王秉政
成绩:
实践名称:上机实验课
来源课程:[0404230]C程序设计进阶
实践时间:2016.03-05
实践地点:科学校区实验楼301
报告撰写时间:2016.05.10
1123最佳校友(数组)
1实践目的
为了方便数组的管理和使用,提高程序设计的效率。
2 实践要求
熟练使用数组解决问题。
3 使用的技术、知识点、工具等
C语言程序设计书本教材,数组等。
4 需求分析和功能描述
要求;北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。
现在请你编写程序,找出这个奖项的得主。
若有多个校友并列第一,则均可获奖。
5 系统总体设计
#include<stdio.h>
int main()
{
int a[100]={0};
int i,n,max,k;
while(scanf("%d",&n),n>=0)
a[n]++;
max=a[0];
for(i=1;i<100;i++)
{
if(a[i]>max)
max=a[i];
}
k=0;
for(i=0;i<100;i++)
{
if(a[i]==max)
{
if(k==0)
printf("%d",i);
else
printf(" %d",i);
k++;
}
}
printf("\n");
return 0;
}
1158又是升序(指针)
1 实践目的
指针可以表示复杂的数据结构,能动态分布内存,及方便地址使用字符串,可作为函数间传递的参数,也可以作为函数返回值,为函数之间各类型数据的传递提供简捷便利的方法。
2 实践要求
熟练使用指针
3 使用的技术、知识点、工具等
C语言程序设计书本教材,指针等
4 需求分析和功能描述
将输入的四个整数按由大到小的顺序输出。
已定义如下swap函数,可实现形参pa和pb所指内存单元的内容交换。
请务必使用本函数实现两个变量内容的互换。
void swap( int *pa, int *pb)
{
int t;
t=*pa; *pa=*pb; *pb=t;
}
5 系统总体设计
#include <stdio.h>
#include <stdlib.h>
void swap( int *pa, int *pb);
int main()
{
int a[10];
int i, j, n=4;
for(i=0; i<4; i++)\
scanf("%d", &a[i]);
for(i=0; i<n-1; i++)
for(j=i; j<n; j++)
if(a[i]<a[j])
swap(&a[i], &a[j]);
for(i=0; i<n; i++)
printf("%d%c", a[i], i!=n-1 ? ' ' : '\n');
return 0;
}
void swap( int *pa, int *pb)
{
int t;
t=*pa;
*pa=*pb;
*pb=t;
}
1180成绩统计(结构)
1实践目的
数组在一定情况下不能更好的完成要求,使用结构可以更好的将数据关联起来,更好的解决问题。
2 实践要求
熟练使用结构
3 使用的技术、知识点、工具等
C语言程序设计书本教材,结构等
4 需求分析和功能描述
从键盘输入若干个学生的信息,每个学生信息包括学号、姓名、3门课的成绩,计算每个学生的总分,输出总分最高的学生的信息。
5 系统总体设计
#include<stdio.h>
typedef struct {
char ID[20];
char name[20];
int a;
int b;
int c;
}STUDENT;
//int inputArr
int main()
{
STUDENT stu, first;
int T=0, n=0, i=0;
scanf("%d", &n);
first.a = first.b = first.c = -1;
for(i = 0 ; i < n ; i++)
{
scanf("%s %s %d %d %d", stu.ID, , &stu .a, &stu.b, &stu.c);
if(stu.a + stu.b + stu.c > first.a + first.b + first.c)
first = stu;
}
printf("%s %s %d %d %d\n", first.ID, , first .a, first.b, first.c);
return 0;
}
1203做幻方(文件)
1 实践目的
文件是处理大数据,并可以储存数据,防止数据消失。
2 实践要求
熟练使用文件
3 使用的技术、知识点、工具等
C语言程序设计书本教材,文件等
4 需求分析和功能描述
Apple最近迷上了做幻方,Apple还是个中高手,只要你说个奇数N就能把N*N的幻方做出来。
其实你可以比他做得更好的。
Apple总是画得很乱,而你可以利用程序排得很整齐^_^ 幻方的要求:每一行,每一列,还有两条斜线上数字的和都相等.
5 系统总体设计
#include<stdio.h>
#include<math.h>
#define N 30
int sqr(int m);
int main()
{
int m;
while(scanf("%d", &m), m != 0)
{
sqr(m);
}
return 0;
}
int sqr(int m)
{
int a[N][N] = {0};
int x=0, y=0;
int times, p, q, fmt;
int i, j;
x = m / 2;
y = m - 1;
times = m * m;
for(i = 0 ; i < times ; i++)
{
a[y][x] = i + 1;
p = x;
q = y;
x = x + 1;
if(x == m)
x = 0;
y = y + 1;
if(y == m)
y = 0;
if(a[y][x] != 0)
{
x = p;
y = q - 1;
}
}
fmt = log10(times);
if(fmt == 0)
{
for(i = 0 ; i < m ; i++)
{
for(j = 0 ; j < m - 1 ; j++)
{
printf("%d ", a[i][j]);
}
printf("%d", a[i][m - 1]);
printf("\n");
}
}
else if(fmt == 1)
{
for(i = 0 ; i < m ; i++)
{
for(j = 0 ; j < m - 1 ; j++)
{
printf("%2d ", a[i][j]);
}
printf("%2d", a[i][m - 1]);
printf("\n");
}
}
else if(fmt == 2)
{
for(i = 0 ; i < m ; i++)
{
for(j = 0 ; j < m - 1; j++)
{
printf("%3d ", a[i][j]);
}
printf("%3d", a[i][m - 1]);
printf("\n");
}
}
printf("\n");
return 0;
}。