1.演示复习,引出实验任务
【例】己知一字符数组,数一数数组中大写字母的字符个数。
#include<stdio.h>
#define n 40
int main()
{ char a[n];
int i,b=0;
printf("请输入%d个字符",n);
for(i=0;i<n;i++)
scanf("%c",&a[i]);
for(i=0;i<n;i++)
if(a[i]>='A' && a[i]<='Z')
b++;
printf("数组中大写字母个数为%d\n",b);
return 0;
}
(1)C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。
(2)用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。
(3) for(i=0;i<n;i++)
scanf("%c",&a[i]);
这个语句能不能用其他的语句来执行?
2.布置实验任务
用学号姓名班级在桌面上创建一个文件夹,做好的作业存放在这一个文件夹,所有作业内容完成后以文件夹上交。
【任务 1】请输入一个字符串,并原样输出这个字符串。
【任务2】己知一字符数组,数一数数组中大写字母的字符个数。
#include<stdio.h>
#define n 40
int main()
{
char a[n];
int i,b=0;
printf("请输入%d个字符",n);
for(i=0;i<n;i++)
scanf("%c",&a[i]);
for(i=0;i<n;i++)
if(a[i]>='A' && a[i]<='Z')
b++;
printf( "数组中大写字母个数为%d\n",b);
return 0;
}
【任务3】己知一字符数组,将数组中的大写字母全部转换成小写字母。
#include<stdio.h>
#define n 10
int main()
{
char a[n];
int i;
printf("请输入%d个字符",n);
for(i=0;i<n;i++)
scanf("%c",&a[i]);
for(i=0;i<n;i++)
if(a[i]>='A' && a[i]<='Z')
a[i]=a[i]+32;
for(i=0;i<n;i++)
printf("%c",a[i]);
return 0;
}
【任务4】将ss所指字符串中所有下标为奇数位上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFg",则应输出"aBc4EFg"。
#include<stdio.h>
int main()
{
int i;
char ss[10];
scanf("%s",ss);
for(i=0;ss[i]!='\0';i++)
if(ss[i]>='a' && ss[i]<='z' && i%2==1)
ss[i]=ss[i]-32;
printf("%s\n",ss);
return 0;
}
选作题:
【任务5】输入5个学生的学号和姓名,按学生的姓名由小到大顺序进行排序,学号顺序也随之调整。
#include<stdio.h>
#include<string.h>
int main()
{ int num[5],temp; //此处temp是交换元素的中间量
char name[5][20]; //注意存放姓名要用二级数组,自已思考
char temp2[20]; //此处temp2是交换一维数组的中间量
int i,j,k;
for(i=0;i<5;i++)
{ printf("请输入学号");
scanf("%d",&num[i]);
printf("请输入姓名");
scanf(“%s”,name[i]);
} //注意两处scanf函数输入的区别
//按学号进行排序
printf("\n请按学号进行排序");
for(j=0;j<4;j++) //冒泡排序
for(k=0;k<4-j;k++)
if(num[k]>num[k+1])
{
temp=num[k]; //三段交换学号
num[k]=num[k+1];
num[k+1]=temp;
strcpy(temp2,name[k]); //三段交换姓名
strcpy(name[k],name[k+1]);
strcpy(name[k+1],temp2);
}
// 输出排序后的学号和姓名
for(i=0;i<5;i++)
printf("\n%5d%5s\n",num[i],name[i]);
return 0;
}
731

被折叠的 条评论
为什么被折叠?



