永发信息网

C语言中strcpy问题,帮帮忙呀……

答案:4  悬赏:80  手机版
解决时间 2021-04-30 15:00
  • 提问者网友:椧運幽默
  • 2021-04-30 04:20

#include "math.h"
#include "stdio.h"
void main()
{
int fd=0;
int numb[6]={0};
char fsd[5][10]={' '};
int i,size,j,k;
printf("请输入要统计的人数:");
scanf("%d",&size);
int Num[size],score[size];
for(i=0;i<size;i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&Num[i]);
printf ("请输入第%d个学生的成绩:",i+1);
scanf("%d",&score[i]);
}
for(i=0;i<(size-1);i++)
{
k=0;
for(j=i+1;j<=(size-1);j++)
{
if(score[i]<score[j])
{
k=score[i];
score[i]=score[j];
score[j]=k;
k=Num[i];
Num[i]=Num[j];
Num[j]=k;
}
}
}
printf("学号 分数\n");
i=0;
while(i<size)
{
printf("%-10d %3d\n",Num[i],score[i]);
i++;
}
i=0;
while(score[i]>=60)i++;
printf("\n不及格的学生有:\n学号 分数\n");
while(i<size)
{
printf("%-10d %3d\n",Num[i],score[i]);
i++;
}
for(i=0;i<size;i++)
{
fd=(score[i]-(score[i]%10))/10;
switch(fd)
{
case 10:


case 9:numb[0]++;strcpy(fsd[0][9],"90~100");break;
case 8:numb[1]++;strcpy(fsd[1][9],"80~89");break;
case 7:numb[2]++;strcpy(fsd[2][9],"70~79");break;
case 6:numb[3]++;strcpy(fsd[3][9],"60~69");break;
default:numb[4]++;


}
}
i=0;
while(i<4)
{
printf("在%s之间的学生占全班的%d%c\n",fsd[i],numb[0]*100/size,37);
i++;
}
printf("不及格的学生占全班的%d%c\n",numb[4]*100/size,37);
}

黑体部分在编译时提示:

--------------------配置: mingw2.95 - CUI Debug, 编译器类型: MinGW (Old)--------------------

检查文件依赖性...
正在编译 D:\Backup\我的文档\C-Free\Projects\123\未命名1.cpp...
[Error] D:\Backup\我的文档\C-Free\Projects\123\未命名1.cpp:56: passing `char' to argument 1 of `strcpy(char *, const char *)' lacks a cast
[Error] D:\Backup\我的文档\C-Free\Projects\123\未命名1.cpp:57: passing `char' to argument 1 of `strcpy(char *, const char *)' lacks a cast
[Error] D:\Backup\我的文档\C-Free\Projects\123\未命名1.cpp:58: passing `char' to argument 1 of `strcpy(char *, const char *)' lacks a cast
[Error] D:\Backup\我的文档\C-Free\Projects\123\未命名1.cpp:59: passing `char' to argument 1 of `strcpy(char *, const char *)' lacks a cast

构建中止 未命名1: 4 个错误, 0 个警告

这是怎么回事????????

最佳答案
  • 五星知识达人网友:像个废品
  • 2021-04-30 04:33

strcpy(fsd[0][9],"90~100"); ===> strcpy(fsd[0],"90~100");



编译器提示很清楚了....

全部回答
  • 1楼网友:鸠书
  • 2021-04-30 06:52

第二个问题 :C语言中“%”怎么输出?

都没人回答,我来补充好了

当想输出一个%时,你要写%%两个就可以输出一个%了 ,比如:printf("%d%%\n",5);那么屏幕上就显示5%

  • 2楼网友:我住北渡口
  • 2021-04-30 06:25

strcpy参数类型错误, 第一个参数fsd[][]依据定义是char类型, 而strcpy的第一个参数应该是char *, 可改为

strcpy(fsd[0],"90-100");

或者strcpy( &(fsd[0][0]), "90-100" );

其它依次更改fsd[1], fsd[2], ....

  • 3楼网友:玩世
  • 2021-04-30 05:57

case 9:numb[0]++;strcpy(fsd[0][9],"90~100");break; case 8:numb[1]++;strcpy(fsd[1][9],"80~89");break; case 7:numb[2]++;strcpy(fsd[2][9],"70~79");break; case 6:numb[3]++;strcpy(fsd[3][9],"60~69");break;

改 strcpy(fsd[0],"90-100")成这样才可以,FSD[0]就是第0行的首地址,strcpy要用地址的,其他几个都这样改

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯