#include<stdioh>
struct stu
{char stuID[20];
char stuName[20];
int stuScore;
};
int main( )
{struct stu scoreArray[5],t;
int i,j;
for(i=0;i<5;i++)
scanf("%s%s%d",scoreArray[i]stuID,scoreArray[i]stuName,
&scoreArray[i]stuScore);
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(scoreArray[j]stuScore<scoreArray[j+1]stuScore)
{t=scoreArray[j];
scoreArray[j]=scoreArray[j+1];
scoreArray[j+1]=t;
}
for(i=0;i<5;i++)
printf("%s\t%s\t%d\n",scoreArray[i]stuID,scoreArray[i]stuName,
scoreArray[i]stuScore);
return 0;
}
C语言中,程序文件本身是文本格式,如果只是查看代码的话,可以这样做:打开记事本,使用文件中的“打开”菜单。在d出的对话框中选择文件类型为“所有文件”,然后再浏览到程序文件,点击打开。但是如果需要在编译器环境中进行调试或编译等 *** 作,则必须使用编译器,编译器必须使用与C语言文件在编写时使用的环境要求,不同的编译器提供的库函数不同,不能混用。
高效率:说到程序,运行效率是不可避免的话题。如何提高效率,一是 最准确的算法,二是 一些小的细节,打个比方:for(int i=;i<strGetLength();i++) 就这个循环的判定条件而言,完全可以改成int len=strGetLength(), for(int i=0;i<len;i++);不要小巧这个改懂,如果你的字符串str很长的话,也会影响效率的,因为每循环一次就要调用一次函数GetLength。
#include <stdioh>
#include <stdlibh>
/
主函数main中输入一组(10个)C语言成绩值到数组score[ ]中,
并输出如图所示的主菜单,根据不同的选择调用相应函数,编
写函数分别实现:
1- 输出平均值
2- 排序成绩
3- 输出比平均值低的成绩和个数
4- 输出及格率
5- 查找成绩
6- 添加成绩
0- 结束程序
/
//1、平均成绩函数
double AveScores(double [], double);
double AveScores(double score[], double count)
{
int i;
double sums = 0;
double average;
for(i = 0; i < count; i++)
{
sums += score[i];
}
average = sums / count;
return average;
}
//排序成绩函数由小到大
void SortScores(double [], int);
void SortScores(double score[], int count)
{
int i, j;
double temp;
for(i = 0; i < count; i++)
{
for(j = 0; j < count - i - 1; j++)
{
if(score[j] > score[j + 1])
{
temp = score[j + 1];
score[j + 1] = score[j];
score[j] = temp;
}
}
}
}
//输出比平均值低的成绩个数
double LowAve (double [], int, double);
double LowAve (double score[], int count, double average)
{
int i= 0;
double countlow = 0;
for(i = 0; i < count; i++)
{
if(score[i] < average)
{
countlow++;
}
}
return countlow;
}
//查找成绩
void FindScore(double [], int);
void FindScore(double score[], int count)
{
int i;
int index;
double input;
printf("请输入要查找的成绩");
scanf("%lf", &input);
for(i = 0; i < count; i++)
{
if(score[i] == input)
{
printf("找到了!此成绩在第%d个\n",i);
}
}
}
//添加成绩
int AddScore(double [], int);
int AddScore(double score[], int count)
{
int i = 0;
printf("请用户输入要添加的成绩:");
while(scanf("%lf", &score[i + count]) != 1 || &score[i + count] < 0)
{
fflush(stdin);
printf("请重新输入正数:");
}
count++;
return count;
}
int main()
{
int i, j;
int index; //数组元素下标
int choice; //用户选择
double average; //平均成绩
double temp; //临时变量
int count = 10; //成绩个数最多支持100个
double countlow; //低于平均成绩的个数
double score[100] = {76, 68, 98, 87, 71, 65, 49, 54, 80, 61};
double lowScore[100]; //用来存放低于平均成绩的数组
do
{
printf("\n");
printf("1、输出平均值\n");
printf("2、排序成绩\n");
printf("3、输出比平均值低的成绩和个数\n");
printf("4、输出及格率\n");
printf("5、查找成绩\n");
printf("6、添加成绩\n");
printf("0、结束程序\n");
printf("\n");
printf("请选择功能:");
while(scanf("%d", &choice) != 1 || choice < 0 || choice > 6)
{
fflush(stdin);
printf("请重新输入0-6的数字:");
}
switch(choice)
{
case 1://1- 输出平均值
average = AveScores(score,count);
printf("平均成绩为%2lf\n", average);
break;
case 2://2- 排序成绩
SortScores(score,count);
printf("排序后成绩为:\n");
for(i = 0; i < count; i++)
{
printf("第%d个成绩:\t",i + 1);
printf("%2lf\n",score[i]);
}
break;
case 3://3- 输出比平均值低的成绩和个数
for(i = 0; i < count; i++)
{
lowScore[i] = score[i];
}
SortScores(lowScore,count);
average = AveScores(score, count);
countlow = LowAve(lowScore,count,average);
printf("低于平均成绩的个数为%0lf\n", countlow);
for(i = 0; i < countlow; i++)
{
printf("第%d个低于平均的成绩:\t",i + 1);
printf("%2lf\n",lowScore[i]);
}
break;
case 4://4- 输出及格率
average = AveScores(score, count);
countlow = LowAve(score,count,average);
printf("及格率为:%2lf%%%\n",100 - countlow / count 100);
break;
case 5://5- 查找成绩
FindScore(score,count);
break;
case 6://6- 添加成绩
count = AddScore(score,count);
break;
}
}while(choice != 0);
return 0;
}
我们编写C程序一般都是用Tubro C编辑器,那么如何用VC2010编写C程序呢?下面我给大家分享一下。
工具/材料VC2010
01首先打开VC2010编辑器,新建一个Win32应用程序,如下图所示
02接下来在d出的界面中选择控制台程序类型,如下图所示
03建好程序以后,就可以打开程序文件,在主函数文件中导入stdioh文件,如下图所示
04最后在主函数中编写相应的程序功能即可,如下图所示
应该多给几个例子,n=10的时候如何处理?得到10,110,210,1210等等?
若是这样的,试试下面程序:
/
用c语言编写一个程序:对于一个自然数n(n<=50),统计具有下列数字的个数,
并输出所有符合条件的数字:自然数n,在n的左边加上一个自然数,
但该自然数不能超过原数的一半;继续按此规则进行处理,直到不能加自然数为止。
例如当n=6时,符合条件条件的是:6,16,26,36,126,136共6个;
当n=5时,符合条件的是:5,15,25,125(0也是自然数,所以要加上本身)。。。
/
#include
<stdioh>
#include
<stdlibh>
int
g_count=0;
void
fun(int
n,int
d,int
b)
{
int
i;
printf("%8d
",d);
g_count++;
if(g_count%8==0)
printf("\n");
for(i=1;i<=n/2;i++)
{
fun(i,ib+d,b10);
}
}
void
result(int
n)
{
int
t=n,d=n,b=10;
printf("result:\n");
g_count=0;
while(t>=10)
{
t/=10;
b=10;
}
fun(n,d,b);
printf("\ntotal
%d
numbers\n\n",g_count);
}
int
main()
{
int
n;
printf("input
n(n<=50):\n");
while(scanf("%d",&n)!=EOF)
{
if(n>=0&&n<=50)
result(n);
printf("input
n(n<=50):\n");
}
return
0;
}
我这,若是放开n的限制,n=200的时候,计算花掉20多秒吧,总共205658个。
n=300的话,算了几分钟都没结束。估计也得使用long
long数据类型了。使用递归不是最快的,重复计算多。
百度推荐也不求真相?有误导了吧。
对于楼主新补充的提升,我的程序是这样做的,满足你的要求。
以上就是关于C语言编写程序:全部的内容,包括:C语言编写程序:、如何编写C语言程序、用C语言编写一个程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)