软件技术基础上机作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《软件技术基础》上机实验报告

实验一:指针和结构体部分

1.从键盘上输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换,并将交换之后的序列打印出来。(提示:用指针实现,参考教材习题10.3)

#include

void swap (int *k1,int *k2);

int main()

{

int num[10],i,*min, *max,min_num=0,max_num=0;

printf("请输入十个整数:");

for (i=0; i<10 ; i++)

scanf("%d",&num[i]);

min = max = &num[0];

printf("原始序列为:\n",num[i]);

for(i=0;i<10;i++)

printf("%2d",num[i]);

printf("\n");

for (i=1; i<10 ; i++)

{if (num[i]<*min) {min = &num[i];min_num = i;}

if (num[i]>*max) {max = &num[i];max_num = i;}}

swap(min,&num[0]);

if (max_num == 0)

{

if (min_num == 9);

else

swap(min,&num[9]);

}

else swap(max,&num[9]);

if (min_num == 9);

printf("交换后的序列为:\n");

for (i=0; i<10 ; i++)

printf("%d ",num[i]);

}

void swap (int *k1,int *k2)

{

int a;

a = *k1;

*k1 = *k2;

*k2 = a;

}

2.要求在主函数输入一串文字,并编写一个函数计算该文字串中的大写字母,小写字母,数字以及其它字符的个数,并在主函数中将文字串和以上计算结果打印出来。参考教材习题10.8

#include

int main()

{

int upper=0,lower=0,num=0,other=0,i=0;

char *p,s[200];

printf("请输入字符串:");

while((s[i]=getchar())!='\n')i++;

p=&s[0];

while(*p!='\n')

{

if (('A' <= *p)&&(*p<= 'Z'))

upper++;

else if (('a' <= *p)&&(*p <= 'z'))

lower++;

else if (('0' <= *p)&&(*p <= '9'))

num++;

else

other++;

p ++;

}

printf("%d个大写字母,%d个小写字母,%d个数字,%d个其它字符

\n",upper,lower,num,other);

return 0;

}

3.已知一个班有10名同学英语考试成绩为{88.5,76, 83.5,

92,96.5,80,62,85.5,74,87.5},平时成绩为{4.0,3.5,4.5,2.0, 3.0,3.5,4.0,2.5,3.5,4.0},主

函数中用C的指针分配函数:malloc()分配两块连续的存储单元存放以上的考试成绩和平时成绩,用一个函数计算该班同学的考试平均成绩和各同学的最终成绩(考试成绩+平时成绩),在主函数中将以上计算结果打印出来。

#include

#include

float count(float *mark,float *weekday);

float mark_0[10] = {88.5,76,83.5,92,96.5,80,62,85.5,74,87.5};

float weekday_0[10] = {4.0,3.5,4.5,2.0,3.0,3.5,4.0,2.5,3.5,4.0};

int main()

{

float *mark = NULL;

float *weekday = NULL;

int i = 0;

if (malloc(sizeof(float) * 20) == NULL) exit(1);

else

{

mark = (float *)malloc(sizeof(float) * 10);

weekday = (float *)malloc(sizeof(float) * 10);

}

mark = mark_0;weekday = weekday_0;

printf("最终成绩是:\n");

for (i = 0 ;i<10;i++)

printf("%6.2f",count(mark++,weekday++));

}

float count(float *mark,float *weekday)

{

return (*mark + *weekday);

}

4.编写一个函数input,输入学生的成绩,包含3个学生的数据即学号(num),姓名(name)和三科成绩score[3]。再编写一个函数print,打印学生的信息。编写一个主函数实现学生成绩的输入和输出。

#include

#include

struct Students

{

int num;

char name[10];

int score[3];

相关文档
最新文档