实验四数组实验课程名:高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:(3)结果分析:当i能被3整除时,就换一次行。
(二)实验任务2(1)程序代码:#include <stdio.h>void main( ){int i,a[5],sum=0;for(i=0;i<=4;i++)scanf("%d",&a[i]);for(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);}(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。
(三)实验任务3(1)程序代码:#include <stdio.h>int main( ){ int i,j,row=0,colum=0,max;int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for (j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);return 0;}(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。
(四)实验任务4(1)程序代码:#include <stdio.h>void main( ){ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&x); /*输入x变量的值*/for ( i=0; i<10; i++ )printf("%4d",a[i]);printf("\n");for(i=0;i<10;i++) /* 循环查找与x相等的元素*/if ( x==a[i] )printf("%d\n",i); /* 输出查找结论,输出下标值*/else printf("Not found %d\n",x);}(2)运行结果:(3)程序分析:通过for循环查找与x相等地元素。
(五)实验任务5(1)程序代码:# include<stdio.h>#define N 11(3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。
(六)实验任务6(1)程序代码:#include<stdio.h>int main(){int a[10];int i,k;printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);k=0;for(i=1;i<10;i++)if(a[k]<a[i])k=i;for(i=k;i<9;i++)a[i]=a[i+1];for(i=0;i<9;i++)printf("%d ",a[i]);printf("\n");}(2)运行结果:(3)程序分析:该程序先将输入的10个数有小到大的顺序列出来,最后输出前9个数。
(七)实验任务7(1)程序代码:#include <stdio.h>void main(){ float x[1000], sum=0.0, ave, a;int n=0, i;printf ("Enter mark : \n");scanf("%f", &a);while (a>=0.0 && n<1000){ sum+=a;x[n]= a ;n++;scanf("%f", &a);}ave= sum/n ;printf ("Output : \n");printf ("ave = %f\n", ave);for (i=0; i<n; i++)if ( x[i]<ave )printf("%f\n", x[i]);}(2)运行结果:(3)程序分析:输入若干个数,以负数为结束标志。
使用while选择语句,求出输入的整数的平均值。
(八)实验任务8(1)程序代码:#include<stdio.h>void main(){int i,j,a[6][6];for(i=0;i<6;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<6;i++){for(j=1;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<6;i++){for(j=0;j<=i;j++)printf("%d ",a[i][j]);printf("\n");}}(2)运行结果:(3)程序分析:这可以看做一个6*6的矩阵,通过使用数组级for循环语句将杨辉三角表示出来。
(九)实验任务9(1)程序代码:#include <stdio.h> #include <string.h>void main(){ char a[10],b[10];int c,d,k,ch;scanf("%s",&a);scanf("%s",&b);printf("a=%s,b=%s\n",a,b);c=strlen(a);d=strlen(b);if(c>d){printf("a=%s\n",b);printf("b=%s\n",a);}else{printf("a=%s\n",a);printf("b=%s\n",b);}}(2)运行结果:(3)程序分析:运行程序的时候先输入country,再输入side,经过程序的运行,实现了将side连接到country的后面形成新的单词countryside,即实现了将第二个字符串连接到第一个字符串的后面从而·形成一个新的字符串的功能。
(十一)实验任务11(1)程序代码:#include "stdio.h"void main (){char str1[100],str2[100];int i,s;printf("\n Input string 1:\n");gets(str1);printf("\n Input string 2:\n");gets(str2);i=0;while((str1[i]==str2[i])&&(str1[i]!=" "))i++;s=str1[i]-str2[i];printf("%d\n",s);0020}(2)运行结果:(3)程序分析:先输入abcdefg,后输入abceef,让后求出两个字符数组中第一个不同元素的ASCII码之差。
(十二)实验任务12(1)程序代码:#include <stdio.h>#include <ctype.h>void main(){int num[26],i;char c;for(i=0;i<26;i++)num[i]=0;while ((c=getchar())!='#') /* 统计从终端输入的大写字母个数*/if (isupper(c)) num[c-65]+=1; //检查ch是否为大写字母//for (i=0;i<26;i++) /* 输出大写字母和该字母的个数*/if (num[i])printf("%c:%d\n",i+65,num[i]);}(2)运行结果:(3)程序分析:(十三)实验任务13(1)程序代码:#include<stdio.h>#include<string.h>void main(){char a[50][100]; //字符数组a[50][100]//int i=0,max=0,k;printf("请输入字符串,每次输入完成后请按一次“Enter”:\n");while(gets(a[i])&&strcmp(a[i],"stop")) //比较两个字符串//{if(strlen(a[i])>max) //统计字符数组中字符的个数//{max=strlen(a[i]);k=i;}i++;}printf("最长的字符串是:\n%s\n",a[k]);}(2)运行结果:(3)程序分析:运用while循环及if条件语句,测出每次输入字符串的长度,并比较他们的大小,最后输出最长的字符串。
(十四)实验任务14(1)程序代码:#include <stdio.h>#include <string.h>void insert(char *p1,char *p2,char pos){int m,n,i;char temp[20];m=strlen(p1);n=strlen(p2);for(i=0;i<n;i++){if(pos==*(p1+i)){strcpy(temp,p1+i+1);*(p1+i+1)='\0';strcat(p1,p2);strcat(p1,temp);puts(p1);break;}}}void main(){char s1[20], s2[20];char pos;printf("Please input s1:");gets(s1);printf("Please input s2:");gets(s2);printf("Please input pos:");pos=getchar();putchar(pos);insert(s1,s2,pos);}(2)运行结果:(3)程序分析:通过使用strcpy函数把str2指向的字符串复制到str1中1去。