第一篇:C语言1
一、实验目的
1、掌握一维数组和二维数组的定义、赋值和输入输出方法。
2、掌握与数组有关的算法(特别是排序算法)。
3、掌握字符数组和字符串函数的使用方法。
4、能正确定义数组的指针,熟练使用指针访问数组元素。
5、学会使用字符串的指针和指向字符串的指针变量。
6、学会使用指针数组处理多个字符串数据。
7、了解函数的基本结构
8、理解函数参数传递的机制,理解过程程序设计的思想。
9、理解函数点用的过程。
10、理解函数的嵌套调用和递归调用。
11、了解局部变量和全局变量的作用范围。
二、实验内容
1.编写求出一维数组其中最小的元素的值,以及它所在的下标号。该程序的变量说明和输出语句如下所示,根据所描述的步骤,补充完成该程序。
解:#include “stdio.h” main(){
int j,index,a[10],min;
for(j=1;j<=10;j++)
scanf(“%d”,&a[j]);
for(j=1,min=a[1],index=1;j<=10;i++)
if(min>a[j])
{min=a[j];index=j;}
printf(“MIN=%d,index=%dn”,min,index);}
2.模仿第一题,对一个3行4列的矩阵,求出其中最大的那个元素以及它所在的行号和列号,补充完成下面程序。
#include “stdio.h”
main(){
int i,j,row,colum,a[3][4],max;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);max=a[0][0],row=0,colum=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max {max=a[i][j];row=i;colum=j;} printf(“MAX=%d,row=%d,colum=%dn”,max,row,colum);} 3.有下面的一个矩阵: 编写程序,要求完成以下功能: (1)分别求出该矩阵的主,次对角 线元素之和。 (2)球该矩阵的周边元素之和。(3)求该矩阵主对角线及其下方元 素之和。 解:#include “stdio.h” main(){ int i,j,sum1=0,sum2=0,sum3=0,sum4=0;int a[4][4]={{10,-1,9,8},{11,14,7,2},{3,4,6,19},{4,2,7,13}};for(i=0;i<4;i++) for(j=0;j<4;j++) {if(i==j) sum1+=a[i][j]; if(i+j==3) sum2+=a[i][j]; if(i==0||j==0||i==3||j==3) sum3+=a[i][j]; if(i>=j) sum4+=a[i][j]; } printf(“sum1=%d,sum2=%d,sum3=%d,sum4=%dn”,sum1,sum2,sum3,sum4);} } while(s2[j]!=' ')s1[i++]=s2[j++];s1[i]=' '; printf(“Thenewstringis:%s”,s1); 5.输入10个数据,按冒泡法从小到大排序并显示排序结果。然后输入一个数,插入其中,要求插入后仍然有序,请编写此程序。提示:(1)输入的十个数据是什么? (2)排序后的结果是什么? (3)输入的,要插入的数是什么? (4)输入后的结果是什么? 思考:本题利用选择排序法如何完成? 提示:参考下面利用选择实现对10个数证书排序的过程。 #include “stdio.h” main(){ 4.程序功能为连接两个字符串S1和 int i,j,input,temp,a[11];S2,按要求完成程序。 printf(“nenter data:n”);(不能使用strcat函数实现程序功 for(i=1;i<=10;i++)能,阅读程序并填空) { include “stdio.h” printf(“a[%d]=”,i);#include “string.h” scanf(“%d”,&a[i]);main()} { printf(“n”);char s1[80],s2[20]; for(i=1;i<=10;i++)int i=0,j=0;printf(“%5d”,a[i]);printf(“nInputstring1:”);printf(“n”);scanf(“%s”,s1);for(i=1;i<=9;i++)printf(“nInputstring2:”);for(j=1;j<=10+1-i;j++)scanf(“%s”,s2);if(a[j]