这就证明你并不苯
相信你一定能做好的
----------------解决方案--------------------------------------------------------
nuciewth 版主,救救急吧!
nuciewth 版主,救救急吧!我还是编不好,
----------------解决方案--------------------------------------------------------
关于文件操作赋值,我已解决
谢谢了!
关于排序按名字输出的问题,还是解决不了?
以下是我便出来的部分程序....
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct motif
{
char name[20];
int number;
} lead[4]={"aa",0,"ag",0,"ac",0,"at",0};
void main()
{
int i=0,j=0,k=0;
char lead_name[20];
for(i=0;i<10;i++)
{
scanf("%s",lead_name);
for(j=0;j<4;j++)
{
if(strcmp(lead_name,lead[j].name)==0) lead[j].number++;
}
}
for(k=0;k<4;k++)
printf("%s:%d\n",lead[k].name,lead[k].number);
}
下一步怎么排序?才能按名字输出
----------------解决方案--------------------------------------------------------
fscanf();
文件操作没学过吗?
----------------解决方案--------------------------------------------------------
对他们拥有的苹果进行由多到少排序,输出时按名字输出
排序是num.
if(data[i].num>data[j].num)
{
info temp;
temp = data[i];
data[i] = data[j] ;
data[j] = temp;
}
....
for(....)
{
printf("%s\n",data[i].name);
}
----------------解决方案--------------------------------------------------------
请看看我写的
#include "stdio.h"#include "string.h"
#define N 5
struct student{
char name[15];
int num;
}stu[N];
main()
{ int i,j,min;
char stuname[15];
for(i=0;i<N;i++)
{
printf("please input the name the %d person",i+1);
scanf("%s",stu[i].name);
scanf("%d",&stu[i].num);
}
for(i=0;i<N;i++)
{
min=stu[i].num;
strcpy(stuname,stu[i].name);
for(j=i;j<N;j++)
{
if(stu[i].num>stu[j].num)
{
stu[i].num=stu[j].num;
stu[j].num=min;
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,stuname);
}
}
}
for(i=0;i<N;i++)
printf("%s\t%d\n",stu[i].name,stu[i].num);
}
这是我刚才写的,初学者,见笑了.
不过我还是满足了条件.
排序的方法我选择的是直接选择排序.
----------------解决方案--------------------------------------------------------
请问nuciewth 版主:
if(data[i].num>data[j].num)
{
info temp;
temp = data[i];
data[i] = data[j] ;
data[j] = temp;
}
您的 “info temp”是什么意思?有错吗?我运行不出来!
还有“temp = data[i]”对temp赋值是data[i]吗? 还是应该data[i].num?
我搞不懂!!!!
----------------解决方案--------------------------------------------------------
我定义的一个结构体info。
做比较时只比较num,但做交换时就要做整体info
----------------解决方案--------------------------------------------------------
程序代码:
#include<stdio.h>
typedef struct info{
char name[20] ;
int num ;
} ;
void simpleSort(info *data,int n)
{
int i , j ;
for( i = 0 ; i < n ; i++ )
{
for( j = i+1 ; j < n ; j++ )
{
if( data[i].num < data[j].num)
{
info temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
void print(info *data,int n)
{
for( int i = 0 ; i < n ; i++ )
{
printf("%s\n",data[i].name);
}
}
int main()
{
int n;
info data[100];
FILE *fp;
fp=fopen("Apple.txt","r");
fscanf(fp,"%d",&n);
for( int i = 0 ; i < n ;i++ )
{
fscanf(fp,"%s%d",data[i].name,&data[i].num);
}
fclose(fp);
simpleSort(data,n) ;
print(data,n);
return 0 ;
}
] typedef struct info{
char name[20] ;
int num ;
} ;
void simpleSort(info *data,int n)
{
int i , j ;
for( i = 0 ; i < n ; i++ )
{
for( j = i+1 ; j < n ; j++ )
{
if( data[i].num < data[j].num)
{
info temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
void print(info *data,int n)
{
for( int i = 0 ; i < n ; i++ )
{
printf("%s\n",data[i].name);
}
}
int main()
{
int n;
info data[100];
FILE *fp;
fp=fopen("Apple.txt","r");
fscanf(fp,"%d",&n);
for( int i = 0 ; i < n ;i++ )
{
fscanf(fp,"%s%d",data[i].name,&data[i].num);
}
fclose(fp);
simpleSort(data,n) ;
print(data,n);
return 0 ;
}
----------------解决方案--------------------------------------------------------
其实,C语言SHI 很EASY。。。。
C语言,,很简单的,,就这位大虾的题目,,就是一维数组。的问题。。。。。。。。。 ----------------解决方案--------------------------------------------------------