C语言问题,求解
以下程序是输入两个学生的姓名和工号,然后要求把工号排序输出,请高手指出错在哪里,注解!
#include<stdio.h>
#define N 2
void inpu(){
char name[N][8];
int nanb[8],i;
for(i=0;i<N;i++){
printf("请输入第%d个学生姓名:\n",i+1);
gets(name[i]);
printf("请输入第%d个学生工号:\n",i+1);
scanf("%d",&nanb[i]);
getchar();
}
}
void paixu(){
char name[N][8],temp[8];
int nanb[8],i,k,h,j;
for(i=0;i<N;i++){
for(h=i;h<N;h++){
if(nanb[i]>nanb[h]){
k=nanb[i];
nanb[i]=nanb[h];
nanb[h]=k;
strcpy(temp,name[i]);
strcpy(name[i],name[h]);
strcpy(name[h],temp);
}
}
}
for(j=0;j<N;j++){
printf("第%d个学生姓名:%s",j+1,name[j]);
printf("第%d个学生工号:%d\n",j+1,nanb[j]);
}
}
main(){
char name[N][8];
int nanb[8],i;
inpu(name,nanb);
paixu(name,nanb);
for(i=0;i<N;i++){
printf("第%d个学生姓名:%s",i+1,name[i]);
printf("第%d个学生工号:%d\n",i+1,nanb[i]);
}
}
追问:你那參數傳遞為什麼要用int* nanb,是指針嗎?為什麼用int nanb不行
答案:#include<stdio.h>
#include <string.h>
#define N 2
void inpu(char name[N][8], int* nanb){
int i;
for(i=0;i<N;i++){
printf("请输入第%d个学生姓名:\n",i+1);
gets(name[i]);
printf("请输入第%d个学生工号:\n",i+1);
scanf("%d",&nanb[i]);
getchar();
}
}
void paixu(char name[N][8], int* nanb){
char temp[8];
int i,k,h,j;
for(i=0;i<N;i++){
for(h=i;h<N;h++){
if(nanb[i]>nanb[h]){
k=nanb[i];
nanb[i]=nanb[h];
nanb[h]=k;
strcpy(temp,name[i]);
strcpy(name[i],name[h]);
strcpy(name[h],temp);
}
}
}
for(j=0;j<N;j++){
printf("第%d个学生姓名:%s",j+1,name[j]);
printf(" 第%d个学生工号:%d\n",j+1,nanb[j]);
}
}
main(){
char name[N][8];
int nanb[N], i;
inpu(name,nanb);
paixu(name,nanb);
for(i=0;i<N;i++){
printf("第%d个学生姓名:%s",i+1,name[i]);
printf("第%d个学生工号:%d\n",i+1,nanb[i]);
}
}
////cabs. 要传参到函数里去哦,排序没问题。
.\main.cpp(32) : error C3861: “strcpy”: 找不到标识符
.\main.cpp(33) : error C3861: “strcpy”: 找不到标识符
.\main.cpp(34) : error C3861: “strcpy”: 找不到标识符
.\main.cpp(46) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
.\main.cpp(49) : error C2660: “inpu”: 函数不接受 2 个参数
.\main.cpp(50) : error C2660: “paixu”: 函数不接受 2 个参数
以上为VC错误提示
以下为修改的代码:
#include<stdio.h>
#include <string.h>
#define N 2
char name[N][8];
int nanb[8],i;
void inpu()
{
for(i=0; i<N; i++)
{
printf("请输入第%d个学生姓名:\n",i+1);
gets(name[i]);
printf("请输入第%d个学生工号:\n",i+1);
scanf("%d",&nanb[i]);
getchar();
}
}
void paixu()
{
char temp[8];
int k,h,j;
for(i=0; i<N; i++)
{
for(h=i; h<N; h++)
{
if(nanb[i]>nanb[h])
{
k=nanb[i];
nanb[i]=nanb[h];
nanb[h]=k;
strcpy(temp,name[i]);
strcpy(name[i],name[h]);
strcpy(name[h],temp);
}
}
}
for(j=0; j<N; j++)
{
printf("第%d个学生姓名:%s",j+1,name[j]);
printf("第%d个学生工号:%d\n",j+1,nanb[j]);
}
}
int main()
{
inpu();
paixu();
//以下重复了
/*for(i=0; i<N; i++)
{
printf("第%d个学生姓名:%s",i+1,name[i]);
printf("第%d个学生工号:%d\n",i+1,nanb[i]);
}*/
}
定义为全局变量更简单
上一个:纯C语言的一个程序。
下一个:C语言合并链表的问题