一、知识点
1.字符串的复制、连接...:
(1)字符串的复制:strcpy(str1,str2)
(2)字符串的连接:strcat同上
(3)字符串的比较:strcmp同山
(4)求字符串长度:strlen同上
.字符串和字符指针
2.如果定义一个字符指针接收字符串常量的值,该指针就指向字符串的首字符。这样,字符数组和字符指针都可以用来处理字符串。例如:
Char sa []=”array”;
Char *sp=”point”;
Printf(“%s”,sa);
Printf(“%s”,sp);
Printf(“%s\n”,”string”);
3.结构是C语言中一种新的构造数据类型,它能够把有内在联系的不同类型的数据汇聚成一个整体,使它们相互关联;同时,结构又是一个变量的集合,可以按照对基本数据类型的操作方法单独使用其成员变量。
·结构类型定义的一般形式为:
struct 结构名{
类型名 结构成员名1;
类型名 结构成员名2;
...
类型名 结构成员名3;
};
·关键字struct和它后面的结构名一起组成一个新的数据类型名。结构的定义以分号“;”结束。
二、实验过程中遇到的问题及解决方法
此次作业因为 需要使用不用的 内容,让我遇到了很大的困惑。同时也得到了同学的帮助。虽不能完全独立自主的完成。但是也非常的高兴。
三、实验心得:
这次也是本学期最后一的作业了,希望能够给这学期画上一个圆满的句号。同时在这半年从第一次接触这门课程到今日的能够大部分熟练的运用。多谢了两位老师的帮助和指导。谢谢老师。
![](https://i-blog.csdnimg.cn/blog_migrate/09dec6c9ee0cf7d97b4c45d687cf1b3d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/8a8d189770cd3e1c91180c27024ba47c.jpeg)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int i, len = 0, longest = 0;
char str[5][100];
printf("input 5 strings: \n");
for(i = 0;i < 5;i++) {
scanf("%s", str[i]);
if(len < strlen(str[i])) {
longest = i;
len = strlen(str[i]);
}
}
printf("The longest string is: %s\n", str[longest]);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int i, n;
int counter[128];//ASCII字符一共128个
char str[1000];
for(i = 0; i < 127; i++) {
counter[i] = 0;
}
printf("input a string:\n");
scanf("%s", str);
for(i = 0;i < strlen(str); i++) {
counter[(int)str[i]]++;
}
for(i = 32, n = 0;i < 127; i++, n++) {//3~126之外的是控制字符,不输出
printf("%c %d ", (char)i, counter[i]);
//一行显示4个
if(n % 4 == 0 && n != 0) {
printf("\n");
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
struct students_list{
char name[10];
int chinese,math,english;
char ID[13];
double average;
};
int Count=0;
void new_student(struct students_list students[]);
void search_student(struct students_list students[],char *name);
void print_student(struct students_list students[]);
int main()
{
int choice;
char name[10];
struct students_list students[50];
do{
printf("******学生信息查询******\n");
printf("\t1:输入\n");
printf("\t2:查询\n");
printf("\t3:输出\n");
printf("\t0:退出\n");
printf("请选择功能:");
scanf("%d",&choice);
switch(choice){
case 1:
new_student(students);
break;
case 2:
printf("请输入要查找的学生姓名:");
scanf("%s",name);
search_student(students,name);
break;
case 3:
print_student(students);
break;
case 0:
break;
}
}while(choice!=0);
printf("谢谢使用学生信息查询系统!\n");
return 0;
}
void new_student(struct students_list students[])
{
struct students_list f;
if(Count==50){
printf("信息列表已满!\n");
return;
}
printf("请输入新学生的姓名:");
scanf("%s",f.name);
printf("请输入新学生的语文成绩:");
scanf("%d",&f.chinese);
printf("请输入新学生的数学成绩:");
scanf("%d",&f.math);
printf("请输入新学生的英语成绩:");
scanf("%d",&f.english);
printf("请输入新学生的学号:");
scanf("%s",f.ID);
students[Count]=f;
Count++;
}
void search_student(struct students_list students[],char *name)
{
int i,flag=0;
if(Count==0){
printf("学生信息列表是空的!\n");
return;
}
for(i=0;i<Count;i++)
if(strcmp(name,students[i].name)==0){
flag=1;
break;
}
if(flag){
printf("姓名:%s\t",students[i].name);
printf("语文成绩:%d\t",students[i].chinese);
printf("数学成绩:%d\t",students[i].math);
printf("英语成绩:%d\t",students[i].english);
printf("平均成绩:%.2lf\t",students[i].average=(students[i].chinese+students[i].math+students[i].english)/3.0);
printf("学号:%s\n",students[i].ID);
}
else
printf("无此学生信息!");
}
void print_student(struct students_list students[])
{
printf("学生信息列表的学生信息如下:\n");
int i;
for(i=0;i<Count;i++)
{
printf("%s\t%d\t%d\t%d\t%.2lf\t%s\t\n",students[i].name,students[i].chinese,students[i].math,students[i].english,students[i].average,students[i].ID);
}
}