当前位置:编程学习 > C/C++ >>

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语言合并链表的问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,