软件技术基础上机作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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];