当前位置:文档之家› C语言编程一维数组的使用

C语言编程一维数组的使用

实验三一维数组的使用【实验目的】1掌握一维数组、二维数组的定义和初始化方法。

2熟悉使用字符数组处理字符串处理的方法。

【实验内容】1.输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数打印出来.编写程序:#include <stdio.h>void readdata (float score[10]){int i;printf("依次输入10个学生的成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);return;}float aver(float score[10]){float sum;int i;for(sum=0,i=0;i<10;i++)sum=sum+score[i];return(sum/10);}void printff(float score[10],float ave){int i;printf("低于平均分的成绩为:\n");for(i=0;i<10;i++)if(score[i]<ave)printf("%8.2f",score[i]);return;}main(){void readdata (float score[10]);float aver(float score[10]);void printff(float score[10],float ave);float ave,score[10];readdata(score);ave=aver(score);printf("average=%6.2f\n",ave);printff(score,ave);}2、将一个数组中的值按逆序重新存放。

例如,原来顺序为8,6,5,4,1。

要求改为1,4,5,6,8。

编写程序:#include <iostream.h>int main(){int i,j,a[5]={8,6,5,4,1},b[5];for(i=0,j=4;i<5,j>=0;i++,j--)b[j]=a[i];for(i=0;i<5;i++)a[i]=b[i];for(i=0;i<5;i++)cout<<a[i]<<"\t";}3、应用一维数组,对10个从键盘输入的数进行冒泡排序,使其按照从大到小的顺序输出。

编写程序:#include <stdio.h>int main(){int a[10];int i = 0,j=0;int max,temp;for(i=0;i<10;++i){printf("Please input the %dth number:",i+1);scanf("%d",&a[i]);}printf("The arry has been input is:\n");for(i=0;i<10;i++){printf("%d,",a[i]);}printf("\n");for(i=0;i<10;i++){max=i;for(j=i;j<10;j++){max= ((a[j]>a[max])?j:max);}temp=a[max];a[max]=a[i];a[i]=temp;}printf("The arry after sort is:\n");for(i=0;i<10;++i){printf("%d,",a[i]);}printf("\n");printf("Plesae input another number:");scanf("%d",&temp);for(i=0;i<10;i++){if(temp>a[i]){break;}}for(j=10;j>=i;--j){a[j]=a[j-1];}a[i]=temp;for(i=0;i<11;i++){printf("%d ",a[i]);}getchar();return 0;}4.编写一程序,从键盘任意输入两个字符串s1和s2,然后比较字符串的大小,若s1>s2,输出1;若s1=s2,输出0;若s1<s2,输出-1;#include <iostream>using namespace std;Int cmp (char *s, char *p);int main(){char m[20],n[20];cin>>m>>n;int i = cmp(m,n);if (i == 0)cout <<"0"<<endl;if (i == 1)cout << "1"<< endl;if (i == -1)cout << "-1" << endl;return 0;}int cmp(char *s, char *p){while (*s&&*p){if (*s>*p)return 1;else if (*s < *p)return -1;else{if (*(s+1) == '\0' && *(p+1) != '\0')return -1;else if (*(s+1) != '\0' && *(p+1) == '\0')return 1;else if (*(s+1) == '\0'&&*(p+1)=='\0')return 0;else{s++,p++;continue;}}}}5.编程序将输入的字符串删去空格输出。

编写程序:#include<iostream.h>void main(){char str[]="You are my friend";int i=0,j;while(str[i]!=NULL){if(str[i]==' '){j=i;while(str[j]!=NULL){str[j]=str[j+1];j++;}}i++;}cout<<str<<endl;}6.求一个4*4矩阵对角线元素之和。

编写程序:#include<stdio.h>main(){int i,j,sum=0,n=0;int a[4][4];printf("输入要计算的矩阵:\n");for(i=0;i<4;i++)for(j=0;j<4;j++){scanf("%d",&a[i][j]);}printf("要计算的矩阵为:\n");for(i=0;i<4;i++)for(j=0;j<4;j++){printf("%d ",a[i][j]);n++;if(n%4==0)printf("\n");}printf("\n");for(i=0;i<4;i++)for(j=0;j<4;j++){if(i==j)sum=sum+a[i][i];}printf("结果是" "%d\n",sum);}7.应用二维数组打印如图所示杨辉三角形。

11 11 2 11 3 3 11 4 6 4 1编写程序:#include<stdio.h>void main(){int i,j;int a[5][5];for(i=0;i<5;i++)a[i][0]=1;for(j=1;j<5;j++)a[0][j]=0;;for(i=1;i<5;i++)for(j=1;j<5;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];;for(i=0;i<5;i++)for(j=0;j<=i;j++){printf("%4d",a[i][j]);if(j==i)printf("\n\n");}}8.找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。

(二维数组也可能没有鞍点)编写程序:#define H 5 有鞍点:#define L 5#include "stdio.h"void main(){int i,j,k;int a[H][L],min[H];int max[H],col=0;int super[H];for(i=0;i<H;i++)for(j=0;j<L;j++)scanf("%d",&a[i][j]);for(i=0;i<H;i++)max[i]=a[i][0];for(i=0;i<H;i++){ 没有鞍点:{ for(j=0;j<L;j++)if(a[i][j]>max[i]){max[i]=a[i][j];col=j;}}super[i]=col;}for(i=0;i<H;i++)for(k=0;k<H;k++){if(max[i]<=a[k][super[i]])min[k]=max[i];elsebreak;}printf("鞍点=%d\n",min[H-1]);}9.有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母、小写字母、数字、空格以及其它字符的个数。

编写程序:#include <stdio.h>#include <string.h>main(){char a[100],b[100],c[100];int l1,l2,l3,d=0,x=0,s=0,k=0,q=0,i;printf("请输入第一行文字\n");gets(a);printf("请输入第二行文字\n");gets(b);printf("请输入第三行文字\n");gets(c);l1=strlen(a);l2=strlen(b);l3=strlen(c);for(i=0;i<l1;i++){ if(a[i]>='a'&&a[i]<='z') x++;if(a[i]>='A'&&a[i]<='Z') d++;if(a[i]>='0'&&a[i]<='9') s++;if(a[i]==' ') k++;}for(i=0;i<l2;i++){ if(b[i]>='a'&&b[i]<='z') x++;if(b[i]>='A'&&b[i]<='Z') d++;if(b[i]>='0'&&b[i]<='9') s++;if(b[i]==' ') k++;}for(i=0;i<l3;i++){ if(c[i]>='a'&&c[i]<='z') x++;if(c[i]>='A'&&c[i]<='Z') d++;if(c[i]>='0'&&c[i]<='9') s++;if(c[i]==' ') k++;}q=l1+l2+l3-x-d-s-k;printf("共有大写字母%d个,小写字母%d个\n,数字%d个,空格%d个,其他字符%d个\n",d,x,s,k,q);}实验收获:1.当一种方法无法继续时,可尝试换用其他方法试试。

相关主题