{ }
for(;!(*p>='0'&&*p<='9');p++) value=0;
for(value=0;(*p>='0'&&*p<='9');p++,i++) value=value*10+*p-'0'; if(*p=='.') p++;
for(power=1;(*p>='0'&&*p<='9');p++,i++) {
value=value*10+*p-'0'; power=power*10; }
value=value/power; b[j++]=value;
printf(\数字个数为:%d\\n\
}
void main() {
int j;
float b[4]={0};
char *a=\ f(a,b);
for(j=0;j<4;j++)
printf(\}
实验八 结构体 实验
( 验证性 综合性 实验 2学时)
1、目的要求:
(1)掌握结构体的定义、数据输入方法。 (2)掌握结构体成员变量的两种访问方法。
(3)掌握编写程序完成单链表的建立和查询方法。 (4)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个建立单链表的函数,设链表的表元素信息包含学号、姓名、一门课的成绩;写一个按照学号查学生成绩的函数;最后写一个主函数,它先调用建立函数,再调用查询函数,显示查到学生的姓名和成绩。
#include
int num;
char name[20]; float score; }
stu[4]={{1,\main() {
int i,j,k;
for(k=0;k<4;k++) { }
printf(\请输入学号:(1~4)\\n\
for(j=0;j<4;j++) if(stu[j].num==i)
printf(\}
(2)编一程序,能把从终端输入的一个字符串中的小写字母全部转换成大写字母,要求输入的字符的同时指定该字符在字符串中的序号(即字符在字符串中的顺序号,例如第1个字符的序号为1),字符和序号存入结构体中,字符串存入结构体数组中,然后显示结构体数组的结果(用字符!表示输入字符串的结束)。
#include
char a; int num; } s[10]; main() {
int i=0;
printf(\请输入字母,以!为结束标志\\n\
}
while(1) {
scanf(\ if(s[i].a!='!')
s[i].num=i+1; else
break; if(s[i].a>'Z')
s[i].a=s[i].a-32;
printf(\ i++; }
(3)在本实验的实验内容1的基础上,实现在链表元素index之前插入元素的操作Insert( struct node *head, int index)和删除指定位置元素的操作Delete( struct node * head, int index),并编写主函数测试。
#include
char name[15]; char num[15]; char risk[15];
struct student *next; };
struct student * fun() {
struct student *p,*q,*head; q=head=NULL; char str[15]={'\\0'};
printf(\请依次输入学生的姓名,学号,成绩:(以'0'作为结束标志)\\n\
while(1) {
scanf(\ if(str[0]=='0') break;
p=(struct student *)malloc(sizeof(struct student)); strcpy(p->name,str); scanf(\ scanf(\ if(head==NULL) head=q=p; else {
q->next=p; q=p; } }
q->next=NULL; return head; }
struct student * park(struct student *head) {
int i;
char str[15];
struct student *p,*q;
printf(\你想要删除某个学生的信息吗?是/否(1/0)\\n\scanf(\if(!i)
return head;
printf(\请输入你想要删除的学生姓名\\n\scanf(\
for(p=head,q=NULL;p!=NULL;q=p,p=p->next) if(!strcmp(p->name,str)) break; if(p==NULL) {
printf(\没有你要删除的学生的信息\\n\
return head; } else {