实验四:上机运行使用数组和字符串的程序
实验目的:
会利用数组存储和处理一个数据序列,或者一个二维矩阵列表;会利用一维字符数组存储和处理一个字符串,或者利用二维字符数组存储和处理一组字符串;会阅读和分析本实验所提供的上机程序并得到正确的输出结果;会根据题目要求编写出相应的程序并上机运行。
实验要求:
在做前3章的3个实验时,已经在一个逻辑磁盘(如D盘)上建立了一个文件夹,专门用做C语言课程的实验目录,名称定义为“C语言上机练习”;并且在其中建立了3个工作区文件夹,名称分别为“实验一上机练习”、“实验二上机练习”和“实验三上机练习”。本实验四建立的项目工作区文件夹可命名为“实验四上机练习”。在这个工作区内再按照不同的程序建立相应的项目工程文件夹,如在“实验四上机练习”工作区内建立运行第1个实验程序的控制台项目工程文件夹为“程序1练习”。在项目工程内,再建立和命名程序文件和头文件,通常使程序主文件(即含有main函数的文件)与项目工程具有相同的名称,当然也允许使用不同的名称。
实验内容:
#include<stdio.h>
#define N 10
#define M 4
void main() {
int a[N]={76,83,54,62,40,75,90,92,77,84};
int b[M]={60,76,90,101};
int c[M]={0};
int i,j;
for(i=0; i<N; i++) {
j=0;
while(a[i]>=b[j]) j++;
c[j]++;
}
for(i=0; i<M; i++) printf("%d ",c[i]);
printf("\n");
}
请输入运行结果:
实验程序1的运行结果:
2 2 4 2
#include<stdio.h>
#include<string.h>
void main() {
char a[5][10]={"student","worker","soldier","peasant","cadre"};
char s1[10], s2[10];
int i;
strcpy(s1,a[0]); strcpy(s2,a[0]);
for(i=1; i<5; i++) {
if(strcmp(a[i], s1)>0) strcpy(s1,a[i]);
if(strcmp(a[i], s2)<0) strcpy(s2,a[i]);
}
printf("%s %s\n",s1,s2);
}
请输入运行结果:
实验程序2的运行结果:
worker cadre
有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,试产生出此数列的前20项,并按逆序显示出来。
请输入运行结果:
实验程序3的运行结果:
#include<stdio.h>
void main()
{
int i,a[20];
a[0]=0; a[1]=1;
for(i=2; i<20; i++) a[i]=a[i-1]+a[i-2];
for(i=19; i>=0; i--) printf("%d ",a[i]);
printf("\n");
}
4181 2584 1597 987 610 377 233 144 89 55 34 21 13 8 5 3 2 1 1 0
从键盘上输入一行字符串,假定该字符串的长度不超过50,试统计出该串中每一种十进制数字字符的个数并输出。
请输入运行结果:
实验程序4的运行结果:
#include<stdio.h>
void main()
{
char s[51];
int i,c[10]={0};
printf("输入一行字符串:\n");
gets(s);
for(i=0; s[i]; i++) if(s[i]>='0' && s[i]<='9') c[s[i]-48]++;
for(i=0; i<10; i++) printf("%d:%d\n",i,c[i]);
}
输入一行字符串:
1234342009876345998763
0:2
1:1
2:2
3:4
4:3
5:1
6:2
7:2
8:2
9:3
注:输入的字符串不同,将得到不同的输出结果。