1、掌握C语言中一维数组和二维组的定义、初始化、引用和输入输出方法。
2、掌握字符数组的定义、初始化及其元素的引用方法。
3、学会使用字符串处理函数处理字符串
4、学习用数组实现相关的算法(例如排序算法)。
【实验内容】
1、某班有学生有N人(如10人),学生的信息包括学号、姓名和英语、高数和计算机三门课的成绩,统计各学生的总成绩,按总分成绩的由高到低对学生的信息进行排序,输出排序后的学生的信息。
2、从键盘输入一个字符串,编写程序,将删除其中某个指定的字符(从键盘输入),同一字母的大、小写按不同字符处理。
3、文章中有N行(假设3行)文字,每行有80个字符,分别统计大写英文字母、小写英文字母、数字字符、空格字符和其它字符个数。
4、编写程序实现:输入一行字符,统计单词个数(空格分隔)。
5、寻找一个整型二维数组的“鞍点”,所谓“鞍点”就是这样一个元素,该元素在所在行中值是最小,在所在列中值是最大。如果存在,则输出“鞍点”所在的行、列及其“鞍点”得值。
目录
8.1
8.2
8.3
8.4
8.5
#include
#include
#define NUM 4
int main()
{
int i,j;
char name[NUM][10];//姓名
char num[NUM][10];//学号
float score[NUM][3];//三门课成绩
float sum[NUM];//总成绩
float tmp,tmp0,tmp1,tmp2;
char stmp[10];
printf("输入姓名、学号和三门课成绩:\n");
for(i=0;i {printf("请输入第%d个学生的信息:\n",i); scanf(" %s %s %f %f %f",name[i],num[i],&score[i][0],&score[i][1],&score[i][2]); getchar(); sum[i]=score[i][0]+score[i][1]+score[i][2]; } for(i=0;i { for(j=i+1;j { if(sum[i] { tmp0=score[i][0]; score[i][0]=score[j][0]; score[j][0]=tmp0;//交换成绩 tmp1=score[i][1]; score[i][1]=score[j][1]; score[j][1]=tmp1;//交换成绩 tmp2=score[i][2]; score[i][2]=score[j][2]; score[j][2]=tmp2;//交换成绩 tmp=sum[i]; sum[i]=sum[j]; sum[j]=tmp;//交换成绩 strcpy(stmp,name[i]); strcpy(name[i],name[j]); strcpy(name[j],stmp);//交换姓名 strcpy(stmp,num[i]); strcpy(num[i],num[j]); strcpy(num[j],stmp);//交换学号 } } } printf("排序后的学生的信息:\n"); for(i=0;i { printf("%s\t%s\t%f\t%f\t%f\n",name[i],num[i],score[i][0],score[i][1],score[i][2]); } system("pause"); return 0; } #include int main() { int i,j=0; char str[100]; char ch; scanf("%s\n%c",str,&ch); for (i=0;str[i]!='\0';i++) { if(str[i]!=ch) { str[j++]=str[i]; } } str[j]='\0'; printf("%s",str); system("pause"); return 0; } #include int main() { int i,j,k=0,q=0,p=0,o=0,n=0; char a[3][80]; for(i=0;i!=3;i++) { printf("第%d行:\n",i+1); gets(a[i]); } for(i=0;i<3;i++) { for(j=0;a[i][j]!='\0';j++) { if(a[i][j]>='a'&&a[i][j]<='z'){k++;} else if(a[i][j]>='A'&&a[i][j]<='Z'){q++;} else if(a[i][j]>='0'&&a[i][j]<='9'){p++;} else if(a[i][j]==' '){o++;} else{n++;} } } printf("小写字母:%d\n大写字母:%d\n数字:%d\n空格:%d\n其它:%d\n",k,q,p,o,n); system("pause"); return 0; } #include int main() { int i=0,j=0,k=0; char str[50]; gets(str); for(i=0;str[i]!='\0';i++) { if(str[i]==' ') { j=0; } else { if(j==0) { k++; j=1; } } } printf("%d",k); system("pause"); return 0; } //求一个二维数组的鞍点 二维数组可能没有鞍点,如果有,只能有一个 #include #define n 3 #define m 3 int main() { int i,j,max,maxj; //定义 int a[m][n]; printf("请输入一个%d*%d的二维数组:\n",m,n); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); //键盘输入值存入数组元素地址 for(i=0;i { max=a[i][0]; //假设行元素第一个为本行最大值 maxj=0; //行元素最大值的列下标8.2
8.3
8.4
8.5