2018上IEC计算机高级语言(C)作业 第3次作业
一、例程调试(20分)
调试下面2个例程,各位同学调试用自己的学号模3(即除以3取余数)加1序号及该序号乘以2的题。写明调试过程,如错误现象(如给定输入数据,但输出未实现预计功能),编译错误(截小图)提示等,写明调试修改过程(10分); 说明:有可能没有错误提示,但未达到预计功能。题目来源为“ C语言程序设计实验与习题指导(第3版)调试源程序”中error07_1~6;利用Autoflowchart软件查看程序的流程图,将流程图导成word格式,加入必要的文字说明,并说明该程序的功能(10分)
#include <stdio.h>
int main(void)
{
int i, x, n;
int a[10];
printf("输入数组元素的个数:");
scanf("%d", &n);
printf("输入数组%d个元素:", n);
for(i = 0; i < n; i++)
scanf("%d", a[i]);
printf( "输入x:" );
scanf("%d", &x);
for(i = 0; i < n; i++)
if(a[i] != x) break;
if(i != n)
printf( "没有找到与%d相等的元素!\n", x);
else
printf( "和%d相同的数组元素是a[%d] = %d\n", x, i, a[i]);
return 0;
}
二、Pta作业 计算机高级语言(C)_第6次作业_数组1 (20分)
三、Pta作业 计算机高级语言(C)_第6次作业_数组2 (20分)
四、Pta作业 算机高级语言(C)_第6次作业_数组3二维数组+字符数组 (10分)
五、数组知识点自测(每一项均写一个例程,并附测试数据及测试结果) (30分)
5.1读入若干整数,找出最大值,最小值及位于数组的位置;
#include<stdio.h>
int main()
{
int arr[10] = {0};
int i = 0;
int max = 0;
int min = 0;
printf("请输入10个整数:");
for (i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++)
{
scanf("%d",&arr[i]);
}
max = arr[0];
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (max < arr[i])
{
max = arr[i];
}
}
min = arr[0];
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (min > arr[i])
{
min = arr[i];
}
}
printf("max=%d\n", max);
printf("min=%d\n", min);
return 0;
}5.2 读入若干整数,输入要查找的整数X,输出X第一个位置或not found;
#include <stdio.h>
int main(void)
{
int i, n, res, x;
int a[10];
n=10;
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
res = search(a, n, x);
if(res != -1)
printf("index = %d\n", res);
else
printf("Not found\n");
}
return 0;
}
5.3 交换排序(降序);
#include<stdio.h>
#define N 10
int t;
int main()
{
int a[N] = {90,80};
int i,j,k;
for(j = 0;j<=N-1;j++)
{
for(i=0;i<=N-j-1;i++)
{
if(a[i]<=a[i+1])
{
k = a[i];
a[i]=a[i+1];
a[i+1] = k;
t = t+1;
}
}
}
return 0;
5.4 选择排序(升序)
#include<stdio.h>
int main(void)
{
int i,j,t;
int min;
int num[10];
for(i=0;i<10;i++)
{
scanf("%d",&num[i]);
}
for(i=0;i<3;i++)
{
min=i;
for(j=i+1;j<=10;j++)
{
if(num[min]>num[j]){
min=j;
}
}
t=num[i];
num[i]=num[min];
num[min]=t;
}
for(i=0;i<10;i++)
{
printf("%5d",num[i]);
}
return 0;
}
5.5 二维数组编程;读入一个整形二维数组,找出最小值及位置,求各行数据的和 ;
#include<stdio.h>
int main()
{
int m;
int n;
scanf("%d %d",&m,&n);
int arr[m][n];
int a,b;
for(a=0;a<m;a++)
{
for(b=0;b<n;b++)
{
scanf("%d",&arr[a][b]);
}
}
int sum = 0;
for(a=0;a<m;a++)
{
for(b=0;b<n;b++)
{
sum=sum+arr[a][b];
}
printf("%d\n",sum);
sum=0;
}
return 0;
}
5.6 读入一个字符串,直到遇到#为止,将字符中大小字符转为小写,小写字符转为大写。
#include<stdio.h>
int main(void)
{
char arr[30];
int i;
for(i=0;arr[i-1]!='#';i++)
{
scanf("%c",&arr[i]);
}
for(i=0;arr[i]!='#';i++)
{
if(islower(arr[i]))
{
arr[i]=toupper(arr[i]);
}
else
{
arr[i]=tolower(arr[i]);
}
printf("%c",arr[i]);
}
return 0;
}
六、持续改进学习方法、措施落实情况(10分)
上一周学习了结构体,链表,并联系了一个600行的通讯录,但是错误过多,无法运行。原因是对二级指针,getstring,malloc不够熟悉