#include<stdio.h>
void main()
{
int a;
/*定义整型变量a*/
char name[1];
/*定义字符数组*/
float b;
/*定义浮点型变量b*/
for(a=0;a<3;a++)
/*顺序输入信息*/
{
switch(a)
{
case 0: printf("请输入学生姓名:"); scanf("%s",&name[a]); break;
/*将字符串储存在数组元素name[0]中*/
case 1: printf("请输入课程名:"); scanf("%s",&name[a]); break;
/*将字符串储存在数组元素name[1]中*/
case 2: printf("请输入分数:"); scanf("%f",&b); break;
/*将分数储存在变量b中*/
}
}
for(a=0;a<3;a++)
/*顺序输出信息*/
{
switch(a)
{
case 0:
printf("姓名:%s\n",name[a]); break;
/*输出姓名*/
case 1:
printf("课程:%s\n",name[a]); break;
/*输出课程名*/
case 2:
printf("分数:%f3.1\n",b); break;
/*输出分数*/
}
}
}
-------------------------编译后的警告:--------------------------------------------
>gcc test.c
test.c: In function ‘main’:
test.c:21: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
test.c:22: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
----------------------------------------------------------------------------------------
很明显你的程序错误在于,想要用来存储字符串但是又没有分配空间(无论是静态的或是动态的)
把char name[1]声明改为: char name[2][30];用二维字符数组存储名字。
改后程序如下:
#include<stdio.h>
void main()
{
int a;
/*定义整型变量a*/
char name[2][30];
/*定义字符数组*/
float b;
/*定义浮点型变量b*/
for(a=0;a<3;a++)
/*顺序输入信息*/
{
switch(a)
{
case 0: printf("请输入学生姓名:"); scanf("%s",name[a]); break;
/*将字符串储存在数组元素name[0]中*/
case 1: printf("请输入课程名:"); scanf("%s",name[a]); break;
/*将字符串储存在数组元素name[1]中*/
case 2: printf("请输入分数:"); scanf("%f",&b); break;
/*将分数储存在变量b中*/
}
}
for(a=0;a<3;a++)
/*顺序输出信息*/
{
switch(a)
{
case 0:
printf("姓名:%s\n",name[a]); break;
/*输出姓名*/
case 1:
printf("课程:%s\n",name[a]); break;
/*输出课程名*/
case 2:
printf("分数:%f3.1\n",b); break;
/*输出分数*/
}
}
}